进程
列表 | 优先级 | 后台/前台 | Top | Kill
PID是每个进程唯一号码。使用 ps 获取所有正在运行的进程列表。
# ps -auxefw # 所有正在运行进程的详尽列表
然而,更典型的用法是使用管道或者 pgrep:
# ps axww | grep cron 586 ?? Is 0:01.48 /usr/sbin/cron -s # ps aux | grep ss[h] # Find all ssh pids without the grep pid # pgrep -l sshd # 查找所有进程名中有sshd的进程ID # echo $$ # The PID of your shell # fuser -va 22/tcp # 列出使用端口22的进程 # fuser -va /home # 列出访问 /home 分区的进程 # strace df # 跟踪系统调用和信号 # truss df # 同上(FreeBSD/Solaris/类Unix) # history | tail -50 # 显示最后50个使用过的命令
用 renice 更改正在运行进程的优先级。负值是更高的优先级,最小为-20,其正值与 nice 值的意义相同译注:进程的优先级通常被称作它的 nice 值。用户只能对自己所有的进程使用renice命令,root用户可以在任何进程上使用renice命令,只有root用户才能提高进程的优先级。
# renice -5 586 # 更强的优先级 586: old priority 0, new priority -5
使用 nice 命令启动一个已定义优先级的进程。 正值为低优先级,负值为高优先级。确定你知道 /usr/bin/nice 或者使用 shell 内置命令译注:要查看所有 shell 内置命令,可运行 # info bash builtin(# which nice)。
# nice -n -5 top # 更高优先级(/usr/bin/nice) # nice -n 5 top # 更低优先级(/usr/bin/nice) # nice +5 top # tcsh 内置 nice 命令(同上)
nice 可以影响 CPU 的调度,另一个实用命令 ionice译注:此命令仅可工作在2.6.13及以上内核版本上,并且采用了CFQ 的 IO 调度方式。通过 #cat /sys/block/[sh]d[a-z]*/queue/scheduler 命令可以得知你的系统采用了什么样的调度算法
可以调度磁盘 IO。This is very useful for intensive IO application which can
bring a machine to its knees while still in a lower priority. 此命令仅可在
Linux (AFAIK) 上使用。你可以选择一个类型(idle best effort real time),它的 man
页很短并有很好的解释。
# ionice c3 -p123 # 给 pid 123 设置为 idle 类型 # ionice -c2 -n0 firefox # 用 best effort 类型运行 firefox 并且设为高优先级 # ionice -c3 -p$$ # 将当前的进程(shell)的磁盘 IO 调度设置为 idle 类型
例中最后一条命令对于编译(或调试)一个大型项目会非常有用。每一个运行于此 shell 的命令都会有一个较低的优先级,但并不妨碍这个系统。$$ 是你 shell 的 pid (试试 echo $$)。
前台/后台当一个进程在 shell 中已运行,可以使用 [Ctrl]-[Z] (^Z), bg 和 fg 来 调入调出前后台译注:在命令后面加 & 可直接使其在后台运行。。举个例子:启动 2 个进程,调入后台。使用 jobs 列出后台列表,然后再调入一个进程到前台。
# ping cb.vu > ping.log ^Z # ping 使用 [Ctrl]-[Z] 来暂停(停止) # bg # 调入后台继续运行 # jobs -l # 后台进程列表 [1] - 36232 Running ping cb.vu > ping.log [2] + 36233 Suspended (tty output) top # fg %2 # 让进程 2 返回到前台运行
使用 nohup 开启一个持续运行的进程直到 shell 被关闭(避免挂断)。
# nohup ping -i 60 > ping.log &
top 程序用来实时显示系统中各个进程的运行信息。
# top
当 top 在运行的时候,按下 h译注:也可以是 ? 键会显示帮助画面。常用键如下:
u [用户名] 只显示属于此用户的进程。使用 + 或者空白可以查看所有用户 k [PID] 结束 PID 进程 1译注:数字 显示所有进程状态信息(只有Linux) R 将当前排序倒转 Kill命令与信号使用 kill 或 killall 终止或发送一个信号给进程。
# ping -i 60 cb.vu > ping.log & [1] 4712 # kill -s TERM 4712 # 同 kill -15 4712 # killall -1 httpd # 发送 HUP 信号终止进程 httpd # pkill -9 http # 发送 TERM 信号终止包含 http 的进程 # pkill -TERM -u www # 发送 TERM 信号终止 www 所有者进程 # fuser -k -TERM -m /home # 终止所有访问 /home 的进程(卸载该分区前)
下面是一些重要的信号:
1 HUP (挂起) 2 INT (中断) 3 QUIT (退出) 9 KILL (KILL 信号不能被捕捉,不能被忽略。) 15 TERM (软件终止信号)相关文章
- 【Android 逆向】Android 系统文件分析 ( cpuinfo 处理器信息文件 | self 当前进程信息文件 | meminfo 当前内存信息文件 )
- 万字讲解Linux进程概念
- Linux 查看磁盘IO并找出占用IO读写很高的进程
- Linux下实现进程间锁定的安全性(进程锁linux)
- Linux下的进程树结构(进程树linux)
- 共享Linux系统进程间数据共享机制研究(linux进程间数据)
- Linux进程:如何创建和管理(linux进程创建)
- Linux系统中实现进程间通信的方式(linux系统进程间通信)
- Linux下IPC机制:实现进程间通信的有效方式(linux中ipc)
- Oracle 利用进程查询数据(oracle查进程)
- 如何在Linux上监控指定进程?(linux监控指定进程)