(总结四)Linux指令学习——进程管理

文章目录

    • 1.程序与进程的关系
    • 2.查看进程信息
    • 3.进程的不同启动方式
    • 4.进程的前后台调度
    • 5.终止程序的运行
    • 6.桌面环境下的监视系统

1.程序与进程的关系

  • 程序
    保存在硬盘、光盘等介质中的可执行代码和数据
    是静态保存的代码
  • 进程
    在CPU及内存中运行的程序代码
    是动态执行的代码
    父、子进程:每个进程可以创建一个或多个进程

2.查看进程信息

  • ps命令
    用途:查看静态的进程统计信息
    格式:ps aux
    ps -elf
[root@localhost ~]# ps aux
USER  PID %CPU %MEM VSZ RSS TTY STAT START TIME  COMMAND
root       1  0.0  0.3     2648   604 ?        S    Apr02     0:13   init [3]
root       2  0.0  0.0       0       0 ?        SN   Apr02    0:00   [ksoftirqd/0]
root       3  0.0  0.0       0       0 ?        S<   Apr02    0:19   [events/0]
root       4  0.0  0.0       0       0 ?        S<   Apr02    0:00   [khelper]
…… 

1.ps命令结合“aux”选项使用时,
将显示系统中所有的进程信息
PID:该进程在系统中的数字ID号,在当前系统中是唯一的;    %CPU:CPU占用百分比;    %MEM:内存占用百分比

2.ps命令结合“-elf”选项使用时,将以长格式显示系统中所有的进程信息,
包含更丰富的内容(其中PPID列表示进程的父进程的PID号)
  • top命令
    用途:查看动态的进程排名信息
[root@localhost ~]# top
top - 06:08:48 up 4 days,  6:57,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  60 total,   1 running,  59 sleeping,   0 stopped,   0 zombie
Cpu(s): 0.3% us,  0.7% sy, 0.0% ni, 97.4% id,  0.4% wa,  0.1% hi, 1.1% si
Mem:    191228k total,   171424k used,    19804k free,    19436k buffers
Swap:   265064k total,     1284k used,   263780k free,   120480k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM  TIME+  COMMAND
 6779 root      16   0  2536  832  668 R  3.8  0.4   0:00.04 top
    1 root      16   0  2648  604  520 S  0.0  0.3   0:13.54 init
    2 root      34   19     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/0
……

top工具的命令按键:P、M、N、h、q
按P键根据CPU占用情况对进程列表进行排序 
按M键根据内存占用情况进行排序
按N键根据启动时间进行排序
按h键可以获得top程序的在线帮助信息
按q键可以正常退出top程序
使用空格键可以强制更新进程状态显示
  • pgrep命令
    用途:根据特定条件查询进程PID信息
[root@localhost ~]# pgrep "init"
1
[root@localhost ~]# pgrep -l "log"
2538 syslogd
2541 klogd
3221 login
[root@localhost ~]# pgrep -l -U teacher -t tty1
27483 bash
27584 vim
  • pstree命令
    用途:以树型结构显示各进程间的关系
[root@localhost ~]# pstree -aup
init,1
  ├─acpid,2866
  ├─atd,3060
  ├─auditd,2516
  │   ├─python,2518 /sbin/audispd
  │   └─{auditd},2517
  ├─automount,2842
……

3.进程的不同启动方式

  • 手工启动
    (a)前台启动:用户输入命令,直接执行程序
    (b)后台启动:在命令行尾加入“&”符号
[root@localhost ~]# cp /dev/cdrom mycd.iso &
[1] 28454 


后台任务序号为1,
PID号为28454
  • 调度启动
    (a)使用at命令,设置在某个特定的时间,执行一次任务
    (b)使用crontab命令,设置按固定的周期(如每天、每周等)重复执行预先计划好的任务

(1)at命令

  • at命令
    在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务
    服务脚本名称:/etc/init.d/atd
    设置格式:at [HH:MM] [yyyy-mm-dd]

[root@localhost ~]# service atd start                     启动 atd 系统服务
启动 atd:                                               [确定]
[root@localhost ~]# at 23:45
at> shutdown -h now                         按Ctrl+D键提交任务
at> <EOT>
job 1 at 2009-09-14 23:45
[root@localhost ~]# atq
1       2009-09-14 23:45 a root


(1)使用at命令设置的任务只在指定时间点执行一次,若只指定时间则表示当天的该时间,
若只指定日期则表示该日期的当前时间
(2)可以在at交互环境中输入多条命令,最后按Ctrl+D组合键提交
(3)对应的系统服务atd必须已经运行,否则可能会出现错误提示:Can't open /var/run/atd.
pid to signal atd. No atd running?

(2)crontab命令

  • crontab命令
    按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
每小时、每天、每星期、每月定期执行的任务脚本分别存放在这些目录中

(1)启用周期性任务有一个前提条件,即对应的系统服务crond必须已经运行
(2)全局配置和系统默认配置中的内容一般不需要用户去修改,用户只需设置/var/spool/cron/目录下
与本帐号同名的文件即可,接下来介绍如何设置用户自己的计划任务
  • 管理cron计划任务
root用户可以管理指定用户的计划任务普通用户只能管理自己的计划任务
编辑计划任务:crontab  -e  [-u  用户名]
查看计划任务:crontab  -l  [-u  用户名]
删除计划任务:crontab  -r  [-u  用户名]


用户只需执行“crontab -e”命令后会自动调用文本编辑器(默认为vi)并打开“/var/spool/cron/
用户名”文件,无需手动指定文件位置
  • rontab任务的配置格式
    (a)前面5个字段用于指定任务重复执行的时间规律,第6个字段用于指定具体的任务内容
    (b)crontab任务配置记录中,所设置的命令在“分钟+小时+日期+月份+星期”都满足的条件下才会运行
    (c)由于crontab计划任务的使用频率比较高,因此牢牢记住配置记录的格式是非常有必要的
    (总结四)Linux指令学习——进程管理_第1张图片
    (总结四)Linux指令学习——进程管理_第2张图片
  • crontab任务的配置格式
    (a)时间数值的特殊表示方法
*	   表示该范围内的任意时间
,    表示间隔的多个不连续时间点
-	   表示一个连续的时间范围
/	   指定间隔的时间频率
  • eg1:
0  17  *  *  1-5		周一到周五每天17:00 
30  8  *  *  1,3,5	每周一、三、五的8300  8-18/2  *  *  *	8点到18点之间每隔2小时
0  *  */3  *  *		每隔3天

除了“*”,还可以使用减号“-”、逗号“,”、斜杠“/”与数字构成表达式来表示复杂的时间关系:
使用减号“-”可以表示一个连续的时间范围,如“1-4”表示整数1,2,3,4
使用逗号“,”可以表示一个间隔的不连续范围,如“3, 4, 6, 8”
斜杠符号“/”可以用来指定间隔频率,如在日期字段中的“*/3”表示每隔3
  • eg2:示例1(root用户)
    每天早上7:50自动开启sshd服务,22点50时关闭
    每隔5天清空一次FTP服务器公共目录/var/ftp/pub
    每周六的7:30时,重新启动httpd服务
    每周一、三、五的17:30时,打包备份/etc/httpd目录
[root@localhost ~]# crontab -e
50 7 * * *  /sbin/service sshd start
50 22 * * *  /sbin/service sshd stop
0 * */5 * *  /bin/rm -rf /var/ftp/pub/*
30 7 * * 6  /sbin/service httpd restart
30 17 * * 1,3,5  /bin/tar jcvf httpdconf.tar.bz2 /etc/httpd 
  • eg3:(jerry用户)
    每周日晚上23:55时将“/etc/passwd”文件的内容复制到宿主目录中,保存为pwd.txt文件
[root@localhost ~]# crontab -e -u jerry 
55 23 * * 7  /bin/cp /etc/passwd /home/jerry/pwd.txt 
  • eg3:
    root用户查看自己的计划任务列表
    查看并删除jerry用户设置的计划任务
[root@localhost root]# crontab -l
50 7 * * *  /sbin/service sshd start
50 22 * * *  /sbin/service sshd stop
0 * */5 * *  /bin/rm -rf /var/ftp/pub/*
30 7 * * 6  /sbin/service httpd restart
30 17 * * 1,3,5  /bin/tar jcvf httpdconf.tar.bz2 /etc/httpd
[root@localhost root]# crontab -l -u jerry
55 23 * * 7  /bin/cp /etc/passwd /home/jerry/pwd.txt
[root@localhost root]# crontab -r -u jerry
[root@localhost root]# crontab -l -u jerry
no crontab for jerry
[root@localhost root]#

4.进程的前后台调度

  • Ctrl+Z 组合键
    将当前进程挂起,即调入后台并停止执行
  • jobs命令
    查看处于后台的任务列表
  • fg命令
    将处于后台的进程恢复到前台运行,需指定任务序号
[root@localhost ~]# jobs
[1]-   Stopped                 cp /dev/cdrom mycd.iso 
[2]+  Stopped                 top
[root@localhost ~]# fg 1

5.终止程序的运行

  • Ctrl+C组合键
    中断正在执行的命令
  • kill、killall命令
    kill用于终止指定PID号的进程
    killall用于终止指定名称的所有进程
    -9 选项用于强制终止
[root@localhost ~]# pgrep -l "portmap"
2869  portmap
[root@localhost ~]# kill  -9  2869
[root@localhost ~]# killall -9 vim
[1]-  已杀死               /usr/bin/vim file1
[2]-  已杀死               /usr/bin/vim file2
  • pkill命令
[root@localhost ~]# w | grep -v "root"
14:10:10 up  6:08,  4 users,  load average: 0.00, 0.01, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
teacher  tty1     -                14:04    5:34   0.16s  0.16s -bash
hackli   pts/1    173.17.17.174    14:05    4:32   0.17s  0.17s -bash 
[root@localhost ~]# pkill -9 -t pts/1
[root@localhost ~]# w | grep -v "root"
 14:12:22 up  6:10,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
teacher  tty1     -                14:04    7:46   0.16s  0.16s -bash

6.桌面环境下的监视系统

  • 通过系统监视器可以实现对CPU、硬盘、内存和交换分区的实时监视
    (总结四)Linux指令学习——进程管理_第3张图片

你可能感兴趣的:(鸟哥Linux私房菜)