เรียกใช้คำสั่งอัตโนมัติในฐานะรูทหลังเข้าสู่ระบบ


1

ฉันใช้ตัวย่อเพื่อจำลองการกดปุ่มจากปุ่มพิเศษของฉัน มันใช้งานได้ดี แต่ฉันต้องเรียกใช้คำสั่งด้วย sudo เพื่อให้ทำงานได้ดังนั้นฉันจึงไม่สามารถใช้ DE เพื่อจัดการ autostart ได้

ฉันพิจารณา init.d แต่จากสิ่งที่ฉันได้ยินมาว่าใช้งานได้กับขั้นตอนการบูตที่แตกต่างกันเท่านั้นและฉันต้องการให้ทำงานเป็นรูทหลังจากเข้าสู่ระบบ

$ cat .evrouterrc 
"Logitech G500" "/dev/input/event4" any key/277 "XKey/0"
"Logitech G500" "/dev/input/event4" any key/280 "XKey/9"
"Logitech G500" "/dev/input/event4" any key/281 "XKey/8"
$ sudo evrouter /dev/input/event4

แก้ไข:เอาล่ะดูเหมือนว่าฉันสามารถใช้session-setup-scriptตัวเลือกของ lightdm.conf เพื่อเรียกใช้สคริปต์ในฐานะรูท สคริปต์ที่ฉันมีอยู่ด้านล่าง แต่ตามที่คาดไว้เมื่อทำงานเป็นรูทจะid -uไม่เท่ากับ 1,000 อีกต่อไปและคำสั่ง if จะไม่ดำเนินการ มีอาร์กิวเมนต์หรือตัวแปรที่ฉันสามารถใช้เพื่อรับชื่อผู้ใช้หรือรหัสหรือไม่

คำตอบ:


0

หลังจากบูตคอมพิวเตอร์แล้ว Linux จะเรียกใช้สิ่งที่อยู่ในไฟล์ crontab ของระบบ Cron เป็นโปรแกรมที่ใช้คำสั่งกำหนดเวลาโปรแกรมหรือสคริปต์ให้ทำงานในเวลาที่เฉพาะเจาะจงของวัน ผู้ใช้แต่ละคนมี crontab แต่ในสถานการณ์นี้ crontab ของระบบเหมาะสำหรับงานดังกล่าว

คุณสามารถกำหนดค่า cron เพื่อรันคำสั่งหรือโปรแกรมเมื่อระบบบูท ดังนั้นฉันคิดว่านี่คือสิ่งที่คุณหมายถึง

ในการแก้ไขตามนั้นคุณจะต้องเปิดไฟล์ crontab ของระบบของคุณโดยใช้คำสั่งsudo vim /etc/crontabรู้สึกฟรีเพื่อแทนที่ `` vim "ด้วยโปรแกรมแก้ไขข้อความ cli ที่คุณชื่นชอบ

เพิ่มบรรทัด (แทนที่สิ่งที่เหมาะสมด้วยสิ่งที่คุณต้องการเช่นคำสั่งและอื่น ๆ ) ด้านล่างอื่น ๆ ทั้งหมด@reboot evrouterหมายเหตุ: ความคิดที่ดีที่สุดคือการสร้างสคริปต์และวางคำสั่งไว้ในนั้นและเรียกใช้สคริปต์โดยใช้ crontab มันเป็นทางเลือกของคุณ

ขึ้นอยู่กับ distro ของคุณคุณอาจหรือไม่ต้องใส่คนที่คุณต้องการให้รันคำสั่งหลังจาก@rebootเวลาส่วนใหญ่ไฟล์ crontab จะมีความคิดเห็นอยู่ด้านบนของไฟล์เพื่อแนะนำให้คุณ แน่นอนว่าการดูรายการอื่น ๆ ในไฟล์นี้อาจเป็นประโยชน์กับคุณมากที่สุด


ยกเว้นว่าฉันไม่ต้องการมันในการบูทฉันต้องการมันในการเข้าระบบไม่เช่นนั้นระบบจะไม่สามารถเข้าถึงไฟล์ config ที่มี keybinds ได้
JV

การเปิด crontab ด้วย texteditor เป็นวิธีที่โง่ในการแก้ไข crontab ใช้ crontab -e แทน สิ่งนี้ทำให้มั่นใจได้ว่าไม่มีข้อผิดพลาดทางไวยากรณ์ในแท็บแท็บเมื่อปิดตัวแก้ไข
l1zard

0

โดยใช้lightdm.conf's session-setup-scriptคุ้มค่าก็สามารถที่จะเรียกใช้คำสั่งเป็นรากตามที่คาดไว้

session-setup-script=/opt/hacks/lightdm-startup

ในขณะเดียวกันในโฟลเดอร์อื่น:

#!/bin/bash
if [ "$USER" = "j" ]
then
evrouter /dev/input/event4
fi

ฉันยังคงไม่แน่ใจว่าทำไม==ไม่ทำงานในคำสั่ง if และ=ทำ ... การทุบตีไม่แน่นอน

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