linux常用指令
查询出系统中的所有服务列表及状态
systemctl list-unit-files --type=service
定位内存占用高的进程
top shift+m键,内存按照使用量进行排序 ps -ef|grep pid进程号
lsof -p <pid> | grep run.py #查看脚本所在路径
find
# 在当前目录及其子目录中查找所有扩展名为.txt的文件 find . -name '*.txt' # 在根目录中查找所有类型为目录的文件 find / -type d # 在当前目录中查找所有大小为0的文件 find . -size 0 # 在当前目录中查找所有拥有者为root的文件 find . -user root # 在当前目录中查找所有修改时间在7天以内的文件 find . -mtime -7
#查找当前目录下所有以.tar结尾的文件然后移动到指定目录
find . -name "*.tar" -exec mv {} ./backup/ \;
#查找当前目录30天以前大于100M的LOG文件并删除
find . -name "*.log" –mtime +30 –typef –size +100M |xargs rm –rf {} \;
grep
# 在文件中查找"hello"关键词 grep 'hello' file.txt # 在文件中查找"hello"关键词,并忽略大小写 grep -i 'hello' file.txt # 在文件中查找"hello"关键词,并显示匹配行的行号 grep -n 'hello' file.txt # 递归搜索子目录,查找所有扩展名为.c的文件,并在其中查找"main"关键词 grep -r 'main' --include='*.c' . # 使用正则表达式进行匹配,查找所有以数字开头的行 grep -e '^[0-9]' file.txt
# 反向查找,输出未匹配的行
grep -v 'hello' file.txt
#输出文件中所有未被注释掉的有效配置行
grep '^[^#|;]' /etc/openvpn/server.conf #"[^#|;]" 表示匹配不以 "#" 或 ";" 开头的字符
lsof
# 查找进程号为12345的打开文件 lsof -p 12345 # 查找进程名为nginx的打开文件 lsof -c nginx # 查找所有文件描述符为3的打开文件 lsof -d 3 # 查找所有属于用户root的打开文件 lsof -u root # 查找所有TCP连接的打开文件 lsof -i TCP # 查找所有进程号为12345且文件描述符为3的打开文件 lsof -p 12345 -d 3 # 查找所有进程名为nginx且文件类型为IPv4的打开文件 lsof -c nginx -t IPv4
sort 文件排序
sort file.txt #升序排序 sort -r file.txt #降序排序 sort -f file.txt #忽略大小写排序 sort -n file.txt #按照数值大小排序 sort file.txt -o sorted.txt #将排序结果写入新文件
diff 对比文件差异
diff [选项] 文件名1 文件名2 diff [选项] 目录1 目录2 详细链接https://blog.csdn.net/daocaokafei/article/details/115188506?ops_request_misc=&request_id=&biz_id=102&utm_term=diff%E5%91%BD%E4%BB%A4&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-115188506.142^v88^control_2,239^v2^insert_chatgpt&spm=1018.2226.3001.4187
last 查看系统活动
last #查看所有
详细链接https://blog.csdn.net/qq_33801641/article/details/117683355?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168836908616800182734177%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168836908616800182734177&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-117683355-null-null.142^v88^control_2,239^v2^insert_chatgpt&utm_term=last&spm=1018.2226.3001.4187
sed
注意:-i:直接修改文件,若没有此参数则只是修改副本用于展示
增加文件内容:i地址定位的上面插入,a下面插入
sed -i '$a99999' a.txt 文件最后一行下面增加内容 sed 'a99999' a.txt 文件每行下面增加内容 sed '5a99999' a.txt 文件第5行下面增加内容 sed '$i99999' a.txt 文件最后一行上一行增加内容 sed 'i99999' a.txt 文件每行上一行增加内容 sed '6i99999' a.txt 文件第6行上一行增加内容 sed '/^adm/ihello' a.txt 以adm开头行的上一行插入内容
替换指定的整行内容
sed '5chello world' a.txt 替换文件第5行内容 sed 'chello world' a.txt 替换文件所有内容 sed '1,5chello world' a.txt 替换文件1到5号内容为hello world sed '/^daemon/c888888' a.txt 替换daemon开头的行内容为888888
删除文件内容
sed '1d' a.txt 删除文件第1行 sed '1,5d' a.txt 删除文件1到5行 sed '$d' a.txt 删除文件最后一行
搜索替换
语法:sed 选项 ‘s/搜索的内容/替换的内容/动作’ 需要处理的文件
其中,s表示search搜索;斜杠==/表示分隔符,可以自己定义;动作一般是打印p和全局替换g==(默认只替换每行第一个匹配到的内容)
sed -n 's/^#//gp' 1.txt #删除#开头的行, -n打印经过处理的行
sed -n 's@/sbin/nologin@itcast@gp' a.txt #将每行中的"/sbin/nologin"替换为"itcast",@替换/分隔符,避免和替换内容中的'/'冲突
sed -n 's/\/sbin\/nologin/itcast/gp' a.txt #与上同样效果,使用\符号转义
sed -n '10s#/sbin/nologin#itcast#p' a.txt #第10行的"/sbin/nologin"替换为"itcast"。#与上面@一样效果,可自己指定sed -n '1,5s/^/#/p' a.txt 注释掉文件的1-5行内容
sed -i '1s/^/#/' -e '5s/^/#/' a.txt # -e
:指定后续命令是一个新的sed命令。只注释第1行和第5行
删除#号及其后面的内容
sed -i 's/#.*//' 文件名 #查找每一行中的#号,并删除该字符及其后面的所有内容
ps
#内存消耗的进程排序 ps -aux | sort -rnk 4 | head -20 #第4列内存 #CPU消耗的进程排序 ps -aux | sort -rnk 3 | head -20
#当前系统中处于僵尸状态的进程
ps -al | gawk '{print $2,$4}' | grep Z
sz和rz
yum install lrzsz -y #安装 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器。 -b:以二进制方式,默认为文本方式。 -e:对所有控制字符转义。 rz -be sz命令是利用ZModem协议来从Linux服务器传送文件到本地,一次可以传送一个或多个文件。 -a:以文本方式传输(ascii)。 -b:以二进制方式传输(binary)。 -e:对控制字符转义(escape),这可以保证文件传输正确。 sz -be filename
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?