Linux定时关机

一. 关机流程
Linux 运作时, 不可以直接将电源关闭, 否则, 可能会损毁档案系统, 因此, 必须按照正常的程序关机:
使用正确的 shutdown 指令, 进行关机,shutdown 以一种安全的方式关闭主机系统.
它会通知所有已登入的user, 主机即将关闭, 并且会将登入(login)的活动予以冻结.

shutdown 允许你:

1. 选择关机、重新开机或进入单人操成模式
2. 设定关机时间:
a. 可以设定成现在立刻关机
b. 可以设定某一个特定的时间,
3. 可以自订关机之前, 传送给线上 user 的警告讯息
4. 可以只送警讯息, 作势吓吓user, 但却不是真的要关机. 因为, 有时, 你可能想要做一些试验, 不想有其它 user 扰.
5. 可以选择是否要 fsck 检查档案系统

当 shutdown 开始执行後, 系统会以 SIGTERM 讯号通知所有的行程(processes), 主机即将关闭.
这么做是必要的, 因为, 如此一来, 一些在执行中的程式, 才能即时存档、清除暂存档或将仍在记忆体中的资料赶快写入硬碟中(flush).

shutdown 以讯号通知 init, 要求 init 要切换 runlevel, 来达成上述目的.

如果是关机(halt), 则切换到 runlevel 0;
若是重新开机(reboot), 则切换到 runlevel 6;
若是单人模式(single), 则切换到 runlevel 1.

然後就交给相关 runlevel 中的 script档, 完成最後的关机事项.

若欲知各 runlevel 的定义情形, 可参考 /etc/inittab.

二. 关机指令.

01/sbin/shutdown [-t 秒数] [-rkhncfF] 时间 [警告讯息]
02 
03-t # : 设定在切换至不同的runlevel之前, 警告和删除二讯号之间的延迟时间(秒).
04-k # : 仅送出警告讯息文字, 但不是真的要 shutdown.
05-r # : shutdown 之後重新开机.
06-h # : shutdown 之後关机.
07-n # : 不经过 init , 由 shutdown 指令本身来做关机动作.(不建议你用)
08-f # : 重新开机时, 跳过 fsck 指令, 不检查档案系统.
09-F # : 重新开机时, 强迫做 fsck 检查.
10-c # : 将已经正在 shutdown 的动作取消.

例子:

1shutdown -r now     # 立刻重新开机
2shutdown -h now     # 立刻关机
3shutdown -k now     # 'Hey! Go away! now....' 发出警告讯息, 但没有真的关机
4shutdown -t3 -r now # 立刻重新开机, 但在警告和删除processes 之间, 延迟3秒钟.
5shutdown -h 10:42   # 'Hey! Go away!' 10:42 分关机
6shutdown -r 10      # 'Hey! Go away!' 10 分钟後关机
7shutdown -c         # 将刚才下的 shutdown 指令取消,必须切换至其它tty, 登入之後, 才能下此一指令.
8shutdown now        # 切换至单人操作模式(不加任何选项时)

注意事项:

时间参数务必要加: 不是用 now (now 其实就是 0 的意思), 便是用 hh:mm 或 mm

不加任何选项的话, 会进入 runlevel 1, 即单人操作模式.

——————————————————————————–

关机命令如下:
第一种是将关机作为一种任务,每天自动执行;
第二种是若干小时后关机;

第一种方法:

用crontab命令就可以了,下面看一下它的详细用法。
名称 : crontab
使用权限 : 所有使用者
使用方式 : crontab [ -u user ] file crontab [ -u user ] { -l | -r | -e }
说明 : crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
-e : 编辑,执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r : 删除目前的时程表
-l : 列出目前的已经设置的列表,格式如下:f1 f2 f3 f4 f5 program 其中f1/f2/f3/f4/f5 分别表示分钟/小时/一个月的第几日/月/一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,

当 f2 为 * 时表示每小时都要执行程序,其馀类推.
当 f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推

使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
例子 : 每月每天每小时的第 0 分钟执行一次

1# program: /bin/ls
20 * * * * /bin/ls

在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次/usr/bin/backup :

10 6-12/3 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信给 alex@domain.name :

10 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata

每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"

120 0-23/2 * * * echo "haha"

注意 : 当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上

1> /dev/null 2>&1

即可

详细参考:http://blog.hexu.org/archives/545.shtml

第二种方法:

使用shutdown定时关机的问题

01shutdown: invalid option -- -
02Usage: shutdown [-akrhfnc] [-t secs] time [warning message]
03-a: use /etc/shutdown.allow
04-k: don't really shutdown, only warn.
05-r: reboot after shutdown.
06-h: halt after shutdown.
07-f: do 'fast' reboot (skip fsck).
08-F: Force fsck on reboot.
09-n: do not go through "init" but go down real fast.
10-c: cancel a running shutdown.
11-t secs: delay between warning and kill signal.
12** the "time" argument is mandatory! (try "now") **

PS:我是这样的shutdown -t 54000 就是运行15小时后自动关机

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值