Linux 是一个多用户多任务的操作系统 , 多用户是指多个用户可以在同一时间登陆系统 , 多任务是指可以同时执行多个任务。
Linux 中所有进程都是相互联系的。除了初始化进程外,所有进程都有一个父进程。 Linux 系统中所有的进程都是由一个进程号为 1 的 init 进程衍生而来的。而我们在 shell 下执行程序启动的进程则是 shell 进程的子进程,当然我们启动的进程可以再启动自己的子进程,这样就形成了一棵进程树,每个进程都是树中的一个节点,其中树的根是 init 。
进程的启动方式
启动一个进程有两个主要途径, 手工启动 和 调度启动 。
手工启动 :分为前台启动和后台启动。前台启动,直接输入命令即可启动一个前台进程。对于一些耗时的进程,后台启动是一个明智的选择 ( 后台运行直接在命令后面加 &) 。
调度启动 :有时候需要对系统进行一些比较费时且占用系统资源的维护工作,这些工作适合在深夜等非繁忙阶段进行,这时候管理员就可以事先进行调度安排,指定任务运行的时间,到时候系统会自动完成这些工作。
1 . at 使用 at 命令在指定的时间执行相应的作业
at 23:00
>find / -name ‘/etc/passwd’ -print
> <EOT>
<EOT> 为 CTRL+D
2 . cron 使用 at 安排的作业只能执行一次 , 如果想定期执行某些操作 , 可以使用 cron .
进程的挂起及恢复
系统允许将进程挂起并可以在需要时恢复进程的运行,被挂起的进程恢复后将从中止处开始继续执行。只要在键盘上按 Ctrl + Z ,即可挂起当前的作业。
使用 jobs 可以显示 shell 的作业清单,包括具体作业号,具体的作业以及作业当前所处的状态。恢复进程执行时,用 fg 将作业放到前台来执行,用 bg 将作业放到后台来执行。
进程管理
1. 进程查看
ps [-e] [-l] [-r] ...
-e 显示所有进程
-l 长格式
-r 只显示正在运行的进程
2 . 动态查看进程
top 可以动态显示系统当前的进程,即可以通过用户按键来不断刷新当前状态。并可以根据 CPU 或者内存使用情况进行排序等。
top [-d delay] [c] ...
-d 每两次刷新屏幕的间隔时间
-c 显示整个命令行
3. 中断进程
kill [signal] 进程号
4. nohup 命令
nohup command &
如果正在运行一个进程,并且希望在退出帐户时该进程不会结束,那么可以使用 nohup 命令。该命令可以在用户退出系统后继续执行相应的进程。一般我们会让这些进程在后台执行,结果会写到当前目录下的 nohup.out 文件,也可以使用重定向,将结果输出到另外一个文件。
5. 查看当前登陆用户情况
who 查看当前登陆的用户。
w 查看当前登陆的用户以及用户正在进行的工作。