简要概述一下,我创建了一个脚本,该脚本会在 x 时间和 x 个周期后重新启动笔记本电脑。我已将该脚本添加到启动应用程序中,并且该脚本似乎在后台运行,但从未打开终端窗口。我遗漏了什么吗?
添加代码(保存在名为 countdown.sh 的文件中)
#!/bin/bash
# check if passed.txt exists if it does, send to soak test
if [ -f passed.txt ];
then
echo reboot has passed $nol cycles
sleep 5;
echo Starting soak tests
sleep 5;
rm testlog.txt;
rm passed.txt;
phoronix-test-suite run quick-test
exit 0;
fi
# check if file testlog.txt exists if not create it
if [ ! -f testlog.txt ];
then
echo >> testlog.txt;
fi
# read reboot file to see how many loops have been completed
exec < testlog.txt
nol=0
while read line
do
nol=`expr $nol + 1`
done
# start the countdown, x is time limit
let x=10;
while [ $x -gt 0 ];
do clear;
figlet "Rebooting in...";
figlet $x;
let x-=1;
sleep 1;
done;
echo reboot success $nol >> testlog.txt;
shutdown -r now;
# set how many times the script should shutdown the laptop
reboot_count=1
# if number of reboots matches nol's then stop the script
# create a new text file called passed.txt
if [ "$nol" == "$reboot_count" ];
then
echo reboot passed $nol cycles >> passed.txt;
fi
答案1
shell 脚本不会自动打开桌面上的窗口。如果您需要这样做,则必须包含代码来实现这一点。
更新 1
一种方法是使用Xdialog
。
sudo yum install Xdialog
请注意,您可能需要使用或apt-get install Xdialog
(或适合您的 Unix/Linux 发行版的包管理器的任何命令)进行安装。
中有例子 /usr/share/doc/xdialog*/samples
,下面是其中之一
使用此工具,您可以让后台脚本在系统控制台上显示消息(假设它正在运行 X 服务器)。您可能必须设置 DISPLAY 环境变量的值,以便程序知道应该在哪个屏幕上显示对话框。如果远程 PC 等运行 X 服务器(例如 Windows 上的 Xming),这也适用于它们。
以下是一个简单的例子
更新 2
注意:以上不是系统后台任务与用户通信的通常方式。通常我只是让任务将其消息写入日志文件(也许用于logger
写入系统日志),然后任何感兴趣的人都可以使用它tail -f logfilename
来查看后台进程的当前状态。
如果您需要提醒某人某项任务的完成情况,您可以向他们发送电子邮件或触发 SNMP 警报。