首页 > 技术文章 > Linux 常用命令集

ruhuanxingyun 2019-07-25 17:59 原文

一、Linux相关

  1. cat /etc/issue 或 lsb_release -a:查看系统发行版本,适用于所有的linux发行版;

   cat /etc/redhat-release:也是查看系统发行版本,只适合Redhat系的linux;

  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:显示主机名信息;

    修改主机名:vi /etc/hostname文件,重启服务即可

  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 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 设置命令的端口号。

  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

  4. chmod:控制用户对文件的权限,格式:chmod abc file;

    -R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更);

   5. ln:为某一个文件在另外一个位置创建一个同步的链接(软链接),格式:ln -s 源文件 目标文件;

    注意:如果出现链接名闪烁的问题可以检查下目录是否存在。

   6. chown:设置文件所有者和文件关联组,格式:chown -R user:group file;

   7. whereis:主要用于查找程序文件,格式:whereis ...,例如:whereis nginx;

 

三、网络通讯

  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;

 

五、文档编辑

  1. wc:用于计算数目,格式:wc -l;

  2. sed:利用脚本来处理文本文件,格式:sed -e [文本文件],另外在双引号的情况下可以直接使用变量

    A. 替换某行指定字符串:sed -i -e '21{s/443/'"${PORT}"'/}' -e "22{s/443/${PORT}/}" /rhxy/nginx.yml;

    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`;

    注意:变量为空或中文可能引起文件乱码

 

六、磁盘管理

  1. df:用于显示linux系统上的文件系统的磁盘使用情况,格式为:df [选项] [目录或文件名];

     

    Filesystem:表示该系统文件位于哪个分区,Size:表示文件系统的大小,Used:表示用掉的磁盘空间大小,Avail:表示剩余的磁盘空间大小,

    Use%:磁盘空间使用率,如果值达到90%以上,就会严重影响系统的正常运行,Mounted on:硬盘挂载的目录位置。

  2. du:用于显示目录或文件的大小,即所占的磁盘空间,格式为:du -sh [文件名或目录或*(指所有)];

            

    统计一级目录下文件大小:du -lh --max-depth=1;

    查找当前目录下占用磁盘空间最大的10个文件夹:du -sh * | sort -nr | head -n 10;

 

七、磁盘维护

  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 <压缩包名>;压缩:tar zcvf <压缩文件名>  <文件目录>;

 

九、系统设置

  1. crontab:定期执行程序,格式:crontab [-l | -r | -e];

* 2 * * * /bin/sh /appslog/sh/db.sh >> /appslog/mysql/dbbak.log 2>&1

    可参考:定时任务crontab执行失败

  2. passwd:修改账号密码,格式:passwd [username];

 

十、执行多命令

  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. tcpdump:监听网络接口上流过的数据包

    A. 指定端口:tcpdump -nn -i eth0 port 80;

  2. route:路由规则配置

    A. 显示所有路由:route -n;

    B. 添加路由:route add –host 192.168.1.1 dev eth0;

  3. arp:管理系统的arp缓冲区

    A. 查看缓冲区:arp -a;

  4. md5sum:查看文件MD5值, md5sun file;

  5. ipconfig/flushdns:清理windows的DNS缓存;

 

可参考:linux性能问题(CPU,内存,磁盘I/O,网络)

 

推荐阅读