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 保存退出

posted @ 2018-10-24 22:12  aspen-  阅读(1206)  评论(0)    收藏  举报