Linux例行性工作at,cron,进程管理

简介:

  Linux工作调度的种类:at,cron

两种工作调度的方式:

     一种是例行性的,就是每隔一定的周期要来办的事项(通过at实现);

一种是突发性的,就是这次做完以后就没有的那一种(通过cron实现)。

一、突发性的工作调度(at)

要使用单一工作调度,我们的Linux系统上面由atd来负责这个调度的服务,首先启动/etc/init.d/atd restart   

 可以设置一下开机时就启动这个服务,免得每次重新启动都得再来一次。 chkconfig atd on 

 at安全管理

    /etc/at.deny

    将不可以使用at的帐号写入其中,若未记录到这个文件当中的用户,就可以使用at

 at的参数使用

   at [-m -v -c -l -d]  TIME

  -m 当at的工作完成后,即使没有输出信息,以      email通知用户该工作已完成

   -l 相当于atq,列出所有用户的at任务

   -d 相当于atrm,去掉at的任务

   -v 可以用较明显的时间格式列出at调度中的工作

   -c 列出后面接的该项工作的实际命令内容

TIME:时间格式,这里可以定义什么时候要进行at这项工作时间,格式有:

    HH:MM     ex>04:00

    HH:MM YYYY-MM-DD  ex>04:00 2012-04-01

    HH:MM[am|pm]  [Month]  [Date]   ex>04:00 March 17

    HH:MM[am|pm]  +number [minutes|hours|days|weeks]

    ex>now +5 minutes  就是说,在现在在加5minutes后进行该工作调度。

    编写例行性工作时应注意:

    使用命令时尽量用绝对路径,

    用Ctrl+d 结束编写。

at工作的管理

 at并不像cron那样,可以用crontab -e来编辑自己的工作调度,

当我们发现命令输入错误,就目前来讲,只能删除它。

(因为at的存放文件并不像crontab,at命令的存放文件为二进制文件[/var/spool/at/,对应的工作调度执行过后,则其二进制文件也就消失了],可用od查看,从简单使用的角度来讲,若命令错了,直接删除(atrm)重建)

  atq 查询目前主机上面有多少的at工作调度;

  atrm 后加工作序列号,删除该工作任务。

二、例行性的工作调度(cron)

   cron安全管理

   /etc/cron.deny

   将不可以使用crontab的帐号写入其中,若未记录到这个文件当中的用户,就可以使用crontab.

  crontab的参数使用

  -u -e -l -r

  -u 只有root才能进行这个任务,也即帮其他用户新建  、删除crontab工作高度;

  -e 编辑crontab的工作内容;

  -l 查阅crontab的工作内容;

  -r 删除所有的crontab的工作内容,若仅要删除一项  ,请用-e去编辑。

范例:用root的身份在每天的12:00发信给自己

crontab -e

#此时进入vi的编辑器界面。

 0  12  *  *  *  mail root -s "at 12:00" </root/.bashrc

#分 时  日 月 周 |<-------------命令串------------------>|

默认情况下,任何用户只要不被列入/etc/cron.deny当中,那么他就可以直接执行“crontab -e”去编辑自己的例行性命令了。当用户使用crontab这个命令来新建工作调度之后,该项工作就会被记录到/vart/spool/cron里面去了,而且是以帐号来作为判别的。

crontab命令的特殊字符:

  *   代表任何时刻都接受的意思

  ,    代表分隔时段的意思,举例:要执行工作3:00和6:00时,就是 0 3,6  *  *  * cdommand

  -    代表一段时间范围内,

  /n    即是第隔n单位间隔的意思

举例:*/5 * * * * command  即是每隔5分钟执行一次这个命令

 可能有时处于停机状态时,crontab命令就不能执行,这时就需要anacron来可唤醒停机期间的工作任务

  anacron 以天为单位或者在开机后立刻进行anacron的操作,它会去检测停机期间应该进行但是并没有进行的crontab任务,并将该任务执行一遍,然后anacron就会自动停止了。

   由于/etc/cron.daily内的任务比较多,因此我们使用每天进行的任务来解释一下anacron的运行情况好了。anacron若执行“anacron -scron.daily”时,它会这样运行的:

    1.由/etc/anacrontab分析到cron.daily这项工作名称的天数为1天;

    2.由/var/spool/anacron/cron.daily取出最近一次执行anacron的时间戳;

    3.由上个步骤与目前的时间比较,若差异天数为1天以上(含1天),就准备进行命令;

    4.若准备进行命令,根据/etc/anacrontab的设置将延迟65分钟;

    5.延迟时间过后,开始执行后续命令,即“run-parts /etc/cron.daily"这个命令;

    6.执行完毕后,anacron程序结束。

   现在你知道为什么隔了一阵子才将linux开机时,开机过后约1小时左右系统会有一小时段的忙碌,而且硬盘会跑个不停!那是因为anacron正在执行过去crontab未执行的各项工作调度。

  进程管理:

   jobs  -l

注:其实+代表最近被放到后台的工作号码,-代表最近最后第二个被放置到后台中的工作号码。而超过最后第三个以后的工作,就不会有+、-符号存在了!

工作状态是stopped,若工作状态为done,说明已经结束了,即便是最近没有+号,当你在执行一次jobs,就已经看不到该工作了。

  进程的执行顺序  

  priority与nice 

 

   PRI 值越低代表越优先,这个PRI的值是由内核动态调整的,用户无法直接调整PRI值,

   可通过Nice值,

   PRI(new)=PRI(old)+nice

  nice值可以调整的范围为-20—19;(root)

     普通用户调整的范围为0—19

  nice 是对即将执行的命令

   #用root给一个nice值为-5,用于执行vi,并查看该进程!

   [root@www ~]nice -n -5  vi  &

  renice  是对正在执行的执行

   renice [number] PID

   [root@www ~]renice 10  18625

 

  kill -signal PID

  可以帮我们将这个signal传送给某个工作(%jobnumber)或者是某个PID(直接输入数字。要再次强调的是:kill后面直接加数字与加上%jobnumber的情况是不同的!这个很重要。因为工作控制中有1号工作,但是PID1号则是专指“init”这个进程。你怎么可以将init关闭呢?关闭init,你的系统就死掉了啊!所以记得那个%是专门用在工作控制的。

     举例:如下图:用vim在后台运行,用jobs查看,并想通过kill 1来删除该工作号,发现并不能成功,会弹出说是不允许的操作,因为kill 1并不是杀掉1号工作,而是关闭init,即系统的主进程,当然是不允许的了。

应该用kill %1,就能正确关闭1号工作了。

 killall -signal   命令名称

  由于kill后面必须要加上PID(或者是jobnumer),所以,通常kill都会配合ps,pstre等命令,因为我们必须要找到相对应的那个进程的ID。但是,如此一来,很麻烦,可以直接用killall 其后直接跟命令名称,

    killall -1 httpd  可以让PID重新读取自己的配置文件,类似重新启动httpd服务

    也可以用 pkill  -1  httpd

  killall -9 httpd  强制终止所有以httpd启动的进程;

  killall -i  bash  依次询问每一个bash进程是否需要被终止进行。

 总之,要删除某个进程,我们可以使用PID或者启动该进程的命令名称,而如果要删除某个服务呢,最简单的方法就是利用killall,因为它可以将系统当中所有以某个命令名称启动的进程全部删除。

 


本文转自 刘园  51CTO博客,原文链接:http://blog.51cto.com/colynn/1011482


相关文章
|
28天前
|
Linux
百度搜索:蓝易云【Linux系统ps命令:查看正在运行的进程】
通过这些简洁的ps命令用法,你可以方便地查看Linux系统中正在运行的进程信息。
23 1
|
22小时前
|
Linux Shell
Linux 进程的前台/后台切换
当你用shell启动一个程序时,往往他是在前台工作的。程序会一直占用终端命令行,例如你在前台解压的时候必须等着,期间干不了别的事(除非另开一个终端)。 例如经常用连接到远程服务器执行脚本的时候,如果本地网络中断后,这个时候前台进程就结束了,比较的懊恼,必须重新执行。
14 6
|
2天前
|
Linux 数据安全/隐私保护
进程间通信之共享内存及其shm函数的使用【Linux】
进程间通信之共享内存及其shm函数的使用【Linux】
|
2天前
|
Java Linux Shell
进程的程序替换(exec函数)【Linux】
进程的程序替换(exec函数)【Linux】
|
2天前
|
Linux
进程等待(wait和wait函数)【Linux】
进程等待(wait和wait函数)【Linux】
|
12天前
|
关系型数据库 MySQL Linux
【Linux专题_04】Linux安装定时任务Cron
【Linux专题_04】Linux安装定时任务Cron
12 1
|
23天前
|
Linux Shell 数据库
Linux如何在一个 Crontab 中安排多个 Cron 作业?
Linux如何在一个 Crontab 中安排多个 Cron 作业?
29 1
|
25天前
|
NoSQL Unix Linux
Linux下的系统编程——守护进程、线程(十二)
Linux下的系统编程——守护进程、线程(十二)
12 0
Linux下的系统编程——守护进程、线程(十二)
|
25天前
|
消息中间件 Linux
Linux下的系统编程——进程间的通信(九)
Linux下的系统编程——进程间的通信(九)
30 1
Linux下的系统编程——进程间的通信(九)
|
25天前
|
Linux
Linux下的系统编程——进程的执行与回收(八)
Linux下的系统编程——进程的执行与回收(八)
28 1
Linux下的系统编程——进程的执行与回收(八)

热门文章

最新文章

相关产品

  • 云迁移中心