Linux 的僵尸进程和crond定时任务
一, 僵尸进程
通常情况下,子进程是由父进程生成。因此,子进程一旦执行结束了,默认由它的父进程来管理。如果它的父进程比子进程结束的要早,那么子进程默认父进程的父进程来管理。假如所有的父进程都结 束了,默认就会交给init进程来管理。 这就是Linux的垃圾回收机制。
假如子进程执行结束了,但是它的父进程没有通知它上一级的进程来管理,所以子进程就没有了上级的进程进行来管理了,现在这种情况下的,子进程就叫做僵尸进程。
通常代码都是开发者写的,父进程执行结束了,通知上一级进程的代码也是有开发者写的,如果他忘写了,服务器运行这个程序,就会不断地出现僵尸进程。
僵尸进程最可怕的结果,并不是资源的占用,因为一个进程占不了太多的资源。最可怕的是僵尸进程会一直占用PID号,而操作系统的PID号是有限的,如果PID号不够用了,Linux就会什么程序都执行不了。
二,crond定时任务
1,crontab 设置周期性计划任务
因为crontab定时任务的全局配置文件是/etc/crontab,第一行是shell解释器,第二行是crontab的变量,第三行是指定邮件发送的用户,第四行是指定任务执行是的根目录。
crontab的任务配置格式:第一个*代表分钟,取值为0到59之间的整数;第二个*代表小时,取值为0到23之间的整数;第三个*代表日期,取值为1到31之间的整数;第四个*代表月份,取值为1到12之间的整数;第五个*代表星期,取值为0到7之间的整数,0或7代表星期日。*表示该范围的任意时间,“,”表示间隔的多个不连续时间点,“.”表示一个连续的时间范围,/表示间隔的时间频率。
因为crontab定时任务配置文件里的PATA环境变量与Linux操作系统的PATA不一致,这就意味着,我们在写定时任务的时候,有的命令Linux能找到,但是定时任务找不到,此时定时任务必然出错。所以在我们学习的时候,就要养成好习惯,定时任务里的命令必须用绝对路径。
crontab定时任务会产生屏幕输出的话 ,那么linux操作系统就会给root 的/etc/spool/mail/root文件发送邮件,但如果,postfix邮件服务处于关闭状态,那么邮件就不会在发给root账号,而是会在/var/spool/postfix/madrop/生成众多小文件,所以我们都会在命令后面加&>>/dev/null。
2, at 设置一次性任务计划
服务脚本:/etc/init,d/atd
设置格式为:at 【HH:MM】【YYYY-MM-DD】
atq 查询现有的一次性任务计划
atrm [任务序号] 删除第几项任务
Ctarl+D 保存退出
浙公网安备 33010602011771号