更多bash shell命令

《Linux命令行与shell脚本编程大全》读书笔记

检测程序

探查进程命令ps

Linux使用的GNUps命令支持3种不同类型的命令行参数:

  • Unix风格的参数,前面加单破折线;
  • BSD风格的参数,前面不加破折线;
  • GNU风格的长参数,前面加双破折线。

-e 选项:指定显示所有运行在系统上的进程;
-f 选项:扩展了输出。这些扩展的列包含如下信息。
--forest 选项:显示进程层级信息,并用ASCII字符绘出图表。

UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 May13 ?        00:00:01 /sbin/init
root          2      0  0 May13 ?        00:00:00 [kthreadd]

UID:启动这些进程的用户。
PID:进程的进程ID。
PPID:父进程的进程号。
C:进程生命周期中的CPU利用率。
STIME:进程启动时的系统时间。
TTY:进程启动时的终端设备。
TIME:运行进程需要的累计CPU时间。
CMD:启动的程序名称。
-l 选项:产出长格式输出。

F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S   500  12955  12954  0  80   0 - 27084 wait   pts/0    00:00:00 bash
0 R   500  14484  12955  0  80   0 - 27033 -      pts/0    00:00:00 ps

F:内核分配给进程的系统标记。
S:进程的状态(O正在运行;S休眠;R可运行,正等待运行;Z僵化,进程已结束但父进程已不存在;T停止)。
PRI:进程优先级(越大的数字代表越低的优先级)。
NI:谦让度值用来参与决定优先级。
ADDR:进程的内存地址。
SZ:假如进程被换出,所需交换空间的大致大小。
WCHAN:进程休眠的内核函数的地址。

实时监测进程命令top

ps命令缺陷:只能显示某个特定时间点的信息。
top命令功能:实时显示进程信息。

[lsh@localhost ~]$ top
top - 18:26:32 up 1 day,  3:34,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 100 total,   1 running,  99 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1004412k total,   494168k used,   510244k free,    61572k buffers
Swap:  2031608k total,        0k used,  2031608k free,   242440k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                           
     1 root      20   0 19364 1548 1232 S  0.0  0.2   0:01.34 init                                               
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                           
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0  
  • 第一行:当前时间、系统运行时间、登录用户数、系统平均负载。
    平均负载3个值:最近1分钟、最近5分钟、最近15分钟。
    值越大负载越高。
    重点最近15分钟的平均负载很高,说明系统可能有问题。
    通常,负载值超过CPU核数*0.7,就说明系统比较繁忙,需要优化。
    使用命令:
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

# 查看物理CPU个数
[root@S6 core]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 查看每个物理CPU核数
[root@S6 core]# cat /proc/cpuinfo| grep "cpu cores"| uniq
[root@S6 core]# grep 'model name' /proc/cpuinfo | wc -l

# 查看逻辑CPU的个数,即多少线程
[root@S6 core]# cat /proc/cpuinfo| grep "processor"| wc -l
  • 第二行:进程(top命令输出中将进程叫任务)概要
    运行进程数、休眠进程数、停止进程数、僵化进程数。

  • 第三行:CPU概要
    根据进程属主(用户/系统)和进程状态将CPU利用率分成几类输出。

  • 紧随2行:内存状态
    第一行:物理内存(总数、已用、剩余空闲),默认单位KB,可以按大写的E切换显示单位
    第二行:交换空间(总数、已用、剩余)

  • 最后一部分:当前运行进程详细列表。
    PID:进程ID。
    USER:进程属主名字。
    PR:进程优先级。
    NI:进程谦让度。
    VIRT:进程占用虚拟内存。
    RES:进程占用物理内存。
    SHR:进程和其他进程共享内存。
    S:进程状态。
    %CPU:进程使用的CPU时间比例。
    %MEM:进程使用的内存占可用内存的比例。
    TIME+:自进程启动到目前为止CPU时间总量。
    COMMAND:进程所对应的命令行名称,也就是启动的程序名。

默认top命令按%CPU值对进程排序。可以在top运行时键入命令重新排序。
f 命令:选择重新排序的字段。
d 命令:修改轮询间隔。
q 命令:退出top。

结束进程命令kill

  1. kill命令
    只能通过进程的PID,而不能用命令名。
    默认向命令行中列出的全部PID发送一个TERM信号。
    要发进程信号,需要是进程的属主 / 登录为root用户。
    -s 参数:指定其他信号(信号名/信号值)。
  2. killall 命令
    支持通过进程名而不是PID来结束进程。
    也支持通配符,在系统因负载过大而变得很慢时很有用。

监测磁盘空间

挂载(mounting)存储媒体

今天的图形化桌面环境下,大多数Linux发行版能自动挂载特定类型的可移动存储媒体(CD、U盘等)。

  1. mount命令
    默认输出当前系统挂载的设备列表。
[lsh@localhost ~]$ mount
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)

输出4部分信息:
①媒体的设备文件名
②媒体挂载到虚拟目录的挂载点
③文件系统类型(vfat:Windows长文件系统(大多数U盘的格式),ntfs:Windows高级文件系统,iso9660:标准CD文件系统)
④已挂载媒体的访问状态
手动挂载设备,需要root权限。
基本命令:mount -t 文件系统类型 设备 目录
挂载之后,只有root用户有权访问,普通用户需要指定权限。

  1. umount命令
    卸载设备命令格式:umount 目录/设备

如果卸载设备时,提示设备繁忙,无法卸载。可用lsof 命令获得使用它的进程信息。
命令格式:lsof 目录


使用 df 命令

功能:查看所有已挂载磁盘使用情况。
-h 选项:按照用户易读的形式显示输出。

[lsh@localhost ~]$ df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G  3.7G   13G  23% /
tmpfs                         491M     0  491M   0% /dev/shm
/dev/sda1                     485M   35M  426M   8% /boot

命令输出:
①设备的设备文件位置;
②总容量;
③已用;
④剩余;
⑤已用空间所占比例;
⑥设备挂载到了哪个挂载点。

使用du命令

功能:显示某个特定目录(默认当前目录)的磁盘使用情况。可用来快速判断系统上某个目录下是否有超大文件。

[lsh@localhost ~]$ du -h
4.0K    ./.gnome2
4.0K    ./.mozilla/extensions
4.0K    ./.mozilla/plugins
12K ./.mozilla
40K .

输出:当前目录下所有文件、目录和子目录的磁盘使用情况。
这个输出列表是从目录层级的最底部开始,然后按文件、子目录、目录逐级向上。
-c 选项:显示所有已列出文件总大小。
-h 选项:按用户易读格式输出大小。
-s 选项:显示每个输出参数的总计。

处理数据文件

排序数据sort

默认按会话指定的默认语言的排序规则对文本文件中的数据行排序。
默认把数字当作字符来执行标准的字符排序。
-n 选项:告诉sort命令把数字识别成数字而不是字符,并按值排序。
-M 选项:按月排序,在处理日志文件时比较有用。

搜索数据grep

命令格式:grep 选项 模式 文件
-v 选项:反向搜索。
-n 选项:显示匹配模式的行所在行号。
-c 选项:只输出有多少行含有匹配的模式。
-e 选项:指定多个匹配模式。例:grep -e 模式 -e 模式 文件
默认用Unix风格正则表达式来匹配模式。
初次之外,还有egrep和fgrep。

压缩数据gzip

gzip:压缩文件。
gzcat:查看压缩过的文本文件内容。
gunzip:解压文件。

归档数据tar

命令格式:tar 功能 选项 对象1 对象2
-c 功能:创建一个新的tar归档文件。
-x 功能:从已有tar归档文件中提取文件。

-f file选项:输出结果到文件或设备file
-v 选项:在处理文件时显示文件
-z 选项:将输出重定向给gzip命令来压缩内容

你可能感兴趣的:(更多bash shell命令)