进程和计划任务管理
进程和计划任务管理
1.查看和控制进程
程序和进程的关系
v程序
■ 保存在硬盘、光盘等介质中的可执行代码和数据
■ 是静态保存的代码
v进程
■ 在CPU及内存中运行的程序代码
■ 是动态执行的代码
■ 父、子进程:每个进程可以创建一个或多个进程
#例如提供Web服务的httpd程序,当有大量用户同时访问web页面时,httpd程序可能会创建多个进程来提供服务
1.1查看进程
查看进程信息——ps
vps命令
■ 用途:查看静态的进程统计信息
■ 格式:ps aux
ps -elf
[root@localhost ~]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 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 ~]# toptop - 09:34:11 up 8 min, 1 user, load average: 0.00, 0.02, 0.01Tasks: 111 total, 1 running, 109 sleeping, 1 stopped, 0 zombieCpu(s): 0.0%us, 0.7%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1004608k total, 317384k used, 687224k free, 34212k buffersSwap: 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 syslogd2541 klogd3221 login[root@localhost ~]# pgrep -l -U teacher -t tty1 <==-U:指定特定用户,-t:指定终端27483 bash27584 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 teacherbash,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 ~]# date2011年 02月 21日 星期一 14:45:05 CST[root@localhost ~]# at 14:55 2011-02-21at> pgrep -U root | wc -l > /tmp/ps.rootat> <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:30at> shutdown -h nowat> <EOT>job 7 at 2011-02-21 21:30 |
[root@localhost ~]# atq <==查看未执行的任务列表1 2011-02-21 14:55 a root2 2011-02-21 21:30 a root |
[root@localhost ~]# atrm 2 <==删除第2条任务[root@localhost ~]# atq1 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/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 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 -e50 7 * * * /sbin/service sshd start50 22 * * * /sbin/service sshd stop0 0 */5 * * /bin/rm –rf /var/ftp/pub/*30 7 * * 6 /sbin/service httpd restart30 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 jerry55 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 start50 22 * * * /sbin/service sshd stop0 * */5 * * /bin/rm -rf /var/ftp/pub/*30 7 * * 6 /sbin/service httpd restart30 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 jerryno crontab for jerry[root@localhost root]#
浙公网安备 33010602011771号