linux - 如何执行 bash 3 分钟然后关闭机器
问题描述
我想在特定时间(使用 at 命令)运行 bash 3 分钟后,我想关闭机器
这是我的 bash 代码(send.sh):
$ x=10
echo The value of variable x = $x
这是我的
at
命令:
at 2:30 PM tomorrow
我应该写什么send.sh
运行3分钟然后关闭机器
解决方案
该timeout
命令可能是您正在寻找的。它会在指定的时间后向运行命令
发送信号。TERM
此外,您可以指定它将发送一个附加 KILL
信号,以防命令不愿对TERM
信号作出反应。
这是一个 sceleton 脚本,您可以根据自己的目的进行修改:
#!/bin/bash
{ sleep 180; echo shutdown; } &
timeout --verbose --kill-after 1 180 \
bash -c "trap 'echo TERM received, exiting gracefully!; exit' SIGTERM; while true; do sleep 1; echo Sending stuff...; done"
我的 while 循环的全部目的是模拟可能持续超过 3 分钟的事情。我添加了一个信号陷阱,一旦TERM
发送信号就会触发,以便让脚本有机会在时机成熟时优雅地退出。一旦您测试了脚本并且您对结果感到满意,请删除echo
前面的。shutdown
这是正在运行的脚本:
~/$ ./send.sh
Sending stuff...
Sending stuff...
(truncated)
Sending stuff...
timeout: sending signal TERM to command ‘bash’
shutdown
Terminated
TERM received, exiting gracefully!
推荐阅读
- java - Google Play 64 位要求
- android - 如何在有限的时间内添加 retryWhen()(例如仅重试 3 次)获取 IOException
- google-optimize - 我们如何在 Google 优化中运行两个 A/B 测试,但只让访问者进入其中一个 a/b 测试?
- sql-server - 将整数字段日期时间转换为日期时间
- ios - 如何在 iOS 中替换通知?
- javascript - 由于 MIME 类型错误,html 视图无法加载 css 样式
- c# - 显示没有服务器名称的相对链接的网站
- c++ - 直接访问基类中的受保护字段
- ruby - Ruby条件和定义?操作员奇怪的行为
- javascript - JavaScript 操作安全输入