信号捕捉及计划任务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号捕捉及计划任务相关的知识,希望对你有一定的参考价值。

查看本机硬件设备信息

1.cat /proc/cpuinfo

2.lsusb

3. lspci

4 hal-device

 

stty –F /dev/console size 取文件大小

 

脚本编程知识点:

  1. 变量中字符的长度:${#VARNAME}

  2. 变量赋值等

  3. ${parameter:-word}; 如果 parameter为空或未定义,则变量展开为”word”,否则,展开为parameter的值。

[[email protected] ~]# A=3

[[email protected] ~]# echo ${A:-30}

3

[[email protected] ~]# echo ${B:-30}

30

 

 

  1. ${parameter:+word}; 如果parameter为空或未定义,不做任何操作;否则,展开为”word”

  2. ${parameter:=word}; 如果parameter 为空或未定义,则变量展开为”word”,并将展开的值给parameter

  3. ${parameter:offset}

  4. ${parameter:offset:lengt}:取子串,从offset处的最后一个字符开始,取lengt长的字串

[[email protected] ~]# A=‘hello world‘   从第2个字符开始向

[[email protected] ~]# echo ${A:2:3}  略过2个,再取后面3个字符

llo

/etc/rc.d/init.d 服务脚本

服务脚本支持配置文件:/etc/sysconfig服务脚本同名的配置文件

 

 

local VAR_NAME= 定义局部变量

mktemp命令,创建临时文件或者目录

mktemp /tmp/file.XXX  生成的随机数值当做文件名

mktemp –d创建临时目录

 

 

信号:

kill –SIGNAL PID

脚本中,能实现信号捕捉,但915无法捕捉

 

trap命令

 trapCOMMAND’信号列表

 

写一个脚本捕捉Crtl+c信号

#!/bin/bash

#

trap ‘echo "wuxiao.."‘  2

while :; do

date

sleep 2

done

 

在同一行里使用两个命令用;隔开

#!/bin/bash

#

NET=192.168.50

FILE1=`mktemp /tmp/file.XXX`

clearup () {

echo "quit"

exit 1

rm -f $FILE

}

 

trap ‘clearup‘ INT

 

for I in {99..254};do

 if  ping -c 1 -w 1 $NET.$I&>/dev/null; then

     echo "$NET.$I is up" | tee >> $FILE1

 else

     echo "$NET.$I is down"

  fi

done

~                

 

任务计划:

  1. 在未来的某个时间点执行一次某任务

at

at 时间

at>COMMAND

at>Ctrl+d

 

指定时间:

绝对时间HH:MM     DD.MM.YY  MM/DD/YY    10:20

相对时间 now+#minutes从现在开始#分钟以后,

        单位:minutes,hours,days,weeks

模糊时间:noon,midnight,teatime

编辑完命令以后使用ctrl+D来退出

命令的执行结果:将以邮件的形式发送给安排任务的用户

 

at -l =atq显示作业列表

at –d  #=atrm  # 删除第#个命令

/etc/at.allow白名单

/etc/at.denv 黑名单,卸载这个文件的用户不能使用at

batch

  自动选择系统较空闲的时候执行任务。使用方式和at相同

 

 

  1. 周期性地执行某任务

cron:自身是一个不间断运行的服务

anacron:cron的补充,能够实现让cron因为各种原因在过去的时间点该执行而未执行的任务在恢复正常后再执行一次

cron

   系统cron任务

      /etc/crontab

         分钟 小时 月周 用户 任务

   用户cron任务

   /var/spool/cron/USERNAME

       分钟 小时 任务

  时间的有效取值

  分钟:0-59

  小时:0-23

  天:1-31

  月:1-12

  周:0-7,07都表示周日

 

时间通配表示:

 *:对应所有有效取值

3 * * * * 每小时的第3分钟执行一次任务

3 * * * 7 每个星期天的每三分钟执行一次任务

13 12 * * * 每天的1213分执行一次

13 12 * * 5每周5 1213分执行一次

 ,:离开时间点:

10,40 * * * * 每个小时的10分和40分执行一次

10,40 * * * 2,5 每周2和周510分和40分执行一次

-:连续的时间点:

   10  02  *  * 1-5 每周1到周5210分执行一次

/#:对应取值范围内每多久一次

 */3 *   *   *  * 3分钟执行一次

每两小时执行一次:

01      */2  * *  *

 

执行结果将以邮件形式发送给管理员

*/3 * * * */bin/cat /etc/fstab &>/dev/null    命令使用绝对路径

 

cron的环境变量:cron执行得所有命令都去PATH环境变量指定的

路径下去找

PATH  /bin:/sbin:/user/bin:/usr/sbin

 

设定脚本时可以在脚本里定义环境变量

#!/bin/bash

export  PATH=

 

 

 

用户任务的管理:

crontab –l查看当前任务

crontab –e 编辑任务

crontab –r 移除所有任务

crontab –u USERNAME  -e:管理其用户的cron任务

 

[[email protected]~]# crontab -u admin -e

nocrontab for admin - using an empty one

crontab:installing new crontab

[[email protected]~]# ls /var/spool/cron/

admin

 

 

anacron :/etc/anacrontab

 

[[email protected]~]# cat /etc/anacrontab

#/etc/anacrontab: configuration file for anacron

 

# Seeanacron(8) and anacrontab(5) for details.

 

SHELL=/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# themaximal random delay added to the base delay of the jobs

RANDOM_DELAY=45

# thejobs will be started during the following hours only

START_HOURS_RANGE=3-22

 

#periodin days   delay in minutes   job-identifier   command

1        5       cron.daily                   nice run-parts/etc/cron.daily

7        25     cron.weekly               nice run-parts /etc/cron.weekly

@monthly45    cron.monthly            nice run-parts /etc/cron.monthly

第一个字段表示多少天没执行,第二个字段表示开机多少小时候执行,第三个字段是注释信息

第四个字是命令

 

 

 

 

一定要确保crond这个服务正在运行

[[email protected]~]# service crond status

crond(pid  1439) 正在运行...

anacron也是一定要保证服务正常运行

 

 

此服务也可以通过chkconfig 来管理

 

 


本文出自 “linux运维” 博客,谢绝转载!

以上是关于信号捕捉及计划任务的主要内容,如果未能解决你的问题,请参考以下文章

计划任务及服务管理

linux计划任务及压缩归档

Linux计划任务及压缩归档

进程管理工具及任务计划

2018年11月18日 at cronb计划任务及添加删除任务

讲清楚,说明白!计划任务crontab及企业实战应用