linux关机触发脚本重点讲义_第1页
linux关机触发脚本重点讲义_第2页
linux关机触发脚本重点讲义_第3页
linux关机触发脚本重点讲义_第4页
linux关机触发脚本重点讲义_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实现linux在关机或重启的时候执行某个任务。   现在把实现过程描述如下:  先写一个脚本放在/etc/rc.d/init.d下,chmod -f 777  , 再ln -s 到 /etc/rc.d/rc0.d/K01脚本名 与 /etc/rc.d/rc6.d/K01脚本名,同时也要 ln -s 到 /etc/rc.d/rc3.d/S99脚本名 与/etc/rc.d/rc5.d/S99脚本名。  K开头的代表系统关闭的时候执行,S开头的代表开机的时候执行。注意服务器脚本编写的规范,因为有K开通的软链接并不一定会在关机的时候自动去执行

2、,这是为什么呢?刚开始一直没搞明白,后来从网上看到,执行K脚本的时候会查询/var/lock/subsys/下是否有与K开头脚本同名的空文件名,如果没有就不去执行,所以要按照服务器脚本编写的规范,启动的时候要在/var/lock/subsys/先touch一个与K01后面同名的空文件.同时也要调用/etc/rc.d/init.d/functions能够接受star与stop命令信号,具体可以参考/etc/rc.d/rc文件,本人是在/etc/rc.d/rc0.d/K01yum基础上改写实现的/etc/rc0.d 包含关机脚本K* /etc/rc6.d 包含重启脚本K* &#

3、160;Linux关机过程:init同样也用来控制系统关机或者重新启动,通过shutdown命令可以实现关机操 作。要立即关闭计算机,可以使用shutdown   -h   now命令,h代表的意思就是halt,也就 是切断了电源,如果是重新启动,直接把h参数换成r就可以了:shutdown   -r   now 关机过程需要一些时间,这个过程中不应该手工切断电源或者按下reset键。上面的 例子里now参数表示的就是立即的意思,也有许多其他的参数可以选用,比如+n设定倒 计时时间,n就是你想要的时间,这

4、些都可以通过man   shutdown了解一下。 举例说明,要使系统10分钟后重新起动:shutdown   -r   +10 在linux系统里,shutdown命令会通知已经登录进来的用户它即将关机,不过意义不 大罢了。如果定义了倒计时关机,shutdown命令会生成一个/etc/nologin文件,这个文 件的存在能够阻止其他用户再进行登录操作,当然了,root用户除外。 在系统关机时,shutdown命令会告诉init程序转换到0运行级别,如果是重新启动则 转换到第6运行级别。当进入0或者6运行

5、级别后,系统将会依照下面的顺序运行: 1,init关闭所有它能关闭的进程(转换到其他运行级别也一样) 2,rc0.d/rc6.d目录下的第一个命令开始运行,锁定系统文件为关机作准备 3,rc0.d/rc6.d目录下的第二个命令运行,卸载除根文件系统以外的所有文件系统( 如挂载的windows分区) 4,rc0.d/rc6.d中的命令将把根文件系统重新挂载为只读属性 5,rc0.d/rc6.d中的命令调用sync程序把缓存中的数据写入文件系统 6,最后的命令是重新启动或者关闭内核程序=现在把实现过程描述如下: 先写一

6、个脚本放在/etc/rc.d/init.d下,chmod -f 777 , 再ln -s 到 /etc/rc.d/rc0.d/K01脚本名 与 /etc/rc.d/rc6.d/K01脚本名,同时也要 ln -s 到 /etc/rc.d/rc3.d/S99脚本名 与/etc/rc.d/rc5.d/S99脚本名。 K开头的代表系统关闭的时候执行,S开头的代表开机的时候执行。注意服务器脚本编写的规范,因为有K开通的软链接并不一定会在关机的时候自动去执行,这是为什么呢?刚开始一直没搞明白,后来从网上看到,执行K脚本的时候会查询/var/lock/subsys/下是否有与K开头脚本同名的空文件

7、名,如果没有就不去执行,所以要按照服务器脚本编写的规范,启动的时候要在/var/lock/subsys/先touch一个与K01后面同名的空文件.同时也要调用/etc/rc.d/init.d/functions能够接受star与stop命令信号,具体可以参考/etc/rc.d/rc文件,本人是在/etc/rc.d/rc0.d/K01yum基础上改写实现的。=shell如何在完成某项任务后执行某个动作?如传输文件完成后关机。添加评论分享默认排序按时间排序5 个回答2赞同反对,不会显示你的姓名王滨 Python, 2人赞同直接在脚本里加上halt就好了比如#!/bin/bash

8、wget http:/whatever/xxx.tar.gzdo_whateverhalt当然halt要在root下执行才会有效果发布于 2012-10-22 添加评论 感谢 分享 收藏  没有帮助  举报  作者保留权利0赞同反对,不会显示你的姓名Belleve编程、JavaScript话题优秀回答者 炼金术士补一个 Powershell 的do-something; stop-computer发布于 2014-01-18 添加评论 感谢 分享

9、 收藏  没有帮助  举报  作者保留权利2赞同反对,不会显示你的姓名匿名用户2人赞同Do something &&halt发布于 2014-01-16 1 条评论 感谢 分享 收藏  没有帮助  举报  作者保留权利1赞同反对,不会显示你的姓名匿名用户1人赞同shell就是把一组命令放在一个文件中按照特定模式执行,里面可出现循环变量替换,函数,case,逐条堆积,思路清晰先什么后什么,执行即可!#!/bin/

10、shecho “”echo “”echo “”if $? -eq 0 ;thendoecho “”init 0done邪恶的分割线补充如下:上面是以前写的现在是这么写.人是要进步的.#!/bin/bash#if /bin/cp test1 test2 >/dev/null 2>&1;theninit 0if编辑于 2015-11-19 3 条评论 感谢 分享 收藏  没有帮助  举报  作者保留权利0赞同反对,不会显示你的姓名知乎用户 年轻人最重要的品质是不撸#!/

11、bin/bashcp filelimeif $? -eq 0 ;then #如果上面一个命令执行成功,则执行下面这个。shutdown -p nowfi=Linux下如何在特定时间执行特定任务1 仅执行一次的任务2 循环执行的任务3 可唤醒停机期间的工作任务1 仅执行一次的任务所需程序atd服务at命令启动atd# service atd restartatd stop/waitingatd start/running, process 11031千万注意要在root下执行,不然会提示Rejected send message.at的使用使用at的权限(因为安全性考虑最好设置)在/e

12、tc/at.allow中设置可以使用at的账号在/etc/at.deny中设置不可以使用at的账号示例1分钟后执行mkdir$ at now + 1 minuteswarning: commands will be executed using /bin/shat> mkdir helloAtat> <EOT>job 1 at Wed Feb 6 14:36:00 2013查看工作# at -c 2#!/bin/sh# atrun uid=0 gid=0# .$ mkdir helloAt特定时间关机$ at 14:00 2013-2-9warning: command

13、s will be executed using /bin/shat> /bin/syncat> /bin/syncat> /sbin/shutdown -h nowat> <EOT>job 4 at Sat Feb 9 14:00:00 2013at如何执行输入输出:标准输入输出会重定向到mailbox里,所以执行echo "hello"在终端下是看不到的后台工作:系统会将at工作独立于shell,交给atd程序接管,即使关了shell也没关系查询与删除at中的工作查询:atq删除:atrm jobidbatch:和at相似,只是在cp

14、u负载低时才执行2 循环执行的任务所需程序crontab权限限制/etc/cron.allow/etc/cron.deny示例$ crontab -e #添加任务进入编辑环境,使用vim编辑格式:# m h dom mon dow commandm:minute, h:hour, dom:day of monthmon:month, dow:day of week任务示例:0 5 * * 1 tar -zcf var/backups/home.tgz /home*表示任何时间$ crontab -l #查询任务$ crontab -r #删除任务3 可唤醒停机期间

15、的工作任务anacron:crontab任务因为关机没有执行,anacron可以在开机时检测没有执行的crontab任务,都执行一遍= Linux启动/关机时执行脚本 2011-06-13 17:48:35分类: LINUX在.login中执行相应命令,或在.bashrc(用tcsh shell,在.tcshrc)里写命令。是不行的,.login是在用户登录时执行,用户可能在本地无需登录,或者在远程多个用户登录,多次登录;而.tcshrc是在shell启动时执行,登录后用户一般会多次打开shell,这样该命令或程序就会被多次执行。Linux 启动顺序:1、 BIO

16、S自检2、 运行系统内核并检测硬件3、 运行系统的第一个进程init4、 init读取系统引导配置文件/etc/inittab中的信息进行初始化/etc/rc.d/rc.sysinit-系统初始化脚本/etc/rc.d/rcX.d/KS*-根据运行级别配置服务/etc/rc.d/rc.local-执行本地特殊配置其它-不同运行级别的特殊服务Linux启动运行init程序来启动相关程序初始化,与启动相关的一个概念是运行级,运行级是操作系统当前运行的级别,在不同运行级别上可以定义属于该运行级的启动程序,系统的运行级别可以在/etc/inittab文件指定,与运行级相关运行程序通过从源/etc/rc

17、.d/init.d下链接到目的/etc/rcX.d,这里X为系统的默认运行级别,因此,默认的启动脚本放在/etc/rc.d/init.d下。事例,任务在启动时运行mm:方法:1. 建立自启动脚本/etc/rc.d/init.d/mm,内容为:#!/bin/bash/usr/local/bin/*  (注:此内容替换为你想执行的命令)设置文件的属性为可执行:#chmod +x /etc/rc.d/init.d/mm2. 查看计算机运行级别,在文件/etc/inittab里看到id:3:initdefault:,则此系统运行级别为3。3. 到/etc/rc3.d目录下,把你要执行的可执行

18、文件做一个软连接,而且在命名的时候要以大写S字母开头,S之后的数字大小代表执行顺序的先后,数字越大越靠后执行。#ln -s /etc/rc.d/init.d/mm /etc/rc3.d/S100mm#ln -s /etc/rc.d/init.d/mm /etc/rc0.d/K20mm关机执行脚本: 1. vi /etc/init.d/mm      #!/bin/bash     ls >/dev/null 2>&1  (此处把ls替换为你自己的内容)注意:此处的顺

19、序不能更改,否则达不到想要的效果。此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null。 2. chmod +x /etc/init.d/mm 3. ln -s /etc/init.d/mm  /etc/rc6.d/K01mm /var/lock/subsys/ 4. 当你在关机时一切在悄无声息的进行着。注:(1)本人在实验时,做关机运行脚本不成功解决方法。是在 /var/lock/subsys/中建立相同的文件mm,或拷贝或者直接软链接过来

20、 ln -s /etc/init.d/mm /var/lock/subsys/   。    (2)若在字符界面下只设置开机启动,只在rc3.d目录下链接S100filename便可。           如:ln -s /etc/init.d/filename  /etc/rc3.d/S100filename=1. 在/etc/rc.d/init.d/下创建脚本,要遵守service script的标准;例如:vi

21、 /etc/rc.d/init.d/gfs#!/bin/bash#case "$1" inrestart)    echo "umount /data"    umount /data    echo "mount /data"    touch /var/lock/subsys/gfs    mount -t gfs2 /dev/gfsvg/gfs /data  &

22、#160; ;start)    echo "mount /data"    touch /var/lock/subsys/gfs    mount -t gfs2 /dev/gfsvg/gfs /data    ;stop)    echo "umount /data"    umount /data    ;*)  

23、0; echo "Usage: $0 restart|start|stop"    exit 1esacexit 12. 修改执行脚本权限chown -R root /etc/rc.d/init.d/gfschmod 700 /etc/rc.d/init.d/gfs3. 创建开机启动的符号连接(S 是start的简写、代表启动、K是kill的简写、代表关闭。数字代表启动的顺序)ln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc0.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d

24、/rc1.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc2.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc3.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc4.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc5.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc6.d/S60gfs4. 创建关机执行1) 在/var/lock/subsys空文件 

25、0;   touch /var/lock/subsys/gfs2) 创建关机符号连接ln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc0.d/K60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc1.d/K60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc2.d/K60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc3.d/K60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc4.d/K60gfsln

26、-s /etc/rc.d/init.d/gfs /etc/rc.d/rc5.d/K60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc6.d/K60gfs=linux下常用的关机命令有:shutdown、halt、poweroff、init;重启命令有:reboot。下面本文就主要介绍一些常用的关机命令以及各种关机命令之间的区别和具体用法。首先来看一下linux下比较常用的一些关机命令关机命令:1、halt   立刻关机 2、poweroff  立刻关机 3、shutdown -h now 立刻关机(root用户使用) 4、sh

27、utdown -h 10 10分钟后自动关机 如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启重启命令:1、reboot 2、shutdown -r now 立刻重启(root用户使用) 3、shutdown -r 10 过10分钟自动重启(root用户使用)  4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用) 如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启下面我们来看看linux的这些具体的关机命令之间的区别和各自的用法1.shutdown 安全的关机命令对于s

28、hutdown命令,它是大家都推荐的一个安全的命令,通过参数-h或-r的配合来完成关机或重启。不过在linux系统中只有拥有root权限才可以使用这个命令。所以,虽然大家都推荐用这个命令,但是这个命令用起来真的不太方便:想要用这个命令吗?先去获得root权限吧。shutdown执行关机,是送信号给init,要求它改变运行级别,以此来关机。关机或重启实际上是运行级别的调整,所以我们也可以用init直接调整运行级别来进行关机或重启。使用这个命令时,机器立即关机或重启。它也需要root权限。那么为什么说shutdown命令是安全地将系统关机呢?实际中有些用户会使用直接断掉电源的方式来关闭linux,

29、这是十分危险的。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失使系统处于不稳定的状态。甚至在有的系统中会损坏硬件设备。而在系统关机前使用shutdown命令,系统管理员会通知所有登录的用户系统将要关闭。并且login指令会被冻结,即新的用户不能再登录。直接关机或者延迟一定的时间才关机都是可能的,还有可能是重启。这是由所有进程process都会收到系统所送达的信号signal决定的。shutdown执行它的工作是送信号signal给init程序,要求它改变 runlevel。runlevel 0 被用来停机halt,runlevel 6 是用来重新激活reboot系统,而 runlevel 1则是被用来让系统进入管理工作可以进行的状态,这是预设的。假定没有-h也没有-r参数给shutdown。要想了解在停机halt或者重新开机reboot过程中做了哪些动作?你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论