千家信息网

第四章 更多bash shell命令一

发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,Key words : 进程查看 :ps top 监控磁盘空间:mount、df、du 操作数据文件 sort grep Linux文件压缩工具:bzip2 compresse gzip zip 4.
千家信息网最后更新 2024年11月17日第四章 更多bash shell命令一Key words 进程查看 :ps top 监控磁盘空间:mount、df、du 操作数据文件 sort grep Linux文件压缩工具:bzip2 compresse gzip zip 4.1.1进程查看 ps 默认情况下只显示属于当前用户正在当前终端中运行的程序 [root@localhost ~]# ps PID TTY TIME CMD 4026 pts/0 00:00:00 bash 4793 pts/0 00:00:00 ps ps本身提供的信息很少,但它有很多参数,可以实现强大的功能 linux中使用的GNU ps命令支持3种不同的命令行参数: 1、Unix类型参数,前面有一短划线 2、BSD类型参数,前面没有短划线 3、GNU长参数,前面有双短划线 unix类型常用参数: ps -e/A 显示所有进程 -f 显示完整的格式列表 -l 显示长列表 ps -ef 是最常用最有用的 [root@localhost ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 20:35 ? 00:00:07 init [5] root 2 1 0 20:35 ? 00:00:00 [migration/0] root 3 1 0 20:35 ? 00:00:00 [ksoftirqd/0] root 4 1 0 20:35 ? 00:00:00 [watchdog/0] root 5 1 0 20:35 ? 00:00:00 [migration/1] root 6 1 0 20:35 ? 00:00:00 [ksoftirqd/1] root 7 1 0 20:35 ? 00:00:00 [watchdog/1] 。。。。。。 UID :负责启动进程的用户 PID :进程ID PPID:父进程ID C :进程存续期的处理器利用率 STIME :进程启动时的系统时间 TTY:进程从中启动的终端 TIME:运行进程所需的累积CPU时间 CMD:启动程序的名称 [root@localhost ~]# ps -el 若希望查看更多的信息,可以l参数 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 78 0 - 518 - ? 00:00:07 init 1 S 0 2 1 0 -40 - - 0 migrat ? 00:00:00 migration/0 1 S 0 3 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0 5 S 0 4 1 0 -40 - - 0 watchd ? 00:00:00 watchdog/0 1 S 0 5 1 0 -40 - - 0 migrat ? 00:00:00 migration/1 1 S 0 6 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/1 5 S 0 7 1 0 -40 - - 0 watchd ? 00:00:00 watchdog/1 F内核分配给进程的系统标记 s 进程的状态(O=在处理器上运行; S=睡眠 ; R=可运行,等待运行 ; Z=死进程,进程以 终止但父进程不可用 ; T=进程已停止) PRI:进程的优先级,数字越大优先级越低 NI :nice value 用于判断优先级 ADDR:进程的内存地址 SZ换出进程大致需要的交换空间 WCHAN进程睡眠时所在的内核函数的地址 BSD类型参数: 与Unix类型参数有许多相同之处,最常用的是l 参数 [root@localhost ~]# ps l F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 0 3483 1 17 0 1664 452 - Ss+ tty1 0:00 /sbin/mingetty t 4 0 3484 1 18 0 1664 452 - Ss+ tty2 0:00 /sbin/mingetty t 4 0 3485 1 18 0 1664 448 - Ss+ tty3 0:00 /sbin/mingetty t 4 0 3486 1 19 0 1664 448 - Ss+ tty4 0:00 /sbin/mingetty t 4 0 3487 1 20 0 1664 448 - Ss+ tty5 0:00 /sbin/mingetty t 4 0 3488 1 21 0 1664 452 - Ss+ tty6 0:00 /sbin/mingetty t 4 0 3590 3586 15 0 18372 10400 - Rs+ tty7 0:29 /usr/bin/Xorg :0 0 0 4026 4022 15 0 4912 1520 wait Ss pts/0 0:00 bash 4 0 6055 4026 17 0 4456 844 - R+ pts/0 0:00 ps l 不同的地方是 VSZ :进程在内存中的大小,以KB为单位 RSS:进程使用过且未被换成的物理内存 STAT:由两个字符组成的状态码,表示当前进程的状态,第一个字符与Unix类型的S输出列的值相同 ,第二个字符进一步定义进程的状态: < : 进程正以高优先级运行 N :进程正以低优先级运行 L:进程在内存中存在锁定页面 s:进程是会话的领导者 l:进程是多线程的 +:进程正在前台运行 4.1.2实时进程监控 ps只能显示特定时间点的信息,而top命令可以实时显示进程信息,例如在内存中换进换出的进程趋 势、负载值等。 [root@localhost ~]# top top - 22:32:40 up 1:57, 2 users, load average: 0.07, 0.02, 0.00 Tasks: 95 total, 2 running, 93 sleeping, 0 stopped, 0 zombie Cpu(s): 3.1%us, 2.9%sy, 0.0%ni, 93.8%id, 0.0%wa, 0.1%hi, 0.0%si, 0.0%st Mem: 1035064k total, 331236k used, 703828k free, 87928k buffers Swap: 2097144k total, 0k used, 2097144k free, 145676k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3590 root 15 0 35356 9.9m 5820 S 7.1 1.0 0:36.91 Xorg 4022 root 15 0 100m 17m 10m R 4.1 1.7 0:08.06 gnome-terminal 3733 root 15 0 39848 11m 7664 S 0.3 1.1 0:01.06 metacity 3828 root 15 0 16904 4080 3188 S 0.3 0.4 0:01.71 gnome-screensav 6867 root 18 0 2300 1080 836 R 0.3 0.1 0:00.14 top 1 root 18 0 2072 660 568 S 0.0 0.1 0:07.19 init 2 root RT -5 0 0 0 S 0.0 0.0 0:00.35 migration/0 3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 。。。。。。 第一行:当前时间 系统已正常运行的时间 登录的用户数量 系统平均负载 平均负载包括三个值,分别是1分钟平均负载、5分钟平均负载、15分钟平均负载。值越高则系统负 载越大,短期活动使1分钟平均负载值冲高是常见的,但是15分钟平均负载值处于高位则表示系统可能 遇到了麻烦。平均负载值依赖于在系统的硬件配置和其中运行的程序,这个值对不同的系统有不同的影 响,但一般来说,如果平均负载值高于2则表示系统趋于繁忙。 第二行:一般进程信息:有多少进程在运行、睡眠、已停止、僵死(已经运行完毕,但父进程未响应) 第三行:CPU的一般信息 第四第五行:系统内存状态 剩下的信息跟PS命令的输出相似。 默认情况下,top会根据%CPU的值对程序进行排序,但可以在top运行其中按下互交式命令改变 程序行为 b 启用表中重要数据用粗体显示 z 显示颜色 l 在单个CPU与symmetric Muutiprocessor(SMP)状态之间切换 F 选择对进程进行排序的字段 m 切换MEM和SWAP信息行显示 k 杀死特定进程 q 退出top命令 d/s 更改更新时间(默认为3秒) u 显示特定用户的进程 w 将当前设置写入配置文件 。。。。。。 4.1.3停止进程--需要root用户或进程所有者 Linux沿用了Unix中的进程间通信方法,在Linux中,各种进程使用信号相互通信,进程信号是进程可 以识别的预定义信息,进程可以选择忽略它或作出响应,大多数精心编写的应用程序都能接收标准Unix 进程信号,并对此作出响应。 Linux进程信号:
信号名称描述
1HUP挂起
2INT中断
3QUIT停止运行
9KILL强制终止
11SEGV段违例
15TERM条件终止
17STOP强制停止但未终止
18TSTP停止或暂停,但仍继续在后台运行
19CONTSTOP或TSTP之后恢复执行
kill 和killall 命令可以向运行中的进程发送进程信号 kill 命令根据PID将信号发送给相关进程,默认情况下kill命令向进程发送TERM(15)信号友好地通知 进程停止运行,但当进程失控时很可能忽略该请求。当需要执行强制措施时可以通过使用参数-s 来指定 其他信号(名称或信号编号) 例: [root@localhost ~]# kill 4302 [root@localhost ~]# kill -s 9 4302 [root@localhost ~]# kill -2 4532 [root@localhost ~]# kill QUIT 4597 killall可以根据进程名称来停止进程,还允许使用通配符,对处理出错的系统非常有用。但使用时务必小心,否则很容易导致意外停止重要的系统进程,使文件系统受损。 [root@localhost ~]# killall gnome-terminal
0