信号捕捉及计划任务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号捕捉及计划任务相关的知识,希望对你有一定的参考价值。
查看本机硬件设备信息
1.cat /proc/cpuinfo
2.lsusb
3. lspci
4 hal-device
stty –F /dev/console size 取文件大小
脚本编程知识点:
变量中字符的长度:${#VARNAME}
变量赋值等
${parameter:-word}; 如果 parameter为空或未定义,则变量展开为”word”,否则,展开为parameter的值。
[[email protected] ~]# A=3
[[email protected] ~]# echo ${A:-30}
3
[[email protected] ~]# echo ${B:-30}
30
${parameter:+word}; 如果parameter为空或未定义,不做任何操作;否则,展开为”word”值
${parameter:=word}; 如果parameter 为空或未定义,则变量展开为”word”,并将展开的值给parameter
${parameter:offset}
${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
脚本中,能实现信号捕捉,但9和15无法捕捉
trap命令
trap‘COMMAND’信号列表
写一个脚本捕捉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
~
任务计划:
在未来的某个时间点执行一次某任务
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相同
周期性地执行某任务
cron:自身是一个不间断运行的服务
anacron:cron的补充,能够实现让cron因为各种原因在过去的时间点该执行而未执行的任务在恢复正常后再执行一次
cron
系统cron任务
/etc/crontab
分钟 小时 天 月周 用户 任务
用户cron任务
/var/spool/cron/USERNAME
分钟 小时 天 月 周 任务
时间的有效取值
分钟:0-59
小时:0-23
天:1-31
月:1-12
周:0-7,0和7都表示周日
时间通配表示:
*:对应所有有效取值
3 * * * * 每小时的第3分钟执行一次任务
3 * * * 7 每个星期天的每三分钟执行一次任务
13 12 * * * 每天的12点13分执行一次
13 12 * * 5每周5的 12点13分执行一次
,:离开时间点:
10,40 * * * * 每个小时的10分和40分执行一次
10,40 * * * 2,5 每周2和周5的10分和40分执行一次
-:连续的时间点:
10 02 * * 1-5 每周1到周5的2点10分执行一次
/#:对应取值范围内每多久一次
*/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运维” 博客,谢绝转载!
以上是关于信号捕捉及计划任务的主要内容,如果未能解决你的问题,请参考以下文章