ฉันเข้าใจว่ามีหรืออาจมีคำถามที่คล้ายกันที่นี่ แต่คำถามนี้ไม่เกี่ยวข้อง คุกไฟ
และ Firefox ก็ไม่มีความล่าช้าเมื่อเริ่มต้น
ข้อมูลระบบปฏิบัติการ:
ซูบุนตู 20.04
DISTRIB_DESCRIPTION="อูบุนตู 20.04.3 LTS"
NAME="อูบุนตู"
VERSION="20.04.3 LTS (โฟกัสแอ่ง)"
VERSION_ID="20.04"
$ uname -a
Linux terrance-ubuntu 5.11.0-40-generic #44~20.04.2-Ubuntu SMP อ. 26 ต.ค. 18:07:44 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
ฉันเรียกใช้สคริปต์จากไฟล์ crontab
ที่จะเปิดหน้าเข้าสู่ระบบ ADP ของฉันและนาฬิกาฉันเข้าและออกในเวลาที่กำหนดของวัน สิ่งนี้เคยทำงานได้อย่างไร้ที่ติจนกระทั่ง Firefox 94 เปิดตัว ตอนนี้ฉันเข้าใจว่าสำหรับ Mozilla ระยะไกลตัดสินใจที่จะไม่ใช้ X11 อีกต่อไป แต่ใช้ D-Bus แทน สำหรับชีวิตของฉัน ฉันไม่สามารถเข้าใจความหมายของการใช้ D-Bus แทน X11 นอกจากพวกเขาอ้างว่ามันใช้ง่ายกว่า ฉันสันนิษฐานว่าอาจเป็นเพราะ Wayland ที่ฉันไม่ได้ใช้
ถ้าฉันเรียกใช้สคริปต์ต่อไปนี้จากเทอร์มินัลบรรทัดคำสั่งตามเวลาที่กำหนด มันจะทำงานได้อย่างสมบูรณ์ แต่ถ้าฉันเรียกใช้สคริปต์จาก crontab
ฉันได้รับข้อความต่อไปนี้:
สคริปต์ (ยังคงเป็นงานที่อยู่ระหว่างดำเนินการ):
#!/bin/bash
#ฟังก์ชันนี้ตรวจสอบเส้นทางของแอปบน Mac
เส้นทางจริง 1() {
[[ $1 = /* ]] && echo "$1" || เสียงสะท้อน "$PWD/${1#./}"
}
#ฟังก์ชันนี้จะจับคู่วันในสัปดาห์และส่งคืน 0 หากตรงกัน 1 หากตรงกับวันหยุดสุดสัปดาห์
ฟังก์ชัน dowcheck(){
กรณี " ${daysofweek[@]} " ใน
*\ ${DOW}\ *)
กลับ 0;;
*)
กลับ 1;;
เอสแซค
}
#ฟังก์ชันนี้จะจับคู่ว่าเวลาเข้าหรือออกของนาฬิกาตรงกับ 0 หรือ 1 ถ้าไม่ตรงกัน
การตรวจสอบเวลาของฟังก์ชัน (){
กรณี " ${timesofday[@]} " ใน
*\ ${HM}\ *)
กลับ 0;;
*)
กลับ 1;;
เอสแซค
}
#ฟังก์ชันนี้ตรงกับวันหยุดถึงวันนี้ หากการแข่งขันกลับ 0 หมายถึงวันหยุด 1 หมายถึงไม่มีวันหยุด
ฟังก์ชันตรวจสอบวันปิดทำการ (){
กรณี " ${daysoff[@]} " ใน
*\ ${daymdy}\ *)
กลับ 0;;
*)
กลับ 1;;
เอสแซค
}
#ตรวจสอบประเภทระบบปฏิบัติการ
OS_TYPE=$(uname -a | awk '{พิมพ์ $1}')
ถ้า [[ ${OS_TYPE} == "Linux" ]]; แล้ว
OS=$(grep -i ^name= /etc/*release | awk -F= '{print $2}' | sed 's/\"//g')
อื่น
OS=$(system_profiler SPSoftwareDataType | awk '/เวอร์ชันระบบ:/ {พิมพ์ $3}')
ไฟ
ถ้า [ "${OS}" = "CentOS Linux" ]; แล้ว
OS=เฟดอร่า
ไฟ
#ตั้งค่าไดเรกทอรีการทำงานและตั้งค่าการแสดงผลสำหรับการทำงานใน CRONJOB
กรณี $OS ใน
macOS) apppath=/Applications/Firefox.app/Contents/MacOS
ส่งออก DISPLAY="/private/tmp/com.apple.launchd.*/org.macosforge.xquartz:0"
PWD=$(นามสกุล $(realpath1 $(ซึ่ง $0)));;
*) apppath=/usr/bin
DM=$(/usr/bin/ชื่อฐาน $(/bin/cat /etc/X11/default-display-manager))
กรณี $DM ใน
ไลท์ดีเอ็ม)
ส่งออก DISPLAY=:0;;
gdm3)
grep -E "# AutomaticLogin|AutomaticLoginEnable = false" /etc/$DM/*.conf >/dev/null && ส่งออก DISPLAY=:1 || ส่งออก DISPLAY=:0;;
*);;
เอสแซค
PWD=$(นามสกุล $(realpath $(ซึ่ง $0)));;
เอสแซค
#ตั้งค่าตัวแปรสำหรับฟังก์ชันที่ตรงกัน
DOW=$(วันที่ +%a)
HM=$(วันที่ +%H:%M)
daymdy=$(วันที่ +%m-%d-%Y)
#หากวันนี้ใหม่กว่าวันหยุด ให้ลบวันหยุดวันสุดท้าย
ถ้า [[ "${daymdy}" > "$(หัว -1 $PWD/daysoff.txt)" ]]; แล้ว
sed -i '1d' $PWD/daysoff.txt
ไฟ
#ประกาศอาร์เรย์
ประกาศ -a daysofweek=('จันทร์' 'อังคาร' 'พุธ' 'พฤหัส' 'ศุกร์')
ประกาศ -a timesofday=('08:00' '12:00' '12:30' '16:30')
ประกาศ -a inout=('เข้า' 'ออกไปทานอาหารกลางวัน' 'เข้าจากมื้อเที่ยง' 'ออกไปวันนี้')
ประกาศ -a วันหยุด=($(cat $PWD/daysoff.txt))
#เข้าหรือออก.
สำหรับฉันใน "${!timesofday[@]}"; ทำ
ถ้า [[ "${timesofday[$i]}" == "${HM}" ]]; แล้ว
inorout="${inout[$i]}";
ไฟ;
เสร็จแล้ว
#เรียกใช้ฟังก์ชันและส่งกลับ 0 หรือ 1
ตรวจสอบวันหยุด
อ๊อฟ=$?
เช็คดาว์น
ดาวโจนส์=$?
ตรวจสอบเวลา
เวลา=$?
#เสร็จสิ้นและส่งข้อมูลหรือเปิด Firefox หากจำเป็น
ถ้า [[ $doff != "1" ]]; แล้ว
echo "วันนี้วันหยุด! ทำไมคุณพยายามตอกบัตร"
ทางออก 1
elif [[ $dow != "0" ]]; แล้ว
echo "วันหยุดสุดสัปดาห์! ทำไมคุณพยายามตอกบัตร"
ทางออก 1
elif [[ $time != "0" ]]; แล้ว
echo "เป็น $DOW ที่ $HM ยังไม่ถึงเวลาตอกบัตรเข้าหรือออก"
ทางออก 1
อื่น
echo "นี่คือ ${HM} ได้เวลานาฬิกา ${inorout}" | เมล -s "นาฬิกาเวลา" [email protected]
echo "นี่คือ ${HM} ได้เวลานาฬิกา ${inorout}" | เมล -s "นาฬิกาเวลา" [email protected]
xdotool mousemove --sync 677 1011
$apppath/firefox --แท็บใหม่ https://workforcenow.adp.com/workforcenow/login.html &
$PWD/clock_in_out.bsh
รอ
ไฟ
ถ้าใครมีความคิดใด ๆ ที่ฉันสามารถทำให้ Firefox ทำงานกับ D-Bus ได้เหมือนกับ X11 ก่อนเวอร์ชัน 94 ฉันจะขอบคุณมาก!