我在 Linux 服务器(如果添加任何信息,则为 ubuntu)中创建了我的第一个 init 脚本,该脚本每小时检查更新、下载并执行一次。init 文件如下:
/etc/init/updater.conf
start on (filesystem and stopped udevtrigger)
stop on runlevel [06]
console output
respawn
script
chvt 6
chvt 7
while true; do
# code to check update ...
if [ should_update ]; then
# Download the script
chmod +x /path/to/script.sh
bash /path/to/script.sh
rm /path/to/script.sh
fi
echo 'Rechecking for updates in 1h...'
sleep 1h
done
end script
下载的脚本启动如下:
脚本
#!/bin/bash
clear
exec > >(tee -i /var/log/update.log)
exec 2>&1
ScriptLoc=$(readlink -f "$0")
# check for root privilege
if [ "$(id -u)" != "0" ]; then
echo " This script must be run as root" 1>&2
echo
exit 1
fi
LOG_OUTPUT=/dev/tty4
(some_time_consuming_command 2>&1 > $LOG_OUTPUT) & spinner &!
预期的行为是,在 Linux 安装完成后,按下的按钮将添加到已完成的updater.conf
按钮/etc/init
,然后 Linux 在安装后重新启动并显示“您好,我将...”消息,然后像这样的微调器调整,[-]
同时将的输出重定向some_time_consuming_command
到 TTY4
但是,目前的行为是 Linux 重新启动时出现黑屏(TTY7),其中没有任何内容,当我切换到 TTY1 时,我看到:“您好,我将开始安装消息”。我不明白这种行为。
有人可以指导我实现预期的行为吗?
编辑:阅读了一点后,我发现 /dev/tty7 通常是默认设置,因为它链接了 /dev/console。我说得对吗?有人能解释一下为什么 TTY7 通常是默认设置吗?我是否希望将 init 输出显示到 /dev/console 而不是 /dev/tty7?