Linux常用指令(持续更新)
1 系统管理
1.1 系统安全
1、远程登陆其他主机:ssh [主机IP]
2、查看系统信息
cat /etc/*-release
more /etc/issue
uname -m 或uname -p (可查看CPU架构是x86还是ARM)
3、查看服务器类型
dmidecode | grep "Product Name"
4、查看suse版本:cat /etc/SuSE-release
5、查看系统编码:locale
6、获取硬盘被占用了多少空间
df -h
当前文件大小
du -sh ./*
7、重启服务器:shutdown -r now
8、查看os内核版本
ll /lib/modules/`uname -r`
安装内核版本包 yum install kernel-devel-$(uname -r)
9、查询内核版本,安装内核包
ll /lib/modules/`uname -r`
yum install kernel-devel-$(uname -r)
10、修改时间
date #查询
date -s "时间" #修改为对应时间
11、定时任务 crontab
crontab -e
crontab -l
1.2 进程
查看系统支持最大进程数:sysctl kernel.pid_max
查看已用的进程数:ps -eLf | wc -l
查看当前线程数:ps -o nlwp,pid,args, -u omm | awk '{sum+=$1} END {print "", sum}'
指定的进程产生的线程数目:ps -mq PID
通过服务名称查找进程:ps -ef | grep [xxx服务]
通过进程ID查找服务(PID即进程id):ps -ef | grep [PID]
杀掉进程:kill pid
批量杀掉进程,如通过关键字test:for((i=1;i>0;i++));do ps -ef | grep test | grep -v grep | awk '{print $2}' | xargs kill -9 ;done
通过关键字批量查找进程并kill 掉: ps aux | grep xxxxtest | awk '{print $2}' | xargs kill -9
当前系统进程情况:jps
获取当前系统占用CPU最高的前10个进程
ps aux|head -1;ps aux|sort -rn -k3|head -10
获取当前系统占用内存最高的前10个进程
ps aux|head -1;ps aux|sort -rn -k4|head -10
1.3 用户及权限
1、用户权限
chmod u+x -R ./* 表示用户权限中,增加执行权限
可参考 https://blog.csdn.net/bjarnecpp/article/details/79912495
1.4 文件系统管理
mount -o remount /dev/sda /opt #重新挂载
2 网络管理
查看网卡型号:lspci -vvv | grep Ethernet
根据进程查端口 :netstat -nap | grep [PID]
查看全网监听:netstat -lnp | grep -v "127.0.0.1" | grep -v "::1:"
查看系统默认端口范围:cat /proc/sys/net/ipv4/ip_local_port_range
根据端口查看对应进程:netstat -tunlp | grep [端口号]
查看端口是否互通:ssh -v -p 5000 root@xx.xx.xx.xx
释放及恢复网卡:ifconfig eth0 down 、 ifconfig eth0 up
配置ip地址: ifconfig eth0 192.168.2.10 netmask 255.255.255.0
请求接口 :curl -i -k --negotiate -u https://xxx.com/index.html
3 软件|打印|工具
4 文件目录管理
4.1 文件查找和比较
1、查找关键字文件
df --local -P | awk '{if(NR!=1) print $6}' | xargs -I '{}' find '{}' -xdev -name "*.log" -o -name "*.log.zip" | sort
2、查找关键字文件,并排除包含No 文本的文件
find . -name "*.log" | grep -v No
4.2 文件内容查看
more text.txt | grep xxx 打印关键字
4.3 文件编辑
1、sed自动编辑文件,可以配合正则表达式
sed -i 's/原字符串/新字符串/' /home/test.txt
sed -i 's/\/opt/\/tmp' /opt/test.txt #将/opt 替换为 /tmp,/符号前面需添加转移符
原值:ltest1=value1
sed -i -e 's|test1=value1, test2=value2|' test.properties
修改后: test2=value2
2、vi 纯文本编辑
按ESC键 跳到命知令模式,然后:
:w 保存文件但不退出vi
:w file 将修改道另外保存到file中,不退出vi
:w! 强制保回存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,答并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
shift+q q 退出
:set number 或 :set nu 打印行号
shift + g 切换到最后一行
【多行删除】
1.首先在命令模式下,输入“:set nu”显示行号;
2.通过行号确定你要删除的行;
3.命令输入“:32,65d”,回车键,32-65行就被删除了,很快捷吧
如果无意中删除错了,可以使用‘u’键恢复(命令模式下)
【全局替换】
:% s/XXX/YYY/g XXX是需要替换的字符串,YYY是替换后的字符串
4.4 文件处理
1、创建软链接
将目录/opt/test1链接到目录/opt/test2
ln -s /opt/test1 /opt/test2
2、cat
cat xxx.txt | grep xxx #查找文件中关键字
3、touch
touch -mt 202107181222 aa.log # 修改文件的时间
touch -r 文件 文件夹 #把文件的时间设置给文件夹
touch -d "2024-07-18 12:22:00" xxx/ #设置指定时间
4.5 目录基本操作
cp -rf ab.txt cd.txt #强制覆盖
ls -lht 查看目录下所有文件大小
du -s -h 目录下文件大小
4.6 文件权限属性设置
文件权限
r 读权限read 4
w 写权限write 2
x 操作权限execute 1
1、查看csv文件一共有多少行数据
wc -l xxx.csv
2、cat
cat filename | tail -n 100 显示文件最后100行
cat filename | head -n 100 显示文件前面100行
cat filename | tail -n +100 从100行开始显示,显示100行以后的所有行
cat filename | head -n 500 | tail -n +100 显示100行到500行
3、grep
grep -r 'xxx' filename | head -n 5 搜索匹配xxx的结果中显示前5行
4.7 文件过滤分割与合并
1、显示匹配某个结果之后的1行,使用 -A 选项:
grep 'buffer.dir' -A1 core-site.xml
<name>fs.obs.buffer.dir</name>
<value>${java.io.tmpdir}/obs</value>
2、查看CSV文件一共有多少行数据
wc -l xxx.csv
3、查看test.txt文件中xxx.java的数量
grep -o xxx.java test.txt | wc -l
4.8 文件压缩与解压
1、zip
压缩文件:zip -r mysql.zip mysql
压缩所有文件,不包括文件夹:zip -qj test.zip ./*
压缩所有文件,包括文件夹: zip -qr test.zip *
解压文件:unzip -d newfile xxx.zip
2、tar
解压:tar -zxvf FileName.tar.gz 或 tar -xvf FileName.tar.gz #其中添加-z或--gzip或--ungzip:通过gzip指令处理备份文件;
压缩:tar -zcvf FileName.tar.gz DirName
3、gz格式
解压:gunzip file.gz
压缩:gzip -d test.log.49.gz
4.9 文件备份和恢复
4.10 文件传输
1、上传下载文件工具
安装工具:yum install lrzsz
上传文件:rz test.txt
下载文件:sz test.txt
2、远程传输
上传本地文件到远程机器指定目录:scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest
从远程复制到本地:scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
5 硬件|检测|内核|shell
5.1 性能检测
1、free
(1) free命令默认是以kb为单位显示的,可以用free -m 用Mb单位来显示。
(2) Mem行 : total = used + free 其中buffers和cached虽然计算在used内, 但其实为可用内存。
(3) Mem下一行:used为真实已占内存,free为真实可用内存。
(4)Swap:内存交换区的使用情况。
2、top
(1)第一行: 系统时间 + 系统运行时间 + 几个用户 + 1/5/15分钟系统平均负载
(2)第二行:进程总数(total) + 正在运行进程数(running) + 睡眠进程数(sleeping) + 停止的进程数(stopped)+ 僵尸进程数(zombie)
(3)第三行:用户空间CPU占比(us) + 内核空间CPU占比(sy)+ CPU空置率(id)
注解:
PID :进程ID
USER :用户名
PR :优先级
NI :负值表示高优先级,正值表示低优先级。
VIRT :虚拟内存
RES : 真实内存
SHR :共享内存
S :进程状态 D=不可中断的睡眠状态; R=运行; S=睡眠 ;T=跟踪/停止; Z=僵尸进程
参数:
top -d 2 :每隔2秒显式所有进程的资源占用情况
top -c :每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 12345 -p 6789:每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 123456 :每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
3、清除缓存
sync
echo 3 > /proc/sys/vm/drop_caches
4、lsof查询进城打开文件
lsof | grep deleted #清除数据为释放空间
6 扩展:
《Linux 命令大全》参考 https://www.runoob.com/linux/linux-command-manual.html
《Linux命令大全》参考 https://man.niaoge.com/