สคริปต์เริ่มต้นสำหรับ Unity Desktop อยู่ที่ไหน


11

ฉันต้องการเรียกใช้สคริปต์ทันทีที่การตรวจสอบ lightdm ของฉันสำเร็จและ Unity ของฉันเริ่มการโหลด และฉันต้องการเรียกใช้สคริปต์ของฉันในฐานะผู้ใช้รูท

สคริปต์เริ่มต้นอยู่ที่ไหนใน Unity


ฉันต้องการเรียกใช้สคริปต์หลังจากโหลด X
Shnd


@Shnd X เริ่มต้นก่อน lightdm เพราะ lightdm ยังทำงานใน X ดังนั้นหากคุณต้องการเรียกใช้บางสิ่งในฐานะผู้ใช้ของคุณคุณอาจต้องการ "หลังจากการพิสูจน์ตัวตน lightdm สำเร็จ" หรือกล่าวอีกนัยหนึ่ง "เมื่อเดสก์ท็อปเริ่มต้น" นอกจากนี้ยังเป็นไปได้ที่จะเรียกใช้สคริปต์เมื่อคอมพิวเตอร์ของคุณเพิ่ง bootet ไม่ว่าคุณจะมีผู้ใช้ที่เข้าสู่ระบบหรือไม่ (นั่นคือสิ่งที่เริ่มต้น X เช่น) กว่าคำถามที่แตกต่างอย่างสิ้นเชิง หากคุณต้องการเรียกใช้บางสิ่งในฐานะผู้ใช้คุณอาจต้องการและคำตอบนั้นขึ้นอยู่กับระบบเริ่มต้นของคุณ
erikbwork

คำตอบ:


5

ขั้นแรกให้ใส่สคริปต์ของคุณ/usr/binและให้สิทธิ์ในการดำเนินการ

ตอนนี้สร้างไฟล์ .desktop /home/[user-name]/.config/autostart/ซึ่งรันสคริปต์ของคุณซึ่งทำงานเมื่อเริ่มต้น

ตัวอย่าง: - ให้ชื่อไฟล์ของสคริปต์คือ "example" หรือ "example.sh"

สร้างไฟล์ .desktop ด้วย gedit ด้วยบรรทัดต่อไปนี้และบันทึกเป็น filename.desktop ใน /home/[user-name]/.config/autostart/

[Desktop Entry]
Type=Application
Exec=sudo example
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=myscript
Comment=Startup Script

ที่นี่Exec=sudo exampleหรือExec=sudo example.shเรียกใช้สคริปต์ของคุณในฐานะรูทจาก/usr/bin มอบสิทธิ์ดำเนินการให้กับไฟล์ .desktop

ตอนนี้สคริปต์ทำงานเมื่อเริ่มต้น


1
สำหรับการเรียกใช้ sudo โดยไม่ต้องใช้รหัสผ่านดูaskubuntu.com/questions/39281/…
Pandya

ขอบคุณที่ใช้งานได้ แต่ด้วยการพุ่งพรวดคุณสามารถทำสิ่งเดียวกันได้ง่ายขึ้นเล็กน้อย (ดูคำตอบของฉัน)
TuKsn

นี่จะสมบูรณ์แบบด้วยลิงก์ไปยังข้อมูลจำเพาะ
erikbwork

ฉันไม่คิดว่าไฟล์ .desktop จะต้องมีการตั้งค่าสถานะปฏิบัติการ
Julian

4

ความเป็นไปได้อื่น:

สร้างไฟล์ใน $HOME/.config/upstart/my-upstart-script.conf

start on desktop-start
stop on desktop-end

script
  sudo fdisk -l > /home/[user-name]/upstart-test.txt        
end script

รายละเอียดเพิ่มเติมเพื่อพุ่งพรวด :

http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html

http://upstart.ubuntu.com/cookbook/

ข่าวสารที่จะรันsudoโดยไม่มีรหัสผ่าน:

วิธีการเรียกใช้แอปพลิเคชันโดยใช้ sudo โดยไม่ต้องใช้รหัสผ่าน?

ฉันจะรันคำสั่ง sudo เฉพาะโดยไม่มีรหัสผ่านได้อย่างไร


"$ HOME / .config / upstart" ไม่มีไดเรกทอรีดังกล่าวในเครื่องของฉัน
Kalamalka Kid

1
@KalamalkaKid คุณใช้ Ubuntu รุ่นไหน ไดเรกทอรีพุ่งพรวดควรอยู่ที่ตำแหน่ง/home/yourusername/.config/upstart/นี้ เปิดผู้กำกับบ้านของคุณในหอยโข่งกด Ctrl + H แล้วคุณจะเห็นไดเรกทอรี. config
TuKsn

2

ในการรันคำสั่งในฐานะรูหลังจากล็อกอินมีเคล็ดลับง่ายๆ:

ใช้เวลาสองขั้นตอน:

  • สร้างไฟล์ทริกเกอร์ในการเข้าสู่ระบบ
  • สร้าง cronjob วิ่งตามราก (ตั้งอยู่ใน/etc/crontab) เพื่อเรียกใช้สคริปต์เล็ก (เรียกใช้คำสั่งของคุณ) ถ้าและเพียงถ้าไฟล์ทริกเกอร์ที่มีอยู่ เนื่องจากไฟล์ทริกเกอร์ถูกลบโดยสคริปต์เดียวกันคำสั่งของคุณจะรันเพียงครั้งเดียว

ลำดับนั้นคือ:

USER LOGIN > trigger file is created > cronjob runs script (with your command) and removes trigger file, > next time the script passes, since the trigger file does not exist anymore

การตั้งค่า

สคริปต์เล็ก ๆ สองตัว:

หนึ่งในการสร้างไฟล์ทริกเกอร์ในการเข้าสู่ระบบ:

#!/bin/sh
touch $HOME/.trigger

และหนึ่งสองรันคำสั่ง:

#!/bin/bash

FILE="/path/to/your/homedirectory/.trigger"
# don't use $HOME here, since you run it by root

if [ -f $FILE ]; then
   <your command here, run by root>
   rm -f $FILE
fi
  • คัดลอกสคริปต์ทั้งสองเป็นสองไฟล์ที่ว่างเปล่าบันทึกเป็นและcreate_trigger.shrun_command.sh
  • เพื่อเหตุผลด้านความสะดวกทำให้ทั้งคู่สามารถเรียกใช้งานได้
  • เพิ่มคำสั่งต่อไปนี้ในแอปพลิเคชันเริ่มต้นของคุณ (Dash> แอปพลิเคชันเริ่มต้น> เพิ่ม)

    /path/to/create_trigger.sh
    
  • เพิ่มบรรทัดต่อไปนี้ใน/etc/crontabไฟล์ ( sudo nano /etc/crontab):

    * * * * * root /path/to/run_command.sh
    

ตอนนี้คำสั่งที่กำหนดจะรันครั้งเดียวภายในหนึ่งนาทีจากการเข้าสู่ระบบ

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