进程和计划任务管理

进程和计划任务管理

 
1.查看和控制进程
程序和进程的关系
v程序
     ■ 保存在硬盘、光盘等介质中的可执行代码和数据
     ■ 是静态保存的代码
v进程
     ■ 在CPU及内存中运行的程序代码
     ■ 是动态执行的代码
     ■ 父、子进程:每个进程可以创建一个或多个进程
#例如提供Web服务的httpd程序,当有大量用户同时访问web页面时,httpd程序可能会创建多个进程来提供服务 
 
1.1查看进程
查看进程信息——ps
vps命令
     ■ 用途:查看静态的进程统计信息
     ■ 格式: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]
…… 
 
查看进程信息——top
vtop命令
     ■ 用途:查看动态的进程排名信息
[root@sky ~]# top
top - 09:34:11 up 8 min,  1 user,  load average: 0.00, 0.02, 0.01
Tasks: 111 total,   1 running, 109 sleeping,   1 stopped,   0 zombie
Cpu(s):  0.0%us,  0.7%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1004608k total,   317384k used,   687224k free,    34212k buffers
Swap:  2031608k total,        0k used,  2031608k free,   110080k cached
   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
     7 root      20   0     0    0    0 S  0.3  0.0   0:00.97 events/0 
  1567 root      20   0  181m 4468 3560 S  0.3  0.4   0:00.78 vmtoolsd 
  2705 root      20   0 15032 1220  952 R  0.3  0.1   0:00.01 top
     1 root      20   0 19356 1536 1228 S  0.0  0.2   0:01.11 init 
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd 
按P键根据CPU占用情况对进程列表进行排序
按M键根据内存占用情况进行排序
按N键根据启动时间进行排序
按h键可以获得top程序的在线帮助信息
按q键可以正常退出top程序
使用空格键可以强制更新进程状态显示
 
查看进程信息——pgrep
vpgrep命令
     ■ 用途:根据特定条件查询进程PID信息
[root@localhost ~]# pgrep "init"
1
[root@localhost ~]# pgrep -l "log"     <==-l:显示进程名
2538 syslogd
2541 klogd
3221 login
[root@localhost ~]# pgrep -l -U teacher -t tty1    <==-U:指定特定用户,-t:指定终端
27483 bash
27584 vim
 
查看进程树——pstree
vpgrep命令
     ■ 用途:根据特定条件查询进程PID信息
[root@localhost ~]# pstree -aup     <==-a:显示完整信息,-u:列出对应用户名,-p:列出对应PID号
init,1
  ├─acpid,2866
  ├─atd,3060
  ├─auditd,2516
  │   ├─python,2518 /sbin/audispd
  │   └─{auditd},2517
……
 
[root@localhost ~]# pstree -ap teacher
bash,27483
  └─vim,27674 myfile.txt
 
1.2 控制进程
进程的启动方式
v手工启动
     ■ 前台启动:用户输入命令,直接执行程序
     ■ 后台启动:在命令行尾加入“&”符号
[root@localhost ~]# cp /dev/cdrom mycd.iso &
[1] 28454 
 
v调度启动
     ■ 使用at命令,设置一次性计划任务
     ■ 使用crontab命令,设置周期性计划任务
 
进程的前后台调度
vCtrl+Z 组合键
     ■ 将当前进程挂起,即调入后台并停止执行
vjobs命令
     ■ 查看处于后台的任务列表
vfg命令
     ■ 将处于后台的进程恢复到前台运行,需指定任务序号
[root@localhost ~]# jobs -l
[1]-   Stopped                 cp /dev/cdrom mycd.iso 
[2]+   Stopped                 top
[root@localhost ~]# fg 1
 
终止进程的运行
vCtrl+C组合键
     ■ 中断正在执行的命令
vkill、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
#若该进程已经无法响应终止信号,则可以结合“-9”选项强行杀死进程
#强制终止进程时可能会导致程序运行的部分数据丢失,因此不得以时不要轻易使用“-9”选项
 
vpkill命令
     ■ 用途:根据特定条件终止相应的进程
     ■ 常用命令选项:
      ●  -U:根据进程所属的用户名终止相应进程
      ●  -t:根据进程所在的终端终止相应进程
[root@localhost ~]# pgrep –l -U "zhangsan"           
3045 bash
[root@localhost ~]# pkill -9 -U "zhangsan”
[root@localhost ~]# pgrep -l U "zhangsan”
 
 
2.计划任务管理
2.1 at 一次性任务设置
vat命令
     ■ 一次性计划任务
     ■ 服务脚本名称:/etc/init.d/atd
     ■ 设置格式:at  [HH:MM]  [yyyy-mm-dd]
[root@localhost ~]# date
2011年 02月 21日 星期一 14:45:05 CST
[root@localhost ~]# at 14:55 2011-02-21
at> pgrep -U root | wc -l > /tmp/ps.root
at> <EOT>    <==任务设置完毕后按Ctrl+D组合键提交                          
job 1 at 2011-02-21 14:55 
[root@localhost ~]# cat /tmp/ps.root <==等过了计划任务时间后验证命令结果
63
 
v案例:
     ■ 在当天的21:30时自动关闭当前系统
[root@localhost ~]# at 21:30
at> shutdown -h now
at> <EOT>
job 7 at 2011-02-21 21:30
 
[root@localhost ~]# atq      <==查看未执行的任务列表
1       2011-02-21 14:55 a root
2       2011-02-21 21:30 a root
 
[root@localhost ~]# atrm 2    <==删除第2条任务
[root@localhost ~]# atq
1       2011-02-21 14:55 a root
 
2.2 crontab 周期性任务设置
计划任务管理——crond
vcrontab命令
     ■ 按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
     ■ 服务脚本名称:/etc/init.d/crond
     ■ 主要设置文件
      ●  全局配置文件,位于文件:/etc/crontab
      ●  系统默认的设置,位于目录:/etc/cron.*/
      ●  用户定义的设置,位于文件:/var/spool/cron/用户名
[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
#每小时、每天、每星期、每月定期执行的任务脚本分别存放在这些目录中
#启用周期性任务有一个前提条件,即对应的系统服务crond必须已经运行
#全局配置和系统默认配置中的内容一般不需要用户去修改,用户只需设置/var/spool/cron/目录下与本帐号同名的文件即可
 
v管理cron计划任务
     ■ 编辑计划任务:crontab  -e  [-u  用户名]
     ■ 查看计划任务:crontab  -l  [-u  用户名]
     ■ 删除计划任务:crontab  -r  [-u  用户名]
#root用户可以管理指定用户的计划任务,普通用户只能管理自己的计划任务
#用户只需执行“crontab -e”命令后会自动调用文本编辑器(默认为vi)并打开“/var/spool/cron/用户名”文件,无需手动指定文件位置
 
crontab任务配置的格式
#前面5个字段用于指定任务重复执行的时间规律,第6个字段用于指定具体的任务内容
#crontab任务配置记录中,所设置的命令在“分钟+小时+日期+月份+星期”都满足的条件下才会运行
 
v时间数值的特殊表示方法
     ■ *       表示该范围内的任意时间
     ■ ,        表示间隔的多个不连续时间点
     ■ -       表示一个连续的时间范围
     ■ /       指定间隔的时间频率
v应用示例
     ■ 0  17  *  *  1-5        周一到周五每天17:00
     ■ 30  8  *  *  1,3,5      每周一、三、五的8点30分
     ■ 0  8-18/2  *  *  *    8点到18点之间每隔2小时
     ■ 0  *  */3  *  *          每隔3天
 
crontab应用示例
v示例1(root用户):
     ■ 每天早上7:50自动开启sshd服务,22点50时关闭
     ■ 每隔5天清空一次FTP服务器公共目录/var/ftp/pub
     ■ 每周六的7:30时,重新启动httpd服务
     ■ 每周一、三、五的17:30时,打包备份/etc/httpd目录
[root@localhost root]# crontab -e
50  7  *  *  *    /sbin/service  sshd  start
50  22  *  *  *    /sbin/service  sshd  stop
0  0  */5 * *    /bin/rm –rf /var/ftp/pub/*
30  7  *  *  6    /sbin/service  httpd  restart
30  17  *  *  1,3,5  /bin/tar  jcf  httpdconf.tar.bz2  /etc/httpd/
 
v示例2(jerry用户)
     ■ 每周日晚上23:55时将“/etc/passwd”文件的内容复制到宿主目录中,保存为pwd.txt文件
[root@localhost root]# crontab -e -u  jerry
55 23 * * 7   /bin/cp  /etc/passwd  /home/jerry/pwd.txt
 
v示例3:
     ■ root用户查看自己的计划任务列表
     ■ 查看并删除jerry用户设置的计划任务
[root@localhost root]# crontab -l    <==查看root用户自己的计划任务列表
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     <==查看用户jerry的计划任务
55 23 * * 7  /bin/cp /etc/passwd /home/jerry/pwd.txt
[root@localhost root]# crontab -r -u jerry     <==删除用户jerry的计划任务
[root@localhost root]# crontab -l -u jerry
no crontab for jerry
[root@localhost root]#
 
 





posted @ 2015-05-26 19:26  Hello-Sky  阅读(349)  评论(0编辑  收藏  举报