重启后 Bash 脚本不会在终端中打开

重启后 Bash 脚本不会在终端中打开

简要概述一下,我创建了一个脚本,该脚本会在 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),这也适用于它们。

以下是一个简单的例子

Xdialog 测试


更新 2

注意:以上不是系统后台任务与用户通信的通常方式。通常我只是让任务将其消息写入日志文件(也许用于logger写入系统日志),然后任何感兴趣的人都可以使用它tail -f logfilename来查看后台进程的当前状态。

如果您需要提醒某人某项任务的完成情况,您可以向他们发送电子邮件或触发 SNMP 警报。

相关内容