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个参数

 

九、系统设置

  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

  可参考:sysctl.conf内核参数优化

 

十六、监控工具

  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;

   可参考:Linux下netstat命令详解

  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,网络)

 

posted @ 2019-07-25 17:59  如幻行云  阅读(291)  评论(0编辑  收藏  举报