xak*_*p35 5 bash debian shell-script autostart
我有一台用于路由的 PC,它有 2 个网络接口并运行 Debian。我想给它添加一个声音,以表示它已启动并且没问题。
所以我创建了一些/etc/init.s/beep-startup
脚本,根据绝密LSByization 手册(不能停止它的命名,抱歉),其中(连同数百个 LSB 字符串)包含几个核心命令:
### BEGIN INIT INFO
# Provides: beep-startup
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: qwer
# Description: asdf
### END INIT INFO
case "$1" in
start)
#power chord + extreme uprising = fells like its clearly up and feeing good
beep -f 220 -l 100
beep -f 330 -l 100
beep -f 880 -l 100
;;
stop)
# power chord + slow chirp down, feels like low descending shutdown sound, right after ctrl+alt+del or /sbin/reboot
beep -f 440 -l 100
beep -f 330 -l 100
beep -f 220 -l 100
;;
*)
echo "Usage: sudo rm / -rf"
esac
Run Code Online (Sandbox Code Playgroud)
然后,当然,我碰到chmod +x
和update-rc.d beep-startup defaults
但现在的诀窍是,当我看到它在运行时,系统在启动过程中会发出实际的哔哔声,而不是在弹出登录提示时发出哔哔声。所以在哔哔声和登录提示之间有 2-3 秒。啁啾声和正确路由开始之间几乎 5-7 秒(4 核 * 2ghz + 4gb DDR3 ram,对于路由器来说不是很糟糕)关机蜂鸣声很有魅力,几乎立即发生,就在 ctrl+alt+del 组合之后,因为它应该确认“关闭序列已启动”。
我想beep
在它显示登录提示之前只是抒情的“纳秒” - 例如,在$all
和#everything
(或者不管你写什么 - 将保持精确)真的完成初始化并且系统准备好显示登录提示之后。如何创建一个自动运行脚本,该脚本在系统完成所有操作后立即执行,但就在显示登录提示之前?
附注。有点抱怨,但是.. 这是一个只有控制台的路由器,没有 xorg 或其他任何东西:唯一需要的用户是root
,它的大部分任务都与 root 相关。系统可以“初始化”、“运行”、“关闭”、“关闭”——不需要运行级别。在那种发行版中,Debian 是一个真正的垃圾,runlevelless Busybox init在这个意义上感觉非常“性感”。稍后我计划摆脱沉重的 Debian,转而使用类似 buildroot 的发行版。但这只会在生产中发生:只有在我稳定并弄清楚我需要什么软件之后。目前,我确实喜欢在开发和软件可用性测试阶段使用 apt 类型的“运行时”包添加可能性。到目前为止,我已经有了丰富的经验iptables
,shorewall
webmin
,当第一个阻塞第二个时,与阻塞 dnsmasq 一起,切断整个 WAN 连接,依此类推。我希望能找到更多用户友好的解决方案。现在的问题是关于“/etc/init.d
在启动和运行所有内容后运行脚本”
这里有很好的解决方案。解决方案 1:在 crontab 中创建一个 @reboot 条目来运行名为 /usr/local/bin/runonce 的脚本。
使用 mkdir -p 创建名为 /etc/local/runonce.d/ran 的目录结构。
创建脚本 /usr/local/bin/runonce 如下:
#!/bin/sh
for file in /etc/local/runonce.d/*
do
if [ ! -f "$file" ]
then
continue
fi
"$file"
mv "$file" "/etc/local/runonce.d/ran/$file.$(date +%Y%m%dT%H%M%S)"
logger -t runonce -p local3.info "$file"
done
Run Code Online (Sandbox Code Playgroud)
现在,将您想要在下次重新启动时运行的任何脚本(仅一次)放入目录 /etc/local/runonce.d 中,并适当地 chown 和 chmod +x 。运行后,您会发现它已移动到 ran 子目录,并且日期和时间附加到其名称中。您的系统日志中还会有一个条目
归功于 Dennis Williams https://serverfault.com/questions/148341/linux-schedule-command-to-run-once-after-reboot-runonce-equivalent
归档时间: |
|
查看次数: |
1647 次 |
最近记录: |