linux控制脚本

1.处理信号

1  SIGUP  挂起进程
2 SIGINT 终止进程 (CTRL + C)
3 SIGQUIT 停止进程

9  SIGKILL 无条件终止进程
15 SIGTERM 可能的话终止进程
17 SIGSTOP 无条件停止进程,但不是终止
18 SIGTSTP 停止或暂停进程,但不终止进程(CTRL+Z)
19 SIGCONT 继续运行停止的进程

bash shell 会忽略3 和15 ,因为这样shell才不可能意外的终止
ps -au 查看运行的进程 ,jobs 查看作业

master@master:~/shell/command$ ./test1
this is the begin
^Z
[2]+  已停止               ./test1
master@master:~/shell/command$ jobs
[1]-  已停止               ./test1
[2]+  已停止               ./test1

2.捕捉信息

trap command signals

master@master:~/shell/command$ ./test2
this is a test program
loop # 1
loop # 2
^Csorry I have trapped CTRL-C
loop # 3
^Csorry I have trapped CTRL-C
loop # 4
^Csorry I have trapped CTRL-C
loop # 5
^Csorry I have trapped CTRL-C
loop # 6
^Csorry I have trapped CTRL-C
loop # 7
loop # 8
loop # 9
loop # 10
this is the end of the test program
master@master:~/shell/command$ cat test2
#!/bin/bash

trap " echo 'sorry I have trapped CTRL-C'" SIGINT SIGTERM

echo this is a test program
count=1
while [ $count -le 10 ]
do
    echo "loop # $count"
    sleep 5
    count=$[ $count + 1 ]
done
echo this is the end of the test program

捕捉脚本的退出

aster@master:~/shell/command$ ./test3
this is a test program
loop # 1
loop # 2
loop # 3
this is the end of the test program
bye
master@master:~/shell/command$ cat test3
#!/bin/bash

trap " echo bye" EXIT 

echo this is a test program
count=1
while [ $count -le 3 ]
do
    echo "loop # $count"
    sleep 5
    count=$[ $count + 1 ]
done
echo this is the end of the test program

移除捕捉
trap - 信号(EXIT)

3.在后台模式运行脚本

脚本后加 & 但是程序会绑定到终端进程中,如果终端退出了,进程也会退出。
用nohup 命令可以让进程一直在后台运行,直到结束。

4.查看作业 jobs

master@master:~/shell/command$ jobs -l
[1]-  2499 停止                  ./test1
[2]+  2512 停止                  ./test1

-l    列出进程的PID以及作业号
-n    只列出上次shell发出的通知后改变了状态的作业。
-p   只列出作业的PID
-r   只列出运行中的作业
-s   只列出已停止的作业

注意:带加号的作业会被当成默认的作业,减号作业表示下一个默认作业。

5.重新启动停止的进程bg(后台) fg(前台)

master@master:~/shell/command$ bg 2
[2]+ ./test1 &
master@master:~/shell/command$ jobs
[2]+  运行中               ./test1 &

6.调整谦让度

优先级从-20 到 +20(低优先级)
nice -n 10 ./test4 > testout &
注意; linux 会阻止普通用户调整更高的优先级
重新调整优先级
renice 10 -p 29801


7.定时运行作业 at cron

(1)at 在某个时间运行脚本
at [ -f filename ] time
at -f test5 11:39

没有屏幕会关联到该作业,默认会发送到邮件中
列出等待的作业 atq
删除等待的作业 atrm 59

(2)计划定时执行脚本 cron

时间格式:
min hour dayofmonth month dayof week command
如每个月的第一天执行
00 12 1 * * command
每周一4:15执行
15 16 * * 1 command
每个月的最后一天
00 12 1 * * * if  [ `date +d -d tomorrow` = 01 ] ; then ;command
1.『*』 匹配任意时间。(1 * * * * *  command 代表每月,每周,每日,每时的第一分钟都执行command)
2.『,』  列举时间点。(1,2,3  * * * *  command 代表每月,每周,每日,每时的第1,2,3分钟执行command)
3.『-』  列举时间段。( 1-4 * * * *  command 代表每月,每周,每日,每时的从第一分钟到第四分钟都执行command)
4.『/n』 每隔n个单位间隔。(*/5 * * * *  command 代表每隔5分钟执行一次command。注意是*/5,不是/5)

crontab基本命令

crontab  -e  编辑该用户的crontab,当指定crontab  不存在时新建。
crontab  -l  列出该用户的crontab。
crontab  -r  删除该用户的crontab。
crontab  -u <用户名称>  指定要设定crontab的用户名称。
crontab –v 显示上一次编辑的时间(只在某些操作系统上可用)

实战

编辑crontab模式
1.使用crontab -e 命令。这种是针对一般用户指定自己的命令。
2.直接编辑/etc/crontab ,指定系统的例行性任务。
查看
master@master:/tmp$ cat test.txt 
good
master@master:/tmp$ cat test.txt 

crontab日志

(centos默认情况下,crontab中执行的日志写在/var/log下#ls /var/log/cron*/var/log/cron /var/log/cron.1 /var/log/cron.2 /var/log/cron.3 /var/log/cron.4)
crontab的日志默认是关闭的。因为crontab所有的错误和输出都会发送给使用用户的mail里去。这个mail不是真正的email而是指/var/spool/mail,如果你是用的root来执行命令,那么就在/var/spool/mail/root下。
1.找到/etc/rsyslog.d/50-default.conf文件;
2.找到有#cron那行,去掉#;
3.重启rsyslog
root@ubuntu:~# vi /etc/rsyslog.d/50-default.conf 
#  Default rules for rsyslog.  
#  
#                       For more information see rsyslog.conf(5) and /etc/rsyslog.conf  
  
#  
# First some standard log files.  Log by facility.  
#  
auth,authpriv.*                 /var/log/auth.log  
*.*;auth,authpriv.none          -/var/log/syslog  
#cron.*                          /var/log/cron.log  
daemon.*                        -/var/log/daemon.log  
kern.*                          -/var/log/kern.log  
lpr.*                           -/var/log/lpr.log  
mail.*                          -/var/log/mail.log  
user.*                          -/var/log/user.log  
  
  
#  
# Logging for the mail system.  Split it up so that  
# it is easy to write scripts to parse these files.  
#  

root@ubuntu:~# /etc/init.d/rsyslog restart  

查看

root@ubuntu:~# cat /var/log/cron.log  
Mar  6 22:07:01 ubuntu CRON[5793]: (root) CMD (php /var/www/nginx-default/test/crontab.php)  
Mar  6 22:07:01 ubuntu CRON[5794]: (root) CMD (echo "good">>/tmp/test.txt)  
Mar  6 22:08:01 ubuntu CRON[5814]: (root) CMD (echo "good">>/tmp/test.txt)  
Mar  6 22:08:01 ubuntu CRON[5815]: (root) CMD (php /var/www/nginx-default/test/crontab.php)  
Mar  6 22:08:30 ubuntu cron[5827]: (CRON) DEATH (can't lock /var/run/crond.pid, otherpid may be 4414: Resource temporarily unavailable)  
Mar  6 22:09:01 ubuntu CRON[5843]: (root) CMD (php /var/www/nginx-default/test/crontab.php)  
Mar  6 22:09:01 ubuntu CRON[5844]: (root) CMD (echo "good">>/tmp/test.txt)  
Mar  6 22:09:01 ubuntu CRON[5845]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm)  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • 进程相关概念系统进程管理工具任务计划 一、进程相关概念 定义:进程(Process)是运行中的程序的一个副本,是被...
    哈喽别样阅读 554评论 0 0
  • 进程相关概念 内核的功能 进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等。 process 进程,正...
    夹克K阅读 992评论 0 1
  • Linux定时任务Crontab命令详解 linux 系统则是由 cron (crond) 这个系统服务来控制的。...
    孙燕超阅读 1,815评论 0 4
  • 前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (cro...
    Zcclucky阅读 571评论 0 0
  • Linux定时任务Crontab命令详解linux 系统则是由 cron (crond) 这个系统服务来控制的。L...
    时待吾阅读 387评论 0 0