Linux 常用命令集
一、Linux相关
1. cat /etc/issue 或 lsb_release -a:查看系统发行版本,适用于所有的linux发行版;
cat /etc/redhat-release:也是查看系统发行版本,只适合Redhat系的linux;
cat /etc/os-release:查看Centos版本信息;
2. uname -a 或 uname -r:查看系统内核位数,适合所有Linux发行版;
cat /proc/version:查看系统内核位数,适合所有Linux发行版;
3. /dev/null:表示一个黑洞;
A. 丢弃无用的输出流:curl -Iwww.baidu.com 2 > /dev/null;
B. 清空文件:cat /dev/null > /usr/local/a.sh;
C. 定时任务:任务脚本结尾加上>/dev/null 2>&1,目的是丢弃所有的输出流。
4. hostname:显示主机名信息;
A. 修改主机名:vi /etc/hostname文件,重启服务器即可;
B. 修改主机名:hostnamectl set-hostname 主机名 && bash,只需重开会话即可;
5. 网络配置:vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.10.10.93
NETMASK=255.255.255.0
GATEWAY=10.10.10.254
二、文件管理
1. scp(secure copy):用于Linux之间远程复制文件和目录;
A. 从本地服务器复制到远程服务器,格式:
scp -P 22 local_file remote_username@remote_ip:remote_folder —— 指定了用户名,命令执行后需要输入密码,指定了远程目录,那么文件名不变;
scp local_file remote_username@remote_ip:remote_file —— 指定了用户名,命令执行后需要输入密码;
scp local_file remote_ip:remote_folder —— 命令执行后需要输入用户名和密码,指定了远程目录,那么文件名不变;
scp local_file remote_ip:remote_folder —— 命令执行后需要输入用户名和密码;
B. 从远程复制到本地:只需将A中两个参数互换位置;
C. -P:设置命令的端口号,默认是22;
-r:用于拷贝目录。
2. cp:主要用于复制文件和目录,格式:cp [选项] 源文件 目标文件,复制目录需要带上-r参数,强行覆盖使用\cp;
3. find:用来在指定目录下查找文件,格式:find path -name name;
查找文件并实现批量替换:find / -type f -name db-start-1.0.0.jar -print | xargs -n1 cp -f ./db-start-1.0.0.jar;
删除所有文件同时并排除某文件或目录及以下文件:find /data/* -not -path "/data/rhxy" -not -path "/data/rhxy/*" -not -name "rhxy-C*" | xargs rm -rf;
4. chmod:控制用户对文件的权限,格式:chmod abc file;
-R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更);
5. ln:为某一个文件在另外一个位置创建一个同步的链接(软链接),格式:ln -s 源文件 目标文件;
注意:如果出现链接名闪烁的问题可以检查下目录是否存在。
6. chown:设置文件所有者和文件关联组,格式:chown -R user:group file;
7. whereis:主要用于查找程序文件,格式:whereis ...,例如:whereis nginx;
8. awk:用来处理文本文件,每行按空格或TAB分割,格式:awk [选项参数]
A. 输出文本中的1、4项:awk '{print $1,$4}';
三、网络通讯
1. ping:检测主机,有信息回应,就是主机运作正常,格式:ping ip,默认32字节;
A. ping大包300:ping ip -l 300;
B. 不间断的ping:ping ip -t;
2. nc:客户端连接服务或者监听端口,一般linux自带;
检测端口是否开通,TCP格式:nc -zv ip port,UDP格式:nc -uzv ip port;
端口扫描,格式:nc -v -w 1 ip -z 22-80;
3. telnet:默认端口23,明文传输数据和口令,ssh是加密传输数据和口令
检测端口是否开通,格式:telnet ip port,退出telnet进程的方法是输入ctrl + ],然后输入quit(q)命令;
登录远程主机,格式:telnet ip,手动输入用户名和密码。
四、系统管理
1. su:切换用户,会提示输入该使用者的密码,格式:su USER;
2. sudo:以系统管理者的身份执行命令,格式:sudo command;
3. free:显示内存使用状态,包括虚拟的交换文件内存,格式:free [-h];
4. top:用于实时显示process的状态,格式:top [];
top -p pid:显示指定的进程信息;
5. groupadd:创建新的用户组,并添加到/etc/group文件中,格式:groupadd group;
6. useradd:创建用户账号,并保存在/etc/passwd文件中,格式:useradd -r -g <用户组> <账号>;
7. groupdel:删除用户组,若该组中包含用户,必须先删除用户,才可以删除用户组,格式:groupdel group;
8. userdel:删除用户账号,若要删除相关文件,带上-r参数,格式:userdel user;
9. date:用来显示日期与时间,格式:date -d,举例:date -d "2023-03-10T08:28:31.4521779Z";
-s:修改时间,注意执行clock -w同步硬件时间;
-d:通过字符串显示时间格式;
FORMAT参数有:%s表示自1970-01-01 00:00:00 UTC到现在的秒数,%S表示秒,%Y表示年
五、文档编辑
1. wc:用于计算数目,格式:wc -l;
2. sed:利用脚本来处理文本文件,格式:sed -e [文本文件],另外在双引号的情况下可以直接使用变量
-e:直接在命令模式上进行sed的动作编辑;
-r:sed的工作支持扩展的正则表达式;
-i:直接修改读取的文件内容;
多个选项参数一起使用时要分开,不能合并,如:sed -i -r,而非sed -ir;
A. 替换某行指定字符串:sed -i -e '21{s/443/'"${PORT}"'/g}' -e "22{s/443/${PORT}/}" /rhxy/nginx.yml,其中g代表全部替换;
B. 删除某行内容:sed -ri '/check.sh/d' /etc/rc.d/rc.local;
C. 替换某行指定的所有字符串:sed -i -e '620{s/172.17.0.1/'"${INTERNAL_IP}"'/g}' `grep -rl 172.17.0.1 /rhxy/nacos.sql`;
D. 替换指定字符串后面的内容:sed -i -r "s/(rhxy:)[^:]*/rhxy:V1.0.0/" /data/rhxy-compose.yml;
E. 删除匹配到的第一行数据:sed -ri '0,/exit0/{//d}' /data/slave-to-master.sh;
F. 删除第n到m行:sed
-ri
'n,md'
/data/rhxy.sql;
G. 匹配多行,替换每行的部分字符串:sed -i '/[ ]*listen [ ]*[\\d]*[;]*/s/443/1443/g' /data/nginx/conf.d/rhxy.conf;
注意:变量为空或中文可能引起文件乱码
六、磁盘管理
1. df:用于显示linux系统上的文件系统的磁盘使用情况,格式为:df [选项] [目录或文件名];
Filesystem:表示该文件系统位于哪个分区,显示设备名称;
Size:表示文件系统的大小;
Used:表示用掉的磁盘空间大小;
Avail:表示剩余的磁盘空间大小;
Use%:磁盘空间使用率,如果值达到90%以上,就会严重影响系统的正常运行;
Mounted on:硬盘挂载的目录位置,所谓的挂载就是利用一个目录当成进入点,将磁盘分区的数据放置改目录下。
A. 查看磁盘可用空间大小及挂载点:df -h | awk '($1 !~ /Filesystem/){print $4,$6}' | sort -h | tail -1;
2. du:用于显示目录或文件的大小,即所占的磁盘空间,格式为:du -sh [文件名或目录或*(指所有)];
统计一级目录下文件大小:du -lh --max-depth=1;
查找当前目录下占用磁盘空间最大的10个文件夹:du -sh * | sort -nr | head -n 10;
3. sync:刷新文件系统缓冲区,用于强制被改变的内容立刻写入磁盘,更新信息速度非常快,在Linux系统中,在文件或数据处理过程中一般先放到内存缓冲区内,等待适当的时候再写入磁盘,以提高系统的运行速率。
七、磁盘维护
1. fdisk:创建和维护分区表,格式:fdisk [必要参数] [选择参数];
A. 显示当前分区情况:fdisk -l;
2. mkfs:在特定分区上建立linux系统,格式:mkfs [-V] [-t fstype] [fs-options] filesys [blocks];
A. 格式化分区指定格式:mkfs -t xfs /dev/lvm_data/vg_data;
八、备份压缩
1. zip:压缩文件,压缩后的文件后缀名为 .zip,格式:zip -r <压缩文件名> <文件目录>;
2. unzip:解压zip文件,格式:unzip <压缩包名>,参数-o表示直接覆盖原文件;
3. tar:用于备份文件,一般linux自带
.tgz/.tar.gz:解压— tar zxvf <压缩包名> -C <存放目录>;压缩:tar zcvf <目录/压缩文件名> <源文件>;
压缩时不想要顶层目录:tar -zcvf /var/lib/jenkins/workspace/package/dist.tar -C /var/lib/jenkins/workspace/ui/dist/ .
压缩时排除文件:--exclude,n个文件就带n个参数;
解压时重命名文件夹:tar -zxvf rhxy.tar.gz --transform="s/rhxy/rhxy_new/"
九、系统设置
1. crontab:定期执行程序,格式:crontab [-l | -r | -e];
* 2 * * * /bin/sh /appslog/sh/db.sh >> /appslog/mysql/dbbak.log 2>&1
A. shell命令添加:crontab -l > conf && echo "* 2 * * * /bin/sh /appslog/sh/db.sh >> /appslog/mysql/dbbak.log 2>&1" >> conf && crontab conf && rm -f conf,注意:crontab file会覆盖原有的定时任务,所以用cronta -l先导出原有任务到临时文件conf中,再追加新定时任务;
B. crontab表达式:
每20秒执行一次:*/1 * * * * sleep 20 && /bin/bash /test.sh
C. 脚本中部分命令不生效:所有命令需要写成绝对路径形式或者在crontab中添加环境变量. /etc/profile;/bin/sh;
D. 删除定时任务:sed -ri '/(check-keepalived.sh)/d' /var/spool/cron/root。
可参考:定时任务crontab执行失败
2. passwd:修改账号密码,格式:passwd [username];
非人工交互设置密码:echo "123456" | passwd --stdin rhxyuser。
十、执行多命令
1. &&(逻辑与):只有左边的命令执行成功时,才执行右边的命令,格式:command1 && command2;
2. || (逻辑或):只有左边的命令执行失败后,才执行右边的命令,格式:command1 || command2;
3. &:表示任务在后台执行,格式:command &;
4. |:管道,表示左边的命令输出,作为右边命令参数输入,格式:格式:command1 | command2;
十一、vim命令
(1) 移动光标的方法(一般模式)
1. Home:光标移动到这一行的最前面字符处;
2. End:光标移动到这一行的最后面字符处;
3. gg:跳转到第一行;
4. shift +g:跳转到最后一行;
5. shift +4:跳转到本行末尾;
(2) 删除、复制和粘贴(一般模式)
1. dd:删除光标所在的那一整行数据;
2. yy:复制光标所在的那一整行数据;
3. u:撤销前一个动作;
4. ddp:交换光标所在行和下一行的数据;
(3) 搜索替换(一般模式)
1. /word:向光标之下寻找一个名称为word的字符串;
2. n:如果已经用/找到了一个词,要是接着看下面的词,就是用n,它总是按着当前的搜索方向往下找相同的一个词;
(4) 一般模式切换到编辑模式
1. i(I) / a(A) / o(O):进入输入模式;
2. Esc:退出编辑模式,回到一般模式;
(5) 一般模式切换到指令模式
1. :q! 强制离开不存储档案,用于若曾修改过档案,又不想保存;
2. :wq! 强制储存后离开;
(6) vim环境的变更
1. :set nu 显示行号;
2. :set nonu 取消行号显示;
十二、yum命令
1. 只安装指定的软件命令:yum install yum-utils;
2. 只下载指定软件包到指定目录,不安装:yum install --downloadonly --downloaddir=/download gcc,注意需先安装yum-downloadonly软件包;
3. repotrack:不仅解决要下载的依赖包,还解决了依赖包与依赖包之间的关系,如:repotrack -a x86_64 -p /data/npm docker-ce;
4. yum源:
网络yum源:网络上直接下载;
本地yum源:要有提供源的文件包,一版linux系统的镜像文件iso中就包含yum源所需的rpm文件。
十三、systemctl命令
1. Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器;
2. Linux服务管理两种方式service和systemctl,其中systemctl兼容了service;
3. 管理服务(unit):systemctl [command] [unit]
A. command = status:目前这个unit服务的状态,会列出有没有正在执行、开机时是否启动等信息;
B. command = start:立刻启动unit服务;
C. command = stop:立刻关闭unit服务;
D. command = restart:立刻关闭后再启动unit服务,即执行stop再start;
E. command = reload:不关闭unit服务的情况下,重新载入配置文件,让设置生效;
F. command = enable:设置下次开机时,unit服务会被启动;
G. command = disable:设置下次开机时,unit服务不会被启动。
十四、文件句柄数查看
1. lsof命令:查看当前系统打开的文件
A. 当服务器在并发达到极限时,会报出"too many file open XXXX",这种情况很有可能就是文件句柄数满了引起的,句柄数默认值是1024;
B. 查看进程占用的句柄数(第二列为进程ID):lsof -n | awk '{print $2}' | sort | uniq -c | sort -nr | more;
C. 列出某个进程号的所有文件句柄数:lsof -p pid;
D. 查看打开的句柄总数:lsof -n | awk '{print $2}' | wc -l;
E. 修改Linux单进程最大文件连接数:修改/etc/security/limits.conf文件,添加如下内容,即把1024变为2048
soft nofile 2048
hard nofile 2048
2. ulimit命令:用于控制shell程序的资源;
A. 查看单个进程占用句柄数(open files):ulimit -a;
十五、sysctl调整内核参数
1. sysctl命令用法
A. sysctl -w variable=value : 临时改变某个指定参数的值;
B. sysctl -p <filename> (default /etc/sysctl.conf):从指定的文件加载系统参数;
C. sysctl -a :显示所有的系统参数。
2. 系统配置文件:/etc/sysctl.conf,其sysctl变量的设置通常是字符串、数字或布尔型(布尔型用1表示YES,0表示NO)
# TCP发送keepalive探测报文段的间隔时间, 确认TCP连接是否有效, 默认值2小时 net.ipv4.tcp_keepalive_time = 600 # 探测消息未获得响应时, 重复发送探测报文间隔时间, 默认75秒 net.ipv4.tcp_keepalive_intvl = 15
# 超时探测次数, 默认值9
net.ipv4.tcp_keepalive_probes = 5
# 系统同时处理的最大timewait sockets数目, 超过此数目时, time-wait socket会被立即断开并显示警告信息
net.ipv4.tcp_max_tw_buckets = 5000
十六、监控工具
1. netstat:监控TCP/IP网络,如:netstat -ntlp;
A. 查看指定端口TCP连接数:netstat -nat |grep -i port;
B. 查看TCP的并发请求数及其TCP连接状态:netstat -n|grep ^tcp|awk '{print $NF}'|sort -nr|uniq -c;
2. ss:查看TCP连接,ss -ntlp;查看udp连接,ss -nulp,一般linux自带;
3. watch:周期性执行命令,并全屏显示结果,格式:watch [参数] [命令],如:free -n 3 free -h;
4. vmstat:查看虚拟内存使用状态,格式:vmstat [-S unit],如:vmstat -S M;
5. sar:全面的系统性能分析工具,格式:sar [ 选项 ] [ <时间间隔> [ <次数> ] ],如:sar -r 1 3;
可参考:linux 性能监控 sar命令
十七、其他
1. route:路由规则配置
A. 显示所有路由:route -n;
B. 添加路由:route add –host 192.168.1.1 dev eth0;
2. arp:管理系统的arp缓冲区
A. 查看缓冲区:arp -a;
3. md5sum:查看文件MD5值, md5sun file;
4. ipconfig/flushdns:清理windows的DNS缓存;
5. grep -v grep:过滤掉查找进程的自身命令;
可参考:linux性能问题(CPU,内存,磁盘I/O,网络)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」