telint命令用于切换当前正在运行的Linux系统的运行等级。
语法
telint(选项)(参数)
选项
-t:指定等待的秒数。
参数
运行等级:指定要切换的运行等级。
telint命令用于切换当前正在运行的Linux系统的运行等级。
telint(选项)(参数)
-t:指定等待的秒数。
运行等级:指定要切换的运行等级。
pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。
pstree(选项)
-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示; -c:不使用精简标示法; -G:使用VT100终端机的列绘图字符; -h:列出树状图时,特别标明现在执行的程序; -H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序; -l:采用长列格式显示树状图; -n:用程序识别码排序。预设是以程序名称来排序; -p:显示程序识别码; -u:显示用户名称; -U:使用UTF-8列绘图字符; -V:显示版本信息。
显示当前所有进程的进程号和进程id
pstree -p
显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。
pstree -a
service命令是Redhat Linux兼容的发行版中用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
service(选项)(参数)
-h:显示帮助信息; --status-all:显示所服务的状态。
/etc/init.d
目录下的脚本文件名;当修改了主机名、ip地址等信息时,经常需要把网络重启使之生效。
service network status 配置设备: lo eth0 当前的活跃设备: lo eth0 service network restart 正在关闭接口 eth0: [ 确定 ] 关闭环回接口: [ 确定 ] 设置网络参数: [ 确定 ] 弹出环回接口: [ 确定 ] 弹出界面 eth0: [ 确定 ]
重启mysql
service mysqld status mysqld (pid 1638) 正在运行... service mysqld restart 停止 MySQL: [ 确定 ] 启动 MySQL: [ 确定 ]
nice命令用于以指定的进程调度优先级启动其他的程序。
nice(选项)(参数)
-n:指定进程的优先级(整数)。
指令及选项:需要运行的指令及其他选项。
新建一个进程并设置优先级,将当前目录下的documents目录打包,但不希望tar占用太多CPU:
nice -19 tar zcf pack.tar.gz documents
方法非常简单,即在原命令前加上nice -19
。很多人可能有疑问了,最低优先级不是19么?那是因为这个“-19”中的“-”仅表示参数前缀;所以,如果希望将当前目录下的documents目录打包,并且赋予tar进程最高的优先级:
nice --19 tar zcf pack.tar.gz documents
pmap命令用于报告进程的内存映射关系,是Linux调试及运维一个很好的工具。
pmap(选项)(参数)
-x:显示扩展格式; -d:显示设备格式; -q:不显示头尾行; -V:显示指定版本。
进程号:指定需要显示内存映射关系的进程号,可以是多个进程号。
pidof nginx 13312 5371 pmap -x 5371 5371: nginx: worker process Address Kbytes RSS Dirty Mode Mapping 0000000000400000 564 344 0 r-x-- nginx 000000000068c000 68 68 60 rw--- nginx 000000000069d000 56 12 12 rw--- [ anon ] 000000000a0c8000 1812 1684 1684 rw--- [ anon ] 0000003ac0a00000 112 40 0 r-x-- ld-2.5.so 0000003ac0c1c000 4 4 4 r---- ld-2.5.so 0000003ac0c1d000 4 4 4 rw--- ld-2.5.so 0000003ac0e00000 1340 284 0 r-x-- libc-2.5.so 0000003ac0f4f000 2044 0 0 ----- libc-2.5.so 0000003ac114e000 16 16 8 r---- libc-2.5.so 0000003ac1152000 4 4 4 rw--- libc-2.5.so 0000003ac1153000 20 20 20 rw--- [ anon ] 0000003ac1200000 8 4 0 r-x-- libdl-2.5.so 0000003ac1202000 2048 0 0 ----- libdl-2.5.so 0000003ac1402000 4 4 4 r---- libdl-2.5.so 0000003ac1403000 4 4 4 rw--- libdl-2.5.so 0000003ac1600000 84 0 0 r-x-- libselinux.so.1 0000003ac1615000 2048 0 0 ----- libselinux.so.1 0000003ac1815000 8 8 8 rw--- libselinux.so.1 0000003ac1817000 4 4 4 rw--- [ anon ] 0000003ac1a00000 236 0 0 r-x-- libsepol.so.1 0000003ac1a3b000 2048 0 0 ----- libsepol.so.1 0000003ac1c3b000 4 4 4 rw--- libsepol.so.1 0000003ac1c3c000 40 0 0 rw--- [ anon ] 0000003ac1e00000 88 44 0 r-x-- libpthread-2.5.so 0000003ac1e16000 2048 0 0 ----- libpthread-2.5.so 0000003ac2016000 4 4 4 r---- libpthread-2.5.so 0000003ac2017000 4 4 4 rw--- libpthread-2.5.so 0000003ac2018000 16 4 4 rw--- [ anon ] 0000003ac2600000 80 52 0 r-x-- libz.so.1.2.3 0000003ac2614000 2044 0 0 ----- libz.so.1.2.3 0000003ac2813000 4 4 4 rw--- libz.so.1.2.3 0000003ac2a00000 36 4 0 r-x-- libcrypt-2.5.so 0000003ac2a09000 2044 0 0 ----- libcrypt-2.5.so 0000003ac2c08000 4 4 4 r---- libcrypt-2.5.so 0000003ac2c09000 4 4 4 rw--- libcrypt-2.5.so 0000003ac2c0a000 184 0 0 rw--- [ anon ] 0000003ac3600000 8 0 0 r-x-- libkeyutils-1.2.so 0000003ac3602000 2044 0 0 ----- libkeyutils-1.2.so 0000003ac3801000 4 4 4 rw--- libkeyutils-1.2.so 0000003ac3a00000 68 0 0 r-x-- libresolv-2.5.so 0000003ac3a11000 2048 0 0 ----- libresolv-2.5.so 0000003ac3c11000 4 4 4 r---- libresolv-2.5.so 0000003ac3c12000 4 4 4 rw--- libresolv-2.5.so 0000003ac3c13000 8 0 0 rw--- [ anon ] 0000003ac3e00000 8 0 0 r-x-- libcom_err.so.2.1 0000003ac3e02000 2044 0 0 ----- libcom_err.so.2.1 0000003ac4001000 4 4 4 rw--- libcom_err.so.2.1 0000003ac4200000 1204 8 0 r-x-- libcrypto.so.0.9.8e 0000003ac432d000 2044 0 0 ----- libcrypto.so.0.9.8e 0000003ac452c000 132 88 12 rw--- libcrypto.so.0.9.8e 0000003ac454d000 16 12 12 rw--- [ anon ] 0000003ac4600000 176 0 0 r-x-- libgssapi_krb5.so.2.2 0000003ac462c000 2048 0 0 ----- libgssapi_krb5.so.2.2 0000003ac482c000 8 8 8 rw--- libgssapi_krb5.so.2.2 0000003ac4a00000 144 0 0 r-x-- libk5crypto.so.3.1 0000003ac4a24000 2044 0 0 ----- libk5crypto.so.3.1 0000003ac4c23000 8 8 8 rw--- libk5crypto.so.3.1 0000003ac4e00000 32 0 0 r-x-- libkrb5support.so.0.1 0000003ac4e08000 2044 0 0 ----- libkrb5support.so.0.1 0000003ac5007000 4 4 4 rw--- libkrb5support.so.0.1 0000003ac5200000 580 0 0 r-x-- libkrb5.so.3.3 0000003ac5291000 2048 0 0 ----- libkrb5.so.3.3 0000003ac5491000 16 16 12 rw--- libkrb5.so.3.3 0000003ac5a00000 288 4 0 r-x-- libssl.so.0.9.8e 0000003ac5a48000 2048 0 0 ----- libssl.so.0.9.8e 0000003ac5c48000 24 16 12 rw--- libssl.so.0.9.8e 00002b5751808000 8 8 8 rw--- [ anon ] 00002b5751810000 108 36 0 r-x-- libpcre.so.1.2.0 00002b575182b000 2044 0 0 ----- libpcre.so.1.2.0 00002b5751a2a000 4 4 4 rw--- libpcre.so.1.2.0 00002b5751a2b000 28 28 28 rw--- [ anon ] 00002b5751a32000 40 20 0 r-x-- libnss_files-2.5.so 00002b5751a3c000 2044 0 0 ----- libnss_files-2.5.so 00002b5751c3b000 4 4 4 r---- libnss_files-2.5.so 00002b5751c3c000 4 4 4 rw--- libnss_files-2.5.so 00002b5751c3d000 4 4 4 rw-s- zero (deleted) 00002b5751c3e000 20012 20000 20000 rw--- [ anon ] 00007fffbf2ce000 84 20 20 rw--- [ stack ] 00007fffbf35e000 12 0 0 r-x-- [ anon ] ffffffffff600000 8192 0 0 ----- [ anon ] ---------------- ------ ------ ------ total kB 72880 22940 22000
ipcs命令用于报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。
ipcs(选项)
-a:显示全部可显示的信息; -q:显示活动的消息队列信息; -m:显示活动的共享内存信息; -s:显示活动的信号量信息。
ipcs -a
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x7401833d 2654208 root 600 4 0
0x00000000 3145729 root 600 4194304 9 dest
0x7401833c 2621442 root 600 4 0
0xd201012b 3080195 root 600 1720 2
nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out
文件中。如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
nohup(选项)(参数)
--help:在线帮助;
--version:显示版本信息。
程序及选项:要运行的程序及选项。
使用nohup命令提交作业,如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
在上面的例子中,输出被重定向到myout.file文件中。
renice命令可以修改正在运行的进程的调度优先级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级。
renice(选项)(参数)
-g:指定进程组id;
-p<程序识别码>:改变该程序的优先权等级,此参数为预设值。
-u:指定开启进程的用户名。
进程号:指定要修改优先级的进程。
将行程id为987及32的行程与行程拥有者为daemon及root的优先序号码加1:
renice 1 987 -u daemon root -p 32
注意:每一个行程都有一个唯一的id。
pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。
pgrep(选项)(参数)
-o:仅显示找到的最小(起始)进程号; -n:仅显示找到的最大(结束)进程号; -l:显示进程名称; -P:指定父进程号; -g:指定进程组; -t:指定开启进程的终端; -u:指定进程的有效用户ID。
进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。
pgrep -lo httpd 4557 httpd [root@localhost ~]# pgrep -ln httpd 4566 httpd [root@localhost ~]# pgrep -l httpd 4557 httpd 4560 httpd 4561 httpd 4562 httpd 4563 httpd 4564 httpd 4565 httpd 4566 httpd [root@localhost ~]# pgrep httpd 4557 4560 4561 4562 4563 4564 4565 4566
skill命令用于向选定的进程发送信号,冻结进程。这个命令初学者并不常用,深入之后牵涉到系统服务优化之后可能会用到。
skill(选项)
-f:快速模式; -i:交互模式,每一步操作都需要确认; -v:冗余模式; -w:激活模式; -V:显示版本号; -t:指定开启进程的终端号; -u:指定开启进程的用户; -p:指定进程的id号; -c:指定开启进程的指令名称。
如果您发现了一个占用大量CPU和内存的进程,但又不想停止它,该怎么办?考虑下面的top命令输出:
top -c -p 16514 23:00:44 up 12 days, 2:04, 4 users, load average: 0.47, 0.35, 0.31 1 processes: 1 sleeping, 0 running, 0 zombie, 0 stopped CPU states: cpu user nice system irq softirq iowait idle total 0.0% 0.6% 8.7% 2.2% 0.0% 88.3% 0.0% Mem: 1026912k av, 1010476k used, 16436k free, 0k shrd, 52128k buff 766724k actv, 143128k in_d, 14264k in_c Swap: 2041192k av, 83160k used, 1958032k free 799432k cached PID USER PRI NI SIZE RSS SHARE stat %CPU %MEM time CPU command 16514 oracle 19 4 28796 26M 20252 D N 7.0 2.5 0:03 0 oraclePRODB2...
既然您确认进程16514占用了大量内存,您就可以使用skill命令“冻结”它,而不是停止它。
skill -STOP 1
之后,检查top输出:
23:01:11 up 12 days, 2:05, 4 users, load average: 1.20, 0.54, 0.38 1 processes: 0 sleeping, 0 running, 0 zombie, 1 stopped CPU states: cpu user nice system irq softirq iowait idle total 2.3% 0.0% 0.3% 0.0% 0.0% 2.3% 94.8% Mem: 1026912k av, 1008756k used, 18156k free, 0k shrd, 3976k buff 770024k actv, 143496k in_d, 12876k in_c Swap: 2041192k av, 83152k used, 1958040k free 851200k cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 16514 oracle 19 4 28796 26M 20252 T N 0.0 2.5 0:04 0 oraclePRODB2...
现在,CPU 从 0% 空闲变为 94% 空闲。该进程被有效冻结。过一段时间之后,您可能希望唤醒该进程:
skill -CONT 16514
如果希望暂时冻结进程以便为完成更重要的进程腾出空间,该方法非常有用。
此命令用途很广。如果您要停止 "oracle" 用户的所有进程,只需要一个命令即可实现:
skill -STOP oracle
可以使用用户、PID、命令或终端 id 作为参数。以下命令可停止所有 rman 命令。
skill -STOP rman
如您所见,skill 决定您输入的参数(进程 ID、用户 ID 或命令)并进行相应操作。这可能会导致在某些情况下出现这样的问题:您可能具有同名的用户和命令。最好的示例是 "oracle" 进程,通常由用户 "oracle" 运行。因此,当您希望停止名为 "oracle" 的进程时,可执行以下命令:
skill -STOP oracle
用户 "oracle" 的所有进程都停止,包括您可能要使用的会话。要非常明确地执行命令,您可以选择使用一个新参数指定参数的类型。要停止一个名为 oracle 的命令,可执行以下命令:
skill -STOP -c oracle
snice命令的功能与skill类似。但它用于降低进程的优先级,而不是停止进程。首先,检查 top 输出:
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 3 root 15 0 0 0 0 RW 0.0 0.0 0:00 0 kapmd 13680 oracle 15 0 11336 10M 8820 T 0.0 1.0 0:00 0 oracle 13683 oracle 15 0 9972 9608 7788 T 0.0 0.9 0:00 0 oracle 13686 oracle 15 0 9860 9496 7676 T 0.0 0.9 0:00 0 oracle 13689 oracle 15 0 10004 9640 7820 T 0.0 0.9 0:00 0 oracle 13695 oracle 15 0 9984 9620 7800 T 0.0 0.9 0:00 0 oracle 13698 oracle 15 0 10064 9700 7884 T 0.0 0.9 0:00 0 oracle 13701 oracle 15 0 22204 21M 16940 T 0.0 2.1 0:00 0 oracle
现在,将 "oracle" 进程的优先级降低四个点。注意,该值越高,优先级越低。
snice +4 -u oracle
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
16894 oracle 20 4 38904 32M 26248 D N 5.5 3.2 0:01 0 oracle
注意,NI 列(nice 值)现在是 4,优先级现在设置为 20,而不是 15。这对于降低优先级非常有帮助。