Linux笔记 Chapter 5

PREV 4.x 用户管理 | NEXT 6.x 系统文件构成

5.1 程序和进程的概念

  • 程序是静态概念,本身作为一种软件资源长期保持

  • 进程是程序执行的过程,它是动态的,是有一定的生命周期的,是动态产生和消亡的

  • 一个程序可以有多个进程共用,一个进程在活动中有可顺序地执行若干个程序,它们没有任何对应关系

在Linux系统中,分为前台进程和后台进程

  • 前台进程:当一个命令执行的过程中,不允许其它的命令执行,只能等待该命令执行完毕后(也就是该进程结束后)才能执行其它命令。比如查找一个文件:find / -name init在这个命令执行中是不可以进行其它命令执行的。

  • 后台进程:允许多个进程一起同步执行:只需要在最后加上“&”即表示为后台进程(注意后台进程不能是交互执行的,比如ping命令等)。find / -name init > /home/init.sh &

5.2.1 进程管理命令

w(who):查看用户信息

 13:50:31 up 49 min,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     :0               05:02    8:49m 13.24s 13.24s /usr/bin/Xorg :0 -br -ve
root     pts/1    192.168.100.162  05:04    0.00s  0.54s  0.02s w
  • TTY:表示以什么方式登录这台计算机(pts/0远程登录)

  • FROM:表示从什么位置登录的

  • LOGIN@:表示登录时间

  • IDLE:表示用户闲置的时间

  • JCPU:表示当前这个用户执行的所有进程所耗时的总和

  • PCPU:表示执行程序耗费的时间

  • load avegage:表示系统的负载值,分别显示过去的1、5、15分钟系统的负载程度

    • 如果想知道系统的平均负载,三者之和除3即可

    • 最终结果如果在0.8以下,表示系统正常

    • 如果达到几十或上百,那么系统负载非常高,可能无法响应任何命令

  • WHAT:表示当前执行的什么任务

5.2.2 进程查看命令

ps(process status)

  • -a:显示所有用户的进程

  • -l:长格式显示

    ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0  3230  3226  0  80   0 - 27089 do_wai pts/1    00:00:00 bash
    4 R     0  3861  3230 10  80   0 - 27036 -      pts/1    00:00:00 ps
    
  • STAT:当前状态s休眠D不可中断的休眠状态R运行状态Z僵死状态T停止

  • UID:表示当前启动进程的用户

  • PID:进程号

  • PPID:父进程号

  • TTY:进程启动的终端

  • NI:进程的优先级

  • TIME:进程启动以来占用的实际时间

  • CMD:进程的命令

  • 其它选项

    • -u:显示用户名和启动时间

    • -x:显示没有控制终端的进程

    • -e:显示所有进程,包括没有控制终端的进程

    • -w:宽行显示,可以使用多个w进行加宽显示

进程查看命令

  • ps -el:查看所有的进程,包括没有终端的进程

  • ps -aux:显示当前进程占用CPU(%CPU)和内存的百分比(%MEM)

  • ps -el --sort pid:进行对进程PID排序,也可使用其它字段排序

  • ps -aux | grep rpc:对进程结果进行过滤

5.2.3 杀死进程

  • 该进程占用了过多的CPU时间

  • 该进程锁住了一个终端,使用其它前台进程无法运行

  • 运行时间过长,没有预期的效果

  • 成为了系统负载的主要负担

  • 无法正常退出…

命令:

  • kill [进程号]:关闭进程,kill 1234

  • kill -9 [进程号]:强制关闭进程,kill -9 1234

  • kill -1 [进程号]:重启进程,kill -1 1234

  • xkill:关闭图形程序

  • killall:结束所有进程

  • pgrep [服务名称]:查找服务进程号

  • pkill [进程名称]:关闭进程,pkill redis

5.2.4 进程常用命令

  • nohup program &:使进程在用户退出登录后仍旧继续执行

  • ctrl+c:终止一个程序的运行

  • ctrl+z:挂起一个程序的运行

  • jobs:放在后台执行的进程可以使用进行查看

    • 把任务恢复到前台继续执行fg [任务编号]

    • 把任务恢复到后台继续执行bg [任务编号]

  • top:进程状态显示和进程控制,每5秒钟自动刷新次(动态显示)

    • d:指定刷新的时间间隔

    • c:显示整个命令行的详细信息

    • u:可以查看指定用户的进程

    • k:终止正在执行的进程

5.3.1 任务计划

任务计划的命令

  • at:安排作业在某一时刻执行一次

  • cron:安排周期性运行的作业

5.3.2 一次性任务计划

  • at [-f 文件名] 时间:安排一个或多个命令在指定的时间运行一次(ctrl+d保存任务退出)

    • 绝对计时方法:HH:MM YYYY-MM-DD

    • 相对计时方法:now + n minutesnow + n hoursnow + n days

    at now+2 minutes
    at> /usr/bin/wall < /home/at-test.sh
    
  • at -d or atrm:删除队列中的任务

  • at -l or atq:查看队列中的任务

  • 如果/etc/at.allow存在,则在里面的用户可以使用at执行计划

  • 如果/etc/at.deny存在,则在里面的用户都不可以使用at执行计划

  • 如果文件都不存在,则只有root可以使用at执行计划

    find /etc/ -name at.allow
    find /etc/ -name at.deny
    

5.3.3 周期性任务计划

crontab {-l|-r|-e}:用于生成cron进程所需要的crontab文件

  • -l:显示当前的crontab

  • -r:删除当前的crontab

  • -e:使用编辑器编辑当前的crontab

计划命令的时间格式:

分钟 小时 星期 命令/脚本
0 4 * * *
0 18 * * 2,5
0 18 * 1-3 2,5

注意:

  • 时间选项都不能为空,不知道的值统一用*,表示任何时间

  • 每个时间字段都可以指定多个值,不连续的值用“,”分隔,连续的值用“-”分隔

  • 命令应该使用绝对路径,用户必须有运行对应命令的权限

如果crontab程序没有启动,则需要手工启动:

  • ps -el | grep crond

  • /etc/rc.d/init.d/crond start

  • crontab文件建好后,可以到/var/spool/cron目录确认

    crontab -e
    */1 * * 1-12 * /usr/bin/wall < /home/at-test.sh
    

PREV 4.x 用户管理 | NEXT 6.x 系统文件构成