เอาล่ะ ไม่ได้มาพักหนึ่งแล้ว แต่ในที่สุดฉันก็มีเวลานั่งลงและเขียนวิธีแก้ปัญหาของตัวเอง นี่เป็นครั้งแรกที่ฉันเขียนสคริปต์ทุบตี ดังนั้นมันจึงน่าตื่นเต้น
ฉันลงเอยด้วยการใช้ 3 สคริปต์ร่วมกัน โดย 2 ในนั้นได้รับสิทธิ์รูทในไฟล์ sudoers บางทีอาจมีวิธีที่ดีกว่าในการทำเช่นนี้ อย่างไรก็ตาม ฉันแค่ใส่พาธแบบเต็มไปยังสคริปต์
ซูโด วิซูโด
จากนั้นภายใต้แท็บ #includedir /etc/sudoers.d
ชื่อผู้ใช้ ALL=NOPASSWD PATH/AutoStartMiner.sh, PATH/TeamRedMiner_Config.sh, Path/teamredminer
สิ่งนี้จะกำหนดขั้นตอนสำหรับ 3 สคริปต์ในการทำงานต่อกันโดยไม่มีปัญหา
ในการเริ่มต้น AutoStartMiner.sh ในหน้าต่างเทอร์มินัล ฉันใช้โปรแกรมจำลองเทอร์มินัล gnome สำหรับผู้ที่ใช้งานสิ่งที่คล้ายกัน คุณจะต้องติดตั้งโปรแกรมจำลองผ่าน:
sudo apt ติดตั้ง gnome-terminal
จากนั้นฉันใช้ศูนย์การกำหนดค่า LXQT และไปที่การตั้งค่าเซสชัน ในการตั้งค่าเซสชัน ฉันตั้งค่าสคริปต์ StartTerminalASM.sh ให้ทำงานหลังจากโหลดซิสเต็มเทรย์แล้ว สิ่งนี้ทำได้โดยการกดเพิ่ม ตั้งชื่อฟังก์ชั่น autostart วางพาธทั้งหมดไปยังสคริปต์ รวมถึงตัวสคริปต์เอง จากนั้นคลิกช่องที่ระบุว่าโหลดหลังจากถาดระบบ สิ่งสำคัญคือต้องทราบว่าสคริปต์ตัวแรกนี้ไม่จำเป็นต้องรันด้วยสิทธิ์ขั้นสูง ดังนั้นวิธีนี้จึงใช้ได้ผล ฟังก์ชัน autostart ของ LXQT ไม่เรียกใช้สคริปต์ที่ต้องการสิทธิ์ขั้นสูงโดยอัตโนมัติ
นี่คือเนื้อหาของสคริปต์แรก: StartTerminalASM.sh
#!/bin/bash
gnome-terminal --command="bash -c 'sudo /home/userName/Scripts/AutoStartMiner.sh; $SHELL'"
สคริปต์นี้เพิ่งเริ่มต้น AutoStartMiner.sh ในเทอร์มินัล gnome เนื่องจากเราเพิ่มสคริปต์นี้ในไฟล์ sudoers ก่อนหน้านี้ คำสั่ง sudo จึงดำเนินการโดยไม่ต้องใส่รหัสผ่าน
นี่คือสคริปต์ที่สอง: AutoStartMiner.sh
#!/bin/bash
#แจ้งผู้ใช้ด้วยข้อมูล
echo "การขุดจะเริ่มในอีก 60 วินาที"
echo "กด s + enter เพื่อหยุดกระบวนการและดำเนินการต่อตามปกติ"
# ตัวแปร Delare
อินพุต = "a"
ให้วินาที = 60
#รอการป้อนข้อมูลของผู้ใช้และการนับถอยหลัง
ในขณะที่ [ $seconds -gt 0 ]; ทำ
printf "\r........."$วินาที
อ่าน -s -t 1 อินพุต
ให้ "วินาที-=1"
ถ้า [ "$input" = "s" ] || [ "$input" = "S" ]; แล้ว
หยุดพัก
ไฟ
เสร็จแล้ว
เสียงสะท้อน
#เริ่มต้นการเลือกผู้ใช้
ถ้า [ "$input" = "s" ] || [ "$input" = "S" ]; แล้ว
echo "กำลังดำเนินการต่อตามปกติ"
นอน2
อื่น
echo "กำลังเริ่มขุดแร่"
นอน2
sudo /home/userName/Documents/Crypto/Miners/TeamRedMiner/teamredminer-v0.8.4-linux/TeamRedMiner_Config.sh
ไฟ
ดังนั้นสิ่งนี้จึงเป็นไปตามที่ฉันอธิบายไว้ในคำถามเดิม ปัญหาเดียวคือเมื่อเวลาลดลงต่ำกว่า 10 วินาทีด้วยเหตุผลบางประการ เลข 0 จะปรากฏในตำแหน่งที่ 1 และตัวเลขนับถอยหลังในตำแหน่งที่ 10 (เช่น 10, 90, 80, 70, ... ฯลฯ ). อาจเป็นสิ่งที่ฉันไม่เข้าใจอย่างถ่องแท้เกี่ยวกับ พิมพ์ฉ
คำสั่งที่ฉันทำ ในทำนองเดียวกันข้างต้น ซูโด
คำสั่งที่นี่ไม่ขอรหัสผ่านเนื่องจากบรรทัดที่สร้างขึ้นใน sudoers
ในที่สุดรันสคริปต์ที่สาม: TeamRedMiner_Config.sh
สคริปต์นี้เพียงแค่สร้างพารามิเตอร์เพื่อให้นักขุดทำงาน นอกจากนี้ยังดำเนินการขุดแร่ด้วย ซูโด
ด้วยเหตุนี้เราจึงเพิ่มคำสั่งที่สามให้กับ sudoers เพื่อให้แน่ใจว่าไม่จำเป็นต้องมีพรอมต์เพื่อเริ่มการขุด
ดังนั้น เว้นแต่ผู้ใช้จะแจ้งให้ระบบหยุดการขุดตั้งแต่เริ่มต้น นักขุดจะดำเนินการโดยไม่ต้องป้อนข้อมูลใดๆ สิ่งนี้มีประโยชน์อย่างยิ่งเพราะช่วยให้ฉันปวดหัวได้มากมายหากเคอร์เนลเกิดขัดข้อง ฉันเพียงกดปุ่มเปิดปิดและบูม เครื่องขุดกำลังทำงานในอีก 1 นาทีต่อมา ถ้าฉันต้องการทำให้มันเป็นอัตโนมัติจริง ๆ ฉันสามารถสร้างเซอร์โวตัวเล็ก ๆ เพื่อกดปุ่มหรือตั้งค่าการปลุกบน LAN
ที่พูดมาทั้งหมดก็เข้าสู่ปัญหาล่าสุด หลังจากอัปเดตเป็น Linux kernel 5.11.0-27-generic แล้ว อแด็ปเตอร์ไร้สายของฉันปฏิเสธที่จะเชื่อมต่อกับเครือข่ายของฉัน แม้ว่าอย่างน้อยระบบจะรู้จักอแด็ปเตอร์ก็ตาม
ขอบคุณสำหรับความคิดเห็นของทุกคน และฉันหวังว่าสักวันหนึ่งสิ่งนี้จะช่วยผู้เริ่มต้นคนอื่นๆ เช่นฉัน