来自 linux命令学习-2023-8-1 153913.md
等
1、切换目录 cd
//切换目录 cd change directory
cd 目录名
cd .. 返回上一级目录
pwd显示当前所处目录
cd 绝对路径
cd ~ 表示一个用户的home目录
cd - 表示上一次访问的目录
cd / 表示进入根目录下
//新建目录/data,并且进入/data目录,编辑uwsgi.ini文件
mkdir /data&&cd /data &&vim uwsgi.ini
安装vim
: yum -y install vim*
[root@localhost ~]# vim /etc/rc.d/rc.local
-bash: vim: command not found
//查看系统是否安装完整vim,如果正常安装肯定不止一行
rpm -qa|grep vim
root@localhost ~]# rpm -qa|grep vim
vim-minimal-7.4.629-7.el7.x86_64
//安装vim所有相关的包
yum -y install vim*
2、查看文件内容 cat
//查看文件内容 cat
cat 文件名
//带行号显示文件内容
cat -n 文件名
//只统计文本内容带行号显示文本内容(空行不会被带行号和被统计)
cat -b 文件名
//将多个空行合并成一个空行显示文本内容
cat -s 文件名
//在每一行末尾增加一个$符号,以此来表示此行结束,$也可以视为行结束符
cat -E 文件名
//linux中tab键和空格键如何区分
//会将tab键转换为一个倒三角和一个大写的I
cat -T 文件名
//-A参数同时实现-E和-T两个参数的作用
cat -A 文件名
//同时查看多个文件的内容
cat 文件名1 文件名2
3、删除文件或目录 rm
//删除文件 rm remove
rm 文件名
//-r表示递归删除这个目录以及这个目录下的所有文件
rm -r 目录名
//-i表示删除时给出提示,是不是确定要删除,防止误删
//确定的话,输入y或者yes,不确定的话输入n或者no。
rm -i -r 目录名
//rm 命令总结 2023-8-1 19:05:20
rm -d 删除空目录
rm -r 递归删除子目录及其下所有文件
rm -i 删除前询问
rm -f 强制删除
//删除目录下所有文件
rm -rf 目录名
rm -rf /etc/yum.repos.d/*
//将/etc/yum.repos.d下所有文件(用*代替),复制到/yum.repos.d-backup2023915目录下
cp -r /etc/yum.repos.d/* /etc/yum.repos.d-backup2023915
4、复制文件命令 cp
//复制文件
//复制完成后使用ll等命令查看目录下的文件内容
cp 原文件名 目标文件名
如:cp test.txt textcopy.txt
//复制并打印信息
cp -v 文件名 目录名
//把test.ext文件复制到复制到testdir目录下,并打印信息
如:cp -v test.txt testdir
//复制目录
//参数-r
//复制tesrdir目录并改名为testdir2
cp -r testdir testdir2
//复制前询问是否覆盖复制目标目录下已存在的同名文件
//testdir目录下已经有一个testfile.txt文件。
//n或no表示不overwrite覆盖,输入y或yes就会把原来的文件覆盖掉
cp -i testfile.txt testdir
//cp 命令总结 2023-8-1 19:05:32
cp -r 复制目录
cp -i 覆盖前询问
cp -v 打印复制细节
cp -f 目标文件已存在,但是无法打开时,删除源文件后重新复制
5、压缩和解压缩命令 tar
有一个testdir的目录
//c指的是创建一个压缩文件,f指的是要创建的压缩文件的名称
tar -cf testdir.tar
//防止已经存在的testdir目录造成影响
rm -rf testdir 删除testdir命令
//解压
tar -xf testdir.tar
//使用zcf算法压缩
tar -zcf testdir.tar.gz testdir
//解压【最常用的tar命令组合参数】
tar -zxvf testdir.tar.gz
//压缩或打包【最常用的】
tar -zcvf testdir
注意:f参数要放在最后,因为它指定打包(压缩)和解压缩 的文件名称的。其他参数位置顺序没有特殊要求。
//tar命令总结 2023-8-1 19:29:20
tar -z 使用gzip算法压缩文件
tar -x 解压文件
tar -c 压缩文件
tar -v 解压或压缩时,列出文件名
tar -f 文件名
6、创建文件夹命令 mkdir
make directory
//创建单个目录testdir
makedir testdir
//依次创建多个目录
mkdir testdir1 testdir2
//循环创建-创建目录testdir3同时创建其子目录sondir1
mkdir -p testdir3/sondir1
//v显示创建细节,因为是循环创建所以要加参数-p
mkdir -vp testdir4/sondir2/
//-m
参数 创建目录指定一个权限 (
使用ll
命令时,前面那串字符就是权限,如drwxrwxr-x
d
表示目录
,后面三个rwx
是当前用户
对这个目录的权限
,中间三个rwx
表示和当前用户同组(用户组)的用户
对这个目录
的权限,最后三个r-x
表示其他用户对这个目录的权限
,所以对于新创建出来的目录
只有其他用户没有w即写权限(write)
)。权限显示共10个字母
。
//设置只有当前用户
对testdir5目录
有 r读,w写,x执行
的权限。权限显示10个字母即drwx------
mkdir -m 700 testdir5
//700 每一个数字对应一个用户,d当前用户(3)
同组用户(0)其他用户(0),表示只有当前用户
有读r-4
、写w-2
、执行x-1
,和就是7
。
//同组用户(0)
与其他用户(0
)的权限和都是0
。
//7是读写执行权限的和
。其中执行权限x的数字代码是1
,写权限w的数字代码是2
,读r的数字代码是4
。 (为什么读r不是3
,因为写w和执行x
加起来为3,就分不清是读r的3
还是写w和执行x的权限和
。简单来说,这样能通过数字和拆分得来的数字
来了解和分配权限,不会混淆。)1+2+4就是7。
//所以才是700
//mkdir命令总结
mkdir -p 递归创建多个目录
mkdir -m 指定文件夹权限(首字母d表示目录,后面有当前用户(3)、同组用户(3)、其他用户(3)、共10个字母,其中执行权限x的数字代码是
1,写权限w的数字代码是2,读r的数字代码是4。 (为什么读r不是3,因为写w和x加起来为3,就分不清是读r的3还是写w和执行x的权限和。
简单来说,这样能通过数字和拆分得来的数字来了解和分配权限,不会混淆。)
mkdir -v 打印创建细节
7、修改权限命令 chmod
change mode
首字母是d代表是个目录,是-代表是个文件。 【首字母-当前用户-同组用户-其他用户】
---x------ 则表示当前是个文件,且只有当前用户对它有且仅有执行权限。
1、给当前用户增加读写权限:chmod u+rw 文件名
使用ll可以查看文件权限
2、当前用户读写执行权限,同组用户读写权限、其他用户没有权限:chmod 760 文件名
3、解除同组其他用户的读写权限:chmod g-rw 文件名
4、解除当前用户对它的读写权限:chmod 100 文件名
【数字权限更加便利,无需指定+-,只需要计算当前文件对它具有的权限对应的数字权限是几,指定几就可以了。所以一般使用chmod 数字权限 来修改权限】
5、其他用户加写权限,chmod o+w 文件名 或 chmod 777 文件名
6、给docker目录及其下面所有文件都指定相同的权限 drwxrwxrwx 777
chmod -R 777 /docker 或chmod 777 -R /docker
docker目录里面文件权限应该是-rwxrwxrwx
//解除所有用户对此文件的的执行权限 drwxrwxrwx
//执行完后权限显示 drw-rw-rw-
chmod a-x 目录名
//-c会打印出权限变化 只会在权限发生变化的时候打印
//如果将下面命令执行第二部时会发现什么都没有打印
chmod -c a-x 目录名
//-v表示无论权限有没有发生变化,都会打印出权限变化
chmod -v a-x 目录名
8、查找文本 grep
建议
:可以结合man命令,和完整的参数名来使用,这样对理解参数有帮助。
类似于Windows下编辑器下使用ctrl+f 查看想要的内容
//查看进程 来自 docker安装Oracle-2023-7-29 163134.md
ps -aux | grep 进程名
//在文件里查找包含hello(如hello、helloworld、timehelloworld等)的文件
grep hello 文件名
//-i表示忽略大小写,在文件里查找包含hello(如hello、helloworld、timehelloworld、HELLO、HELLOWORLD、timeHelloWORLD
grep -i hello 文件名
//-w表示精确查找,只找hello
grep -w hello 文件名
//-e表示同时查找包含hello和today的信息
grep -e hello -e today 文件名
//-n表示查找到的信息处于哪一行
grep -n hello 文件名
//反向查找,查找不包含hello的信息(区分大小写,Hello和hello不是一回事)
grep -v hello 文件名
//查找一个目录下,所有包含 hello的文件
grep -r hello testdir/
//查找哪些文件包含了我们要查找的字符
grep -lr hello testdir/
//grep -E 使用正则表达式
//查找包含hello或today的信息 和之前学的-e指定多个参数,效果相当 |是或
//-e表示同时查找包含hello和today的信息
grep -e hello -e today 文件名
grep -E 'hello|today' 文件名
9、统计工具 wc
word count
//wc 文件名
//第一个数字是行数,第二个是单词数,第三个是字节数。
wc testfile.txt
//wc -l 只计算行数
//wc -w 只计算字数,即单词数
//wc -c 只计算字节数
//wc -m 只计算字符数 【较常用于中文】
//对于英文,一个字母一个字节,所以 字节数和字符数相同
//对于汉字是一个多字节的字符,有可能三个字节或四个字节
wc -w 只计算字数
wc -l 只计算行数
wc -c 只计算字节数
wc -m 只计算字符数
10、文件查看工具 tail&head
f代表follow,n代表number。
//显示文件后10行内容(倒数10行)
tail 文件名
//显示倒数5行的内容
tail -n 5 文件名
//显示从第5行开始的内容
tail -n +5 文件名
tail -f
日志神器
//tail -f 持续监控过一个文本文件,把它新增的内容输出出来 【test.log日志文件】
tail -f 文件名
tail -f test.log
//日志在不断写入内容进入test.log的同时,tail -f 显示的内容也在不断的增加,达到持续监视。 【tail -f 日志神器】
tail -F
文件名
//-F 文件丢失也会持续重试,直到脚本将文件创建出来。 -f没有这样的效果
//一般日志文件都会有一个固定的大小,达到一定大小,就会把它备份下来,用一个新的文件去接收新的日志。
head 命令
从前往后
默认10行内容 与tail相反
//默认前10行内容
head 文件名
//前5行内容
head -n 5 文件名
//从头打印到倒数第5行。也就是1-10行,因为文件共15行。
head -n -5 文件名
11、netstat命令
完整写作network statistics
,简写为netstat
,常用的几个参数为l
、n
、t
、u
、p
。
具体使用见我这篇文章:通过netstat命令查看Linux的端口占用
11、性能分析工具 top
top命令经常用来监控linux的系统状况
,是常用的性能分析工具
,能够实时显示系统中各个进程的资源占用情况
。
12、树状图 tree
tree命令是一种显示递归目录列表命令,可以以树状图的形式,列出一个目录下所有文件内容。
//install或yum安装tree命令
//Ubuntu下安装
apt get-intall tree
//Fedora和RedHat以及CentOS下安装
//中间输入y,表示同意安装
yum install tree
或者直接
yum install tree -y
13、磁盘空间占用情况 df
linux中df命令,是用来检查linux服务器的文件系统
的磁盘空间占用情况
,-h
表示以方便阅读方式显示
14、ps
//查看启动的nginx进程
ps -ef | grep nginx
来自我这篇文章:通过netstat命令查看Linux的端口占用
(Java相关
)
netstat -tlunp | grep java
:查看启动的进程中是否有名称中带有java的,会显示其PID值(进程ID)
。
ps -p PID值 -f
:例如ps -p 18391 -f
,就是显示哪个程序使用了java,一般为java -jar
命令,例如java -jar testdemo-0\.0\.1-SNAP.jar
。
ps -p PID值 -ef
:显示的更加详细。
find . -name "testdemo-0\.0\.1-SNAP*"
:查询"testdemo-0.0.1-SNAP*"
文件的位置,*为通配符;
\.
表示转义为.
,所以,find . -name "demo-0\.0\.1-SNAP*"
就是find . -name "demo-0.0.1-SNAP*"
相关
:CentOS: $‘\r‘: command not found
Windows11与CentOS7下配置与检测JDK与Maven环境变量-中安装jdk-8u371-linux-x64.tar.gz
15、tcpdump
16、wet 下载
//-bash: wget: command not found
//Linux中提示-bash: wget: command not found的解决方法
//CentOS系统安装wget:
yum install wget -y
//Debian和Ubuntu系统安装get:
apt-get install -y wget
//浏览器中直接点击下载nginx-1.24.0.tar.gz,使用xftp等软件上传到Linux服务器指定位置
//或者,直接复制tar包链接(在Windows中右击复制tar包下载链接),在Linux服务器指定位置使用下面的命令:
wget https://nginx.org/download/nginx-1.24.0.tar.gz
17、find 查找
// 从根目录开始找nginx.conf
find / -name nginx.conf
[root@freedomdjc local]# find / -name nginx.conf
/var/lib/docker/overlay2/70c0652799a9d95fb4ee7e52e35e0f3b2ea2e786264bbbf29fbfedc16ac3acb2/diff/etc/nginx/nginx.conf
/usr/local/nginx-1.24.0/conf/nginx.conf
/usr/local/nginx1.24.0/conf/nginx.conf
/opt/docker-compose/ruoyicloudplus/docker/nginx/conf/nginx.conf
/docker/nginx/conf/nginx.conf
[root@freedomdjc local]#
来自我这篇文章:通过netstat命令查看Linux的端口占用
(Java相关
)
netstat -tlunp | grep java
:查看启动的进程中是否有名称中带有java的,会显示其PID值(进程ID)
。
ps -p PID值 -f
:例如ps -p 18391 -f
,就是显示哪个程序使用了java,一般为java -jar
命令,例如java -jar testdemo-0\.0\.1-SNAP.jar
。
ps -p PID值 -ef
:显示的更加详细。
find . -name "testdemo-0\.0\.1-SNAP*"
:查询"testdemo-0.0.1-SNAP*"
文件的位置,*为通配符;
\.
表示转义为.
,所以,find . -name "demo-0\.0\.1-SNAP*"
就是find . -name "demo-0.0.1-SNAP*"
相关
:CentOS: $‘\r‘: command not found
Windows11与CentOS7下配置与检测JDK与Maven环境变量-中安装jdk-8u371-linux-x64.tar.gz
18、常用命令备份
使用到了grep命令
:
//查看镜像
//此处使用了grep查找镜像中带有demo的名称
docker images | grep demo
//查看启动日志
//此处使用了tail命令,显示demo中后300行的内容,并且日志增加,显示增加
//tail -f 持续监控过一个文本文件,把它新增的内容输出出来
docker logs --tail 300 -f demo
//启动成功查看映射端口是否开启
//grep查找8888
netstat -nplt | grep 8888
#注意:确保/docker目录和其子目录具有写权限,如果再次出现权限问题,就再执行一次此命令,分配权限
chmod -R 777 /docker
使用到了netstat命令
和grep命令
:
//查看启动的线程
netstat -tulnp 或 netstat -lntup
//也是 查看启动的线程
netstat -lntup
//查看启动的线程中是否有名称中带有nginx的
netstat -lntup | grep nginx
netstat -lntup | grep nginx
//查看启动的线程中是否有名称中带有docker的
netstat -lntup | grep docker
netstat -lntup | grep docker
//4-查看端口占用,根据端口号81,获取PID(进程ID)
netstat -ano | findstr "端口号"
netstat -ano | findstr "81"或netstat -ano | findstr 81
centos7.9中执行情况
:
[root@localhost ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN 2324/docker-proxy
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 868/beam.smp
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 868/beam.smp
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 1566/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 869/sshd: /usr/sbin
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 867/cupsd
tcp6 0 0 :::5672 :::* LISTEN 868/beam.smp
tcp6 0 0 :::1521 :::* LISTEN 2329/docker-proxy
tcp6 0 0 :::4369 :::* LISTEN 1566/epmd
tcp6 0 0 ::1:631 :::* LISTEN 867/cupsd
tcp6 0 0 :::22 :::* LISTEN 869/sshd: /usr/sbin
udp 0 0 0.0.0.0:41722 0.0.0.0:* 763/avahi-daemon: r
udp 0 0 0.0.0.0:5353 0.0.0.0:* 763/avahi-daemon: r
udp 0 0 127.0.0.1:323 0.0.0.0:* 793/chronyd
udp6 0 0 :::5353 :::* 763/avahi-daemon: r
udp6 0 0 :::59094 :::* 763/avahi-daemon: r
udp6 0 0 ::1:323 :::* 793/chronyd
[root@localhost ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN 2324/docker-proxy
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 868/beam.smp
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 868/beam.smp
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 1566/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 869/sshd: /usr/sbin
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 867/cupsd
tcp6 0 0 :::5672 :::* LISTEN 868/beam.smp
tcp6 0 0 :::1521 :::* LISTEN 2329/docker-proxy
tcp6 0 0 :::4369 :::* LISTEN 1566/epmd
tcp6 0 0 ::1:631 :::* LISTEN 867/cupsd
tcp6 0 0 :::22 :::* LISTEN 869/sshd: /usr/sbin
udp 0 0 0.0.0.0:41722 0.0.0.0:* 763/avahi-daemon: r
udp 0 0 0.0.0.0:5353 0.0.0.0:* 763/avahi-daemon: r
udp 0 0 127.0.0.1:323 0.0.0.0:* 793/chronyd
udp6 0 0 :::5353 :::* 763/avahi-daemon: r
udp6 0 0 :::59094 :::* 763/avahi-daemon: r
udp6 0 0 ::1:323 :::* 793/chronyd
[root@localhost ~]# netstat -lntup | grep nginx //查看启动的线程中是否有名称中带有nginx的
[root@localhost ~]# netstat -lntup | grep docker //查看启动的线程中是否有名称中带有docker的
tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN 2324/docker-proxy
tcp6 0 0 :::1521 :::* LISTEN 2329/docker-proxy
[root@localhost ~]#
rpm -qa|grep vim
[root@localhost ~]# vim /etc/rc.d/rc.local
-bash: vim: command not found
//查看系统是否安装完整vim,如果正常安装肯定不止一行
rpm -qa|grep vim
root@localhost ~]# rpm -qa|grep vim
vim-minimal-7.4.629-7.el7.x86_64
//安装vim所有相关的包
yum -y install vim*
rpm -qa | grep java
来自
:Windows11与CentOS7下配置与检测JDK与Maven环境变量
springboot-jenkins-gitlab自动化部署1.md
//1、卸载现有环境 查询java相关程序
//.noarch文件可以不用管,卸载其他的
rpm -qa | grep java
[root@freedomdjc jvm]# rpm -qa | grep java
tzdata-java-2023c-1.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.382.b05-1.el7_9.x86_64
java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64
javapackages-tools-3.4.1-11.el7.noarch
[root@freedomdjc jvm]#
.noarch文件可以不用管,卸载其他的
//2-卸载
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.382.b05-1.el7_9.x86_64
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.382.b05-1.el7_9.x86_64
//3-卸载后检测
[root@freedomdjc jvm]# java -version
-bash: /usr/bin/java: No such file or directory
[root@freedomdjc jvm]#
查看系统默认安装的python的位置等
: whereis python
2023-11-1 23:37:26 来自2023-10-29 163846.txt
//新建目录/data,并且进入/data目录,编辑uwsgi.ini文件
mkdir /data&&cd /data &&vim uwsgi.ini
mkdir /data&&cd /data &&vim uwsgi.ini
mkdir /data&&cd /data &&vim uwsgi.ini
mkdir /data&&cd /data &&vim uwsgi.ini
//移动 /root/20231029/GetServerInfo.py 文件到/data目录中。(/root/20231029/GetServerInfo.py已经不存在了)
mv /root/20231029/GetServerInfo.py /data
//查看系统默认安装的python的位置
[root@iZbp1fnrewknornmqkhqpiZ ~]# whereis python
python: /usr/bin/python3.6m-x86_64-config /usr/bin/python3.6-config /usr/bin/python3.6m /usr/bin/python /usr/bin/python3.6m-config /usr/bin/python2.7 /usr/bin/python3.6 /usr/lib/python2.7 /usr/lib/python3.6 /usr/lib64/python2.7 /usr/lib64/python3.6 /etc/python /usr/local/lib/python3.6 /usr/include/python3.6m /usr/include/python2.7 /usr/share/man/man1/python.1.gz
[root@iZbp1fnrewknornmqkhqpiZ ~]#
//查看python在/usr/bin目录中的内容
[root@iZbp1fnrewknornmqkhqpiZ bin]# cd /usr/bin
[root@iZbp1fnrewknornmqkhqpiZ bin]# ll python*
lrwxrwxrwx 1 root root 7 Jul 18 17:31 python -> python2
lrwxrwxrwx 1 root root 9 Jul 18 17:31 python2 -> python2.7
-rwxr-xr-x 1 root root 7144 Jun 20 19:37 python2.7
lrwxrwxrwx 1 root root 9 Jul 18 17:29 python3 -> python3.6
-rwxr-xr-x 2 root root 11336 Jun 20 19:55 python3.6
lrwxrwxrwx 1 root root 17 Jul 18 17:29 python3.6-config -> python3.6m-config
-rwxr-xr-x 2 root root 11336 Jun 20 19:55 python3.6m
-rwxr-xr-x 1 root root 173 Jun 20 19:54 python3.6m-config
-rwxr-xr-x 1 root root 3403 Jun 20 19:39 python3.6m-x86_64-config
lrwxrwxrwx 1 root root 16 Jul 18 17:29 python3-config -> python3.6-config
[root@iZbp1fnrewknornmqkhqpiZ bin]#
2023-11-7 19:33:18
整理 1、切换目录 cd
到 17、常用命令备份