สคริปต์ Bash ไม่เปิดในเทอร์มินัลเมื่อรีบูต


0

ภาพรวมอย่างรวดเร็วฉันได้สร้างสคริปต์ที่รีบูตเครื่องแล็ปท็อปหลังจาก 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

รับจำนวนบรรทัดด้วย nol=$(wc -l testlog.txt)
artistoex

คำตอบ:


1

เชลล์สคริปต์ไม่เปิดหน้าต่างบนเดสก์ท็อปของคุณโดยอัตโนมัติ คุณต้องใส่รหัสเพื่อทำเช่นนั้นหากนั่นคือสิ่งที่คุณต้องการ


อัปเดต 1

วิธีหนึ่งในการทำเช่นนี้คือการใช้ Xdialog.

หมายเหตุคุณอาจต้องติดตั้งโดยใช้ sudo yum install Xdialog หรือ apt-get install Xdialog (หรือคำสั่งใดก็ได้ที่เหมาะสมสำหรับตัวจัดการแพ็คเกจการแจกจ่าย Unix / Linux ของคุณ)

มีตัวอย่างใน /usr/share/doc/xdialog*/samplesนี่คือหนึ่ง

การใช้เครื่องมือนี้คุณสามารถให้ข้อความพื้นหลังแสดงข้อความบนคอนโซลระบบ (สมมติว่ามันใช้เซิร์ฟเวอร์ X) คุณอาจต้องตั้งค่าของตัวแปรสภาพแวดล้อม DISPLAY ดังนั้นโปรแกรมจะทราบว่าควรแสดงหน้าจอใดบนหน้าจอ สิ่งนี้ยังใช้งานได้กับพีซีระยะไกลและอื่น ๆ หากใช้เซิร์ฟเวอร์ X (เช่น Xming บน Windows)

นี่เป็นตัวอย่างที่รวดเร็ว

Xdialog test


อัปเดต 2

หมายเหตุ: ข้างต้นไม่ใช่วิธีปกติที่งานส่วนหลังของระบบสื่อสารกับผู้ใช้ โดยปกติฉันเพิ่งมีงานเขียนมันเป็นข้อความไปยังไฟล์บันทึก (และอาจจะใช้ logger เพื่อเขียนถึง syslog) จากนั้นทุกคนที่สนใจสามารถใช้งานได้ tail -f logfilename เพื่อดูสถานะปัจจุบันของกระบวนการพื้นหลัง

หากคุณต้องการให้ใครบางคนสนใจงานที่เสร็จสิ้นคุณอาจส่งอีเมลหรือเรียกใช้การแจ้งเตือน SNMP แทน


สวัสดี RedGritty ฉันจะเขียนรหัสดังกล่าวในสคริปต์เปลือกจริงหรือไม่ ฉันเดาว่าสิ่งนี้จะทำงานได้จริงเพราะสคริปต์กำลังทำงานอยู่โดยไม่แสดงหน้าต่างใช่หรือไม่ หรือมันจะต้องเข้าไปในไฟล์ภายนอกที่ทำงานเมื่อเริ่มต้นขึ้น?
twigg

@twigg: ฉันจะอัปเดตคำตอบ
RedGrittyBrick

@twigg เริ่ม X-Server
artistoex
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.