我的新浪微博:http://weibo.com/u/1602714773
CSDN博客:http://blog.csdn.net/hunterno4
Linux Shell笔记之脚本控制
上一篇 /
下一篇 2013-11-15 21:09:56
/ 个人分类:Linux
1.处理信号信号 值 描述1 SIGHUP 挂起进程2 SIGINT 终止进程3 SIGQUIT 停止进程9 SIGKILL 无条件终止进程15 SIGTERM 可能的话终止进程17 SIGSTOP 无条件停止进程,但不是终止进程18 SIGTSTP 停止或暂停进程,但不终止进程19 SIGCONT 继续运行停止的进程bash shell默认会忽略任何3和15的信号,但会处理收到的1和2信号2.产生信号1)终止进程Ctrl+C会产生信号2终止进程2)暂停进程Ctrl+Z会产生信号18停止进程# sleep 100[1]+ Stopped sleep 100# ps auUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 25186 0.0 0.0 3680 468 pts/1 T 04:16 0:00 sleep 100root 25240 0.0 0.0 4216 940 pts/1 R+ 04:19 0:00 ps auroot 26781 0.0 0.1 4620 1424 pts/2 Ss+ Nov09 0:00 bashshell中运行的每个进程称为作业,已停止的作业状态为T3.捕捉信号1)捕捉信号#!/bin/bashtrap "echo 'I have trapped Ctrl+C'" SIGINT SIGTERM trap后为""空则不显示信息,脚本不会被Ctrl+C终止count=1while [ $count -le 10 ]do echo "loop #$count" sleep 2 count=$[ $count + 1 ]done# ./trap loop #1loop #2loop #3loop #4I have trapped Ctrl+Cloop #52)捕捉脚本退出时的信号#!/bin/bashtrap "echo 'goodbye'" EXIT 捕捉EXIT信号3)移除捕捉#!/bin/bashtrap "echo 'goodbye'" EXITcount=1while [ $count -le 2 ]do echo "loop #$count" sleep 2 count=$[ $count + 1 ]donetrap - EXIT trap后加-号移除信号捕捉4.后台运行脚本
# ./trap & 加&符号后台运行,进程会话退出,后台进程也会退出[5] 30618 方括号内为作业号,之后为PID# nohup ./trap & 加nohup命令,即使退出终端,脚本也不会终止[5] 30725# nohup: appending output to `nohup.out' 脚本结束后生成nohup.out文件,包含标准输出信息5.作业控制1)查看作业# jobs -l选项显示PID及作业号[1] Stopped sleep 100 (wd: ~)[2] Stopped ./trap[3]- Stopped ./trap vi trap 带-号为下一个默认作业[4]+ Stopped ./trap 带+号会被当作默认作业2)重启停止的作业# bg 2 后台模式重启一个作业,作业号为2# fg 2 前台模式重启一个作业6.调整谦让度默认情况下,Shell启动的所有进程拥有相同的高度优先级优先级从-20(最高优先级)到20(最低优先级)1)nice# nice -n 10 ./trap > out.txt & nice命令在启动时调整优先级,普通用户只能降低优先级2) renice# ps alF UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND4 0 22854 22850 15 0 4620 1452 wait Ss pts/1 0:00 -bash0 0 26781 26770 16 0 4620 1424 - Ss+ pts/2 0:00 bash0 0 30927 22854 15 0 4440 1040 finish T pts/1 0:00 /bin/bash ./trap# renice 10 -p 26781renice只能对属于自己的进程执行renice,只能降低进程的优先级,root用户可以调整任何优先级7.定时任务1)cron时间表min hour dayofmonth month dayofweek command2)查看cron表$ crontab -l$ crontab -e 清加条目3)cron目录/etc目录下cron目录,脚本放于这些目录下就可定时执行cron.hourlycron.dailycron.weeklycron.monthlycron表中的作业当系统关机后,期间的作业再启动系统后不会运行4)anacron程序系统关机了,当再次启动后,anacron程序会尽快运行错过的计划好的作业anacron程序只处理cron目录中的程序,但不会处理/etc/cron.hourly的脚本anacron格式:period delay identifier commandperiod定义多久运行一次,单位天delay定义系统启动后多少分钟后开始运行错过的脚本$ cat anacrontab # /etc/anacrontab: configuration file for anacron# See anacron(8) and anacrontab(5) for details.SHELL=/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root1 65 cron.daily run-parts /etc/cron.daily7 70 cron.weekly run-parts /etc/cron.weekly30 75 cron.monthly run-parts /etc/cron.monthly8.开机自启动开机读取/etc/inittab文件开机脚本一般放于/etc/rc#.d目录,其中#为运行级别或者/etc/init.d目录本地开机文件Ubuntu /etc/rc.localdebian /etc/init.d/rc.localFedora /etc/rc.d/rc.local为系统中的每个用户运行一个脚本:/etc/bashrcinittab程序:格式 label:runlevel:action:process1)labelid 定义缺省init程序运行级别ca 按下“Ctrl+Alt+Delete”时运行的进程si 指定系统初始化进程pf UPS监控软件通知电源被切断时运行的进程pr 真正关闭系统前,UPS发出电源恢复信号时运行的进程2)runlevel 运行级别,可不指定3)actionwait init程序运行此程序一次,并等待运行结束才进入下一步ctrlaltdel 按下“Ctrl+Alt+Delete”时运行Process字段指定的值respawn 保证一直处于运行状态的进程,若进程终止,则重启进程4)process 运行的命令## inittab This file describes how the INIT process should set up# the system in a certain run-level.## Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org># Modified for RHS Linux by Marc Ewing and Donnie Barnes## Default runlevel. The runlevels used by RHS are:# 0 - halt (Do NOT set initdefault to this)# 1 - Single user mode# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)# 3 - Full multiuser mode# 4 - unused# 5 - X11# 6 - reboot (Do NOT set initdefault to this)# id:5:initdefault:# System initialization. 运行rc.sysinit进行系统初始化si::sysinit:/etc/rc.d/rc.sysinitl0:0:wait:/etc/rc.d/rc 0l1:1:wait:/etc/rc.d/rc 1l2:2:wait:/etc/rc.d/rc 2l3:3:wait:/etc/rc.d/rc 3l4:4:wait:/etc/rc.d/rc 4l5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 6# Trap CTRL-ALT-DELETE 按下“Ctrl+Alt+Delete”时关机ca::ctrlaltdel:/sbin/shutdown -t3 -r now# When our UPS tells us power has failed, assume we have a few minutes# of power left. Schedule a shutdown for 2 minutes from now.# This does, of course, assume you have powerd installed and your# UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"# If power was restored before the shutdown kicked in, cancel it. 取消关机pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"# Run gettys in standard runlevels 始终打开6个终端控制台1:2345:respawn:/sbin/mingetty tty12:2345:respawn:/sbin/mingetty tty23:2345:respawn:/sbin/mingetty tty34:2345:respawn:/sbin/mingetty tty45:2345:respawn:/sbin/mingetty tty56:2345:respawn:/sbin/mingetty tty6# Run xdm in runlevel 5x:5:respawn:/etc/X11/prefdm -nodaemon
收藏
举报
TAG:
信号
Linux
linux
定时任务
作业
开机自启动