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)

linux脚本控制,linux控制脚本相关推荐

  1. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter16-脚本控制

    十六.脚本控制 Linux 利用信号与系统中的进程进行通信. 重温 Linux 信号 Linux 系统和应用程序可以产生超过 30 个信号.在 shell 脚本编程时会遇到的最常见的 Linux 系统 ...

  2. Linux shell 学习笔记(12)— linux 信号、后台运行脚本、作业控制、定时运行任务

    1. 处理信号 1.1 Linux 信号 常见的 Linux 信号如下表所示: 信号 值 描述 1 SIGHUP 挂起进程 2 SIGINT 终止进程 3 SIGQUIT 停止进程 9 SIGKILL ...

  3. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  4. shell脚本编程之控制脚本

    技术交流QQ群:1027579432,欢迎你的加入! 1.引言 目前为止,运行脚本的唯一方式是以实时模式在命令行界面上直接运行.但是,这并不是Linux上运行脚本的唯一方式. 2.处理信号量 Linu ...

  5. 黑客进阶必读书《Linux命令行与Shell脚本编程大全》(第2版)

    欢迎来到命令行和shell脚本编程的世界!厚厚的一本小样书,拿在手上,厚厚的一本,六百多页.不只是掂在手上的重量,更是一本优秀的初学者入门指南,又会是你的Linux书库中非常不错的参考书.如果你想从整 ...

  6. 查看linux中的sh指向哪,什么是Linux的Shell脚本和怎么执行脚本?

    1.什么是Shell?shell shell是外壳的意思,就是操做系统的外壳.咱们能够经过shell命令来操做和控制操做系统,好比Linux中的Shell命令就包括ls.cd.pwd等等.总结来讲,S ...

  7. linux 启动脚本 tty,Linux启动过程简介

    许多人对Linux的启动过程感到很神秘,因为所有的启动信息都在屏幕上一闪而过.其实, Linux的启动过程并不象启动信息所显示的那样复杂,它主要分成两个阶段: 1.启动内核.在这个阶段,内核装入内存并 ...

  8. Linux安装及服务控制

    Linux安装及服务控制 一.  版本 Red Hat 企业版   Red Hat Enterprise Linux (简称RHEL) http://www.redhat.com Fedora社区版 ...

  9. 手机控制linux电脑,通过Amora用symbian手机控制linux系统的电脑

    通过Amora用symbian手机控制linux系统的电脑 发布时间:2008-01-07 20:49:09来源:红联作者:Desktop 原文章地址http://yegle.net/2007/12/ ...

  10. linux脚本开机自动执行脚本文件,如何让linux开机自动执行sata里头的脚本文件

    基本步骤如下:1.创建包含sql命令的sql脚本文件文件中包含一些列的sql语句,每条语句最后以;结尾,文件内容示例如下:--创建表,使用"--"进行注释create table ...

最新文章

  1. 用户至上-阿里马马篇
  2. python写一个文件下载器_Python3使用TCP编写一个简易的文件下载器
  3. 基于Spring Boot + Dubbo的全链路日志追踪(一)
  4. mmap映射大于4g的文件_iOS文件内存映射——MMAP
  5. 【Linux 报错】com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The las
  6. wine运行exe程序只出现了一个黑色长方形
  7. Linux使用技巧15则
  8. python爬虫基础扫盲之HTTP以及HTTPS
  9. TV3是马来西亚第一家商营电视台
  10. Colourshell:给 shell 命令着色
  11. mac 查看端口的使用情况
  12. Java多线程系列---“基础篇”08之 join()
  13. 《Flume日志收集与MapReduce模式》一2.1 下载Flume
  14. Spring Boot电商项目54:订单模块三:【前台:订单详情】接口;
  15. unity3d技术摄像头跟随_unity 3d 中摄像头跟随人物移动总结
  16. STM32单片机串口空闲中断+DMA接收不定长数据
  17. VS2010能否取代VS6?微软能否再创辉煌!
  18. 计算机软件固定资产无形资产,该归入固定资产还是无形资产?
  19. 生活小技巧——WiFi密码忘了怎么办
  20. 公益创投丨“心探家”暑期研学营开始报名啦~邀您一起感知文化,感知内心

热门文章

  1. 计算一个全息图片的两个设想
  2. uC/OS-II源码分析(四)
  3. P1283 平板涂色
  4. Linux下安装jdk1.6
  5. ANDROID BITMAP内存限制OOM,OUT OF MEMORY
  6. 云计算时代的网络安全
  7. Exchange2007中创建和访问公用文件夹
  8. [C++再学习系列] 引用和指针
  9. 基于python的快速傅里叶变换FFT(一)
  10. KS003基于JSP和Servlet实现的商城系统