linux关机触发脚本.docx

上传人:b****3 文档编号:6652614 上传时间:2023-05-10 格式:DOCX 页数:12 大小:22.15KB
下载 相关 举报
linux关机触发脚本.docx_第1页
第1页 / 共12页
linux关机触发脚本.docx_第2页
第2页 / 共12页
linux关机触发脚本.docx_第3页
第3页 / 共12页
linux关机触发脚本.docx_第4页
第4页 / 共12页
linux关机触发脚本.docx_第5页
第5页 / 共12页
linux关机触发脚本.docx_第6页
第6页 / 共12页
linux关机触发脚本.docx_第7页
第7页 / 共12页
linux关机触发脚本.docx_第8页
第8页 / 共12页
linux关机触发脚本.docx_第9页
第9页 / 共12页
linux关机触发脚本.docx_第10页
第10页 / 共12页
linux关机触发脚本.docx_第11页
第11页 / 共12页
linux关机触发脚本.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

linux关机触发脚本.docx

《linux关机触发脚本.docx》由会员分享,可在线阅读,更多相关《linux关机触发脚本.docx(12页珍藏版)》请在冰点文库上搜索。

linux关机触发脚本.docx

linux关机触发脚本

实现linux在关机或重启的时候执行某个任务。

  现在把实现过程描述如下:

 先写一个脚本放在/etc/rc.d/init.d下,chmod-f777 , 再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开头脚本同名的空文件名,如果没有就不去执行,所以要按照服务器脚本编写的规范,启动的时候要在/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* 

 

Linux关机过程:

init同样也用来控制系统关机或者重新启动,通过shutdown命令可以实现关机操 

作。

要立即关闭计算机,可以使用shutdown -h now命令,h代表的意思就是halt,也就 

是切断了电源,如果是重新启动,直接把h参数换成r就可以了:

shutdown -r now 

关机过程需要一些时间,这个过程中不应该手工切断电源或者按下reset键。

上面的 

例子里now参数表示的就是立即的意思,也有许多其他的参数可以选用,比如+n设定倒 

计时时间,n就是你想要的时间,这些都可以通过man shutdown了解一下。

 

举例说明,要使系统10分钟后重新起动:

shutdown -r +10 

在linux系统里,shutdown命令会通知已经登录进来的用户它即将关机,不过意义不 

大罢了。

如果定义了倒计时关机,shutdown命令会生成一个/etc/nologin文件,这个文 

件的存在能够阻止其他用户再进行登录操作,当然了,root用户除外。

 

在系统关机时,shutdown命令会告诉init程序转换到0运行级别,如果是重新启动则 

转换到第6运行级别。

当进入0或者6运行级别后,系统将会依照下面的顺序运行:

 

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,最后的命令是重新启动或者关闭内核程序

============================================

现在把实现过程描述如下:

 

  先写一个脚本放在/etc/rc.d/init.d下,chmod-f777,再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开头脚本同名的空文件名,如果没有就不去执行,所以要按照服务器脚本编写的规范,启动的时候要在/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

wget http:

//whatever/xxx.tar.gz

do_whatever

halt

当然halt要在root下执行才会有效果

发布于2012-10-22 添加评论 感谢 

分享

 收藏 • 没有帮助 • 举报 • 作者保留权利

0赞同反对,不会显示你的姓名

Belleve编程、JavaScript话题优秀回答者 炼金术士

补一个Powershell的

do-something;stop-computer

发布于2014-01-18 添加评论 感谢 

分享

 收藏 • 没有帮助 • 举报 • 作者保留权利

2赞同反对,不会显示你的姓名

匿名用户

2人赞同

Dosomething && halt

发布于2014-01-16 1条评论 感谢 

分享

 收藏 • 没有帮助 • 举报 • 作者保留权利

1赞同反对,不会显示你的姓名

匿名用户

1人赞同

shell就是把一组命令放在一个文件中按照特定模式执行,里面可出现循环变量替换,函数,case,逐条堆积,思路清晰先什么后什么,执行即可!

#!

/bin/sh

echo“…………”

echo“…………”

echo“…………”

if[$?

-eq0];then

do

echo“…………”

init0

done

…………………………………邪恶的分割线………………

补充如下:

上面是以前写的现在是这么写.人是要进步的.

#!

/bin/bash

#

if/bin/cptest1test2>/dev/null2>&1;then

init0

if

编辑于2015-11-19 3条评论 感谢 

分享

 收藏 • 没有帮助 • 举报 • 作者保留权利

0赞同反对,不会显示你的姓名

知乎用户 年轻人最重要的品质是不撸

#!

/bin/bash

cpfilelime

if[$?

-eq0];then#如果上面一个命令执行成功,则执行下面这个。

shutdown-pnow

fi

============================================

Linux下如何在特定时间执行特定任务

1仅执行一次的任务

2循环执行的任务

3可唤醒停机期间的工作任务

1 仅执行一次的任务

所需程序

atd服务

at命令

启动atd

#serviceatdrestart

atdstop/waiting

atdstart/running,process11031

千万注意要在root下执行,不然会提示Rejectedsendmessage.

at的使用

使用at的权限(因为安全性考虑最好设置)

在/etc/at.allow中设置可以使用at的账号

在/etc/at.deny中设置不可以使用at的账号

示例

1分钟后执行mkdir

$atnow+1minutes

warning:

commandswillbeexecutedusing/bin/sh

at>mkdirhelloAt

at>

job1atWedFeb614:

36:

002013

查看工作

#at-c2

#!

/bin/sh

#atrunuid=0gid=0

#...

$mkdirhelloAt

特定时间关机

$at14:

002013-2-9

warning:

commandswillbeexecutedusing/bin/sh

at>/bin/sync

at>/bin/sync

at>/sbin/shutdown-hnow

at>

job4atSatFeb914:

00:

002013

at如何执行

输入输出:

标准输入输出会重定向到mailbox里,所以执行echo"hello"在终端下是看不到的

后台工作:

系统会将at工作独立于shell,交给atd程序接管,即使关了shell也没关系

查询与删除at中的工作

查询:

atq

删除:

atrmjobid

batch:

和at相似,只是在cpu负载低时才执行

2 循环执行的任务

所需程序

crontab

权限限制

/etc/cron.allow

/etc/cron.deny

示例

$crontab-e#添加任务

进入编辑环境,使用vim编辑

格式:

#mhdommondowcommand

m:

minute,h:

hour,dom:

dayofmonth

mon:

month,dow:

dayofweek

任务示例:

05**1tar-zcf var/backups/home.tgz/home

*表示任何时间

$crontab-l#查询任务

$crontab-r#删除任务

3 可唤醒停机期间的工作任务

anacron:

crontab任务因为关机没有执行,anacron可以在开机时检测没有执行的crontab任务,都执行一遍

============================================

 Linux启动/关机时执行脚本 2011-06-1317:

48:

35

分类:

 LINUX

在.login中执行相应命令,或在.bashrc(用tcshshell,在.tcshrc)里写命令。

是不行的,.login是在用户登录时执行,用户可能在本地无需登录,或者在远程多个用户登录,多次登录;而.tcshrc是在shell启动时执行,登录后用户一般会多次打开shell,这样该命令或程序就会被多次执行。

Linux启动顺序:

1、BIOS自检

2、运行系统内核并检测硬件

3、运行系统的第一个进程init

4、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.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/mm

2.查看计算机运行级别,在文件/etc/inittab里看到id:

3:

initdefault:

,则此系统运行级别为3。

3.到/etc/rc3.d目录下,把你要执行的可执行文件做一个软连接,而且在命名的时候要以大写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/null2>&1 (此处把ls替换为你自己的内容)

  注意:

此处的顺序不能更改,否则达不到想要的效果。

此时先将标准输出重定向到/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,或拷贝或者直接软链接过来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/下创建脚本,要遵守servicescript的标准;

例如:

vi/etc/rc.d/init.d/gfs

#!

/bin/bash

#

case"$1"in

restart)

   echo"umount/data"

   umount/data

   echo"mount/data"

   touch/var/lock/subsys/gfs

   mount-tgfs2/dev/gfsvg/gfs/data

   ;;

start)

   echo"mount/data"

   touch/var/lock/subsys/gfs

   mount-tgfs2/dev/gfsvg/gfs/data

   ;;

stop)

   echo"umount/data"

   umount/data

   ;;

*)

   echo"Usage:

$0{restart|start|stop}"

   exit1

esac

exit1

2.修改执行脚本权限

chown-Rroot/etc/rc.d/init.d/gfs

chmod700/etc/rc.d/init.d/gfs

3.创建开机启动的符号连接(S是start的简写、代表启动、K是kill的简写、代表关闭。

数字代表启动的顺序)

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc0.d/S60gfs

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc1.d/S60gfs

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc2.d/S60gfs

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc3.d/S60gfs

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc4.d/S60gfs

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc5.d/S60gfs

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc6.d/S60gfs

4.创建关机执行

1)在/var/lock/subsys空文件

    touch/var/lock/subsys/gfs

2)创建关机符号连接

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc0.d/K60gfs

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc1.d/K60gfs

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc2.d/K60gfs

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc3.d/K60gfs

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc4.d/K60gfs

ln-s/etc/rc.d/init.d/gfs/etc/rc.d/rc5.d/K60gfs

ln-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-hnow立刻关机(root用户使用)4、shutdown-h1010分钟后自动关机如果是通过shutdown命令设置关机的话,可以用shutdown-c命令取消重启

重启命令:

1、reboot2、shutdown-rnow立刻重启(root用户使用)3、shutdown-r10过10分钟自动重启(root用户使用)  4、shutdown-r20:

35在时间为20:

35时候重启(root用户使用)如果是通过shutdown命令设置重启的话,可以用shutdown-c命令取消重启

下面我们来看看linux的这些具体的关机命令之间的区别和各自的用法

1.shutdown安全的关机命令

对于shutdown命令,它是大家都推荐的一个安全的命令,通过参数-h或-r的配合来完成关机或重启。

不过在linux系统中只有拥有root权限才可以使用这个命令。

所以,虽然大家都推荐用这个命令,但是这个命令用起来真的不太方便:

想要用这个命令吗?

先去获得root权限吧。

shutdown执行关机,是送信号给init,要求它改变运行级别,以此来关机。

关机或重启实际上是运行级别的调整,所以我们也可以用init直接调整运行级别来进行关机或重启。

使用这个命令时,机器立即关机或重启。

它也需要root权限。

那么为什么说shutdown命令是安全地将系统关机呢?

实际中有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。

因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失使系统处于不稳定的状态。

甚至在有的系统中会损坏硬件设备。

而在系统关机前使用shutdown命令,系统管理员会通知所有登录的用户系统将要关闭。

并且login指令会被冻结,即新的用户不能再登录。

直接关机或者延迟一定的时间才关机都是可能的,还有可能是重启。

这是由所有进程〔process〕都会收到系统所送达的信号〔signal〕决定的。

shutdown执行它的工作是送信号〔signal〕给init程序,要求它改变runlevel。

runlevel0被用来停机〔halt〕,runlevel6是用来重新激活〔reboot〕系统,而runlevel1则是被用来让系统进入管理工作可以进行的状态,这是预设的。

假定没有-h也没有-r参数给shutdown。

要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些动作?

你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。

shutdown参数说明:

[-t]在改变到其它runlevel之前,告诉init多久以后关机。

[-r]重启计算器。

[-k]并不真正关机,只是送警告信号给每位登录者〔login〕。

[-h]关机后关闭电源〔halt〕。

[-n]不用init而是自己来关机。

不鼓励使用这个选项,而且该选项所产生的后果往往不总是你所预期得到的。

[-c]cancelcurrentprocess取消目前正在执行的关机程序。

所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。

[-f]在重启计算器〔reboot〕时忽略fsck。

   [-F]在重启计算器〔reboot〕时强迫fsck。

[-time]设定关机〔shutdown〕前的时间。

     2.halt最简单的关机命令

用halt命令来关机时,实际调用的是shutdown-h。

halt执行时将杀死应用进程,执行sync系统调用文件系统写操作完成后就会停止内核。

halt参数说明:

[-n]防止sync系统调用,它用在用fsck修补根分区之后,以阻止内核用老版本的超级块〔superblock〕覆盖修补过的超级块。

[-w]并不是真正的重启或关机,只是写wtmp〔/var/log/wtmp〕纪录。

[-d]不写wtmp纪录〔已包含在选项[-n]中〕。

[-f]没有调用shutdown而强制关机或重启。

[-i]关机〔或重启〕前关掉所有的网络接口。

[-p]该选项为缺省选项。

就是关机时调用poweroff。

3.poweroff常用的关机命令

对于poweroff,网上说它是halt命令的链接,基本用法和halt差不多,这里就不多说了。

4.init

init是所有进程的祖先,他是Linux系统操作中不可缺少的程序之一。

它的进程号始终为1,所以发送TERM信号给init会终止所有的用户进程,守护进程等。

shutdown就是使用这种机制。

init定义了8个运行级别(runlevel),init0为关机,init1为重启。

5.reboot重启命令

reboot的工作过程差不多跟halt一样。

不过它是引发主机重启,而halt是关机。

它的参数与halt相差不多。

============================================

============================================

 

 

 

 

 

============================================

============================================

 

 

 

 

 

============

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2