Linux 命令集锦

340 阅读4分钟

一、RPM 相关

1. 查询一个包是否被安装

rpm -qa |grep < rpm package name>

2. 查询所有被安装的 rpm 包

rpm -qa

3. 安装 rpm 包

如果因为缺少依赖而不能正常安装,可以使用 --nodeps 来忽略依赖关系

rpm -ivh libpcap-devel-1.4.0-1.el6.rft.x86_64.rpm  --force --nodeps

4. 卸载 rpm 包

如果因为缺少依赖而不能正常卸载,可以使用 --nodeps 来忽略依赖关系

rpm -e [package name] --nodeps

二、openssh 与 openssl 相关

1. 查看 openssh 版本

ssh -V

2. 查看 openssl 版本

openssl version

三. watch 相关

1. 打印各个状态的连接数

netstat -an |grep 8080 | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key, "\t", sta[key]}'
watch -n 1 -d "netstat -an |grep 10086 | awk '/^tcp/ {++sta[\$NF]} END {for(key in sta) print key, "\t", sta[key]}'"

四. Sort 相关

cat exception.log |sort |uniq -c|sort -rnk 1 > sortexception.log  

五. tcpdump

1. 分文件保存

tcpdump -nn -i any -vv -s0 port 7547 -C 100 -Z root -w /opt/hdc/temp/clean-200702.pcap

六. Swap

1. swap使用情况

vmstat -s | grep -i page

七. Sar

1. sar -n #统计网络信息

sar -n选项使用6个不同的开关:DEV,EDEV,NFS,NFSD,SOCK,IP,EIP,ICMP,EICMP,TCP,ETCP,UDP,SOCK6,IP6,EIP6,ICMP6,EICMP6和UDP6。

-n DEV : 网络接口统计信息。  
-n EDEV : 网络接口错误。  
-n IP : IP数据报统计信息。  
-n EIP : IP错误统计信息。  
-n TCP : TCP统计信息。  
-n ETCP : TCP错误统计信息。  
-n SOCK : 套接字使用。  
它们可以单独或者一起使用,例: sar -n DEV,ETCP,UDP 1

2. 常用命令汇总

默认监控: sar 5 5     //  CPU和IOWAIT统计状态 
(1) sar -b 5 5        // IO传送速率
(2) sar -B 5 5        // 页交换速率
(3) sar -c 5 5        // 进程创建的速率
(4) sar -d 5 5        // 块设备的活跃信息
(5) sar -n DEV 5 5    // 网路设备的状态信息
(6) sar -n SOCK 5 5   // SOCK的使用情况
(7) sar -n ALL 5 5    // 所有的网络状态信息
(8) sar -P ALL 5 5    // 每颗CPU的使用状态信息和IOWAIT统计状态 
(9) sar -q 5 5        // 队列的长度(等待运行的进程数)和负载的状态
(10) sar -r 5 5       // 内存和swap空间使用情况
(11) sar -R 5 5       // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
(12) sar -u 5 5       // CPU的使用情况和IOWAIT信息(同默认监控)
(13) sar -v 5 5       // inode, file and other kernel tablesd的状态信息
(14) sar -w 5 5       // 每秒上下文交换的数目
(15) sar -W 5 5       // SWAP交换的统计信息(监控状态同iostat 的si so)
(16) sar -x 2906 5 5  // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
(17) sar -y 5 5       // TTY设备的活动状态
(18) 将输出到文件(-o)和读取记录信息(-f),如:sar -r -f /var/log/sa/sa12

八、占用CPU或内存最多的几个进程

1. ps命令

ps -aux | sort -k4nr | head -N

命令详解:

  1. head:-N可以指定显示的行数,默认显示10行。

  2. ps:
    参数a指代all——所有的进程
    参数u指代userid——执行该进程的用户id
    参数x指代显示所有程序,不以终端机来区分。
    ps -aux的输出格式如下:

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.0  19352  1308 ?        Ss   Jul29   0:00 /sbin/init
    root         2  0.0  0.0      0     0 ?        S    Jul29   0:00 [kthreadd]
    root         3  0.0  0.0      0     0 ?        S    Jul29   0:11 [migration/0]
    
    USER        进程所属用户
    PID         进程ID
    %CPU        进程占用CPU百分比
    %MEM        进程占用内存百分比
    VSZ         虚拟内存占用大小,单位:kb(killobytes)
    RSS         实际内存占用大小,单位:kb(killobytes)
    TTY         终端类型
    STAT        进程状态
    START       进程启动时刻
    TIME        进程运行时长
    COMMAND     启动进程的命令
    
  3. sort -k4nr
    k代表从根据哪一个关键词排序,后面的数字4表示按照第四列排序;
    n指代numberic sort,根据其数值排序;
    r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。
    本例中,可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序。-k3表示按照cpu占用率排序。

2. top工具

命令行输入top回车,然后按下大写M按照memory排序,按下大写P按照CPU排序。

八、grep

1. 从字符串中提取子串(正则表达式)

grep -Eo '<SerialNumber>\w{32}</SerialNumber>' file

注:grep的-o选项,可以只打印匹配的部分,否则会打印整行。

九、时间差

DATE=$(date +'%Y-%m-%d')
start_time=$(date +'%Y-%m-%d %H:%M:%S')
sleep 3s
end_time=$(date +'%Y-%m-%d %H:%M:%S')
duration=$(($(date +%s -d "${end_time}") - $(date +%s -d "${start_time}"))) 
echo "${DATE}:cost=${duration}s,startTime=${start_time},endTime=${end_time}"

$(( )) 整数运算符号

$(( ))中的变量名称,可于其前面加 $ 符号来替换,也可以不用。

[root@localhost ~]# echo $((2*3))
6
[root@localhost ~]# a=5;b=7;c=2
[root@localhost ~]# echo $((a+b*c))
19
[root@localhost ~]# echo $(($a+$b*$c))
19

九、查看命令安装路径

例:查看 service 命令路径
command -v service

修改用户名密码

echo hdm:tmp123$%^|chpasswd

或者
创建一个包含用户名和密码的文本文件,例如:

user1:password1
user2:password2
user3:password3

必须以这种格式来书写,并且不能有空行,保存成文本文件user.txt,然后执行chpasswd命令:

chpasswd < user.txt