มีวิธีใดบ้างที่จะเพิ่มแอพพลิเคชั่น / สคริปต์ลงในการเริ่มต้น Linux ดังนั้นทุกครั้งที่ระบบบู๊ตมันจะถูกสั่งการ?
ฉันกำลังมองหาวิธีอัตโนมัติบางอย่างเช่นผู้ใช้ไม่ควรเพิ่มงาน cron หรืออะไรทำนองนั้น
มีวิธีใดบ้างที่จะเพิ่มแอพพลิเคชั่น / สคริปต์ลงในการเริ่มต้น Linux ดังนั้นทุกครั้งที่ระบบบู๊ตมันจะถูกสั่งการ?
ฉันกำลังมองหาวิธีอัตโนมัติบางอย่างเช่นผู้ใช้ไม่ควรเพิ่มงาน cron หรืออะไรทำนองนั้น
คำตอบ:
นอกเหนือจากสคริปต์เริ่มต้นระดับระบบสภาพแวดล้อมเดสก์ท็อปของคุณอาจมีวิธีการทำงานของโปรแกรมอัตโนมัติ แฟ้ม.config/autostart
ควรเป็นวิธีที่เป็นกลางบนเดสก์ท็อปในการกำหนดรายการการทำงานอัตโนมัติ /etc/xdg/autostart
สำหรับการกำหนดค่าทั้งระบบ รายละเอียดเกี่ยวกับสเปคที่http://developer.gnome.org/autostart-spec/
สำหรับรายการ autostart LXDE ยังสามารถตั้งค่า~/.config/lxsession/LXDE/autostart
ได้
มันแตกต่างกันเล็กน้อยถ้าคุณต้องการเรียกใช้สคริปต์ของคุณหลังจากที่เครือข่ายเริ่มทำงาน ในกรณีนี้คุณควรตรวจสอบสคริปต์การเชื่อมต่อพิเศษที่สามารถกำหนดได้สำหรับผู้จัดการเครือข่ายของคุณ ทั้งNetworkManagerและwicdมีวิธีการของตนเองในการระบุรายการการทำงานอัตโนมัติหลังการเชื่อมต่อ หากเครือข่ายมีการกำหนดค่าผ่านifupdown
สามารถวางสคริปต์ลงใน/etc/network/if-up.d/
โฟลเดอร์ได้ แต่วิธีที่ดีกว่าในการเรียกใช้สคริปต์การโพสต์การเชื่อมต่ออาจเป็น systemd (สำหรับระบบที่รองรับซึ่งเป็นส่วนใหญ่ของ distros ที่ทันสมัย)
หากสิ่งที่คุณต้องการเริ่มต้นอัตโนมัติไม่ใช่แอพแบบกราฟิกที่ต้องใช้เดสก์ท็อปดังนั้นคุณควรหลีกเลี่ยงการใช้สิ่งอำนวยความสะดวกเริ่มต้นอัตโนมัติโดย xorg หรือสภาพแวดล้อมเดสก์ทอปปัจจุบันของคุณ
systemd
ได้กลายเป็นแพร่หลายใน distros ที่ทันสมัยและมีการควบคุมและความยืดหยุ่นในแง่ของวิธีการเริ่มบริการของคุณและวิธีการทำงาน
ฉันจะสรุปผลประโยชน์บางอย่าง ( systemd สามารถทำได้มากขึ้น ):
User=myuser
Restart=on-failure|on-watchdog|on-abnormal|always
Type=simple|forking|oneshot|notify|dbus
Wants=network-online.target
ใน[Unit]
ส่วน)ตัวอย่างบริการที่เริ่ม telegram-cli daemon /etc/systemd/system/tg.service
วางไว้ใน
[Unit]
Description=MyDaemon
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/telegram-cli -k /etc/telegram-cli/tg-server.pub -W -P 1234 -d -vvvRC
ExecStop=/usr/bin/pkill -f telegram-cli
User=jicu
[Install]
WantedBy=multi-user.target
ตอนนี้คุณสามารถเปิดใช้งานบริการเพื่อเริ่มอัตโนมัติ:
sudo systemctl enable tg
เริ่มบริการ:
sudo systemctl start tg
หยุดบริการ:
sudo systemctl stop tg
ตรวจสอบสถานะ:
systemctl status tg
ปิดการใช้งานบริการ:
sudo systemctl disable tg
ที่จะช่วยให้คุณประหยัดในการพิมพ์พิเศษที่คุณสามารถเพิ่มในของคุณ~/.bashrc
สายแล้วคุณจะสามารถร่นคำสั่งข้างต้นเช่นalias sc='sudo systemctl $*'
sc start tg
หมายเหตุ: หากคุณเคยใช้
cron
แล้วจะรู้ว่ารายการ crontab นั้นทำงานในสภาพแวดล้อมที่ จำกัด - เช่นเดียวกับsystemd
: ใช้เส้นทางที่แน่นอนเสมอและไม่ตั้งสมมติฐานของตัวแปรใด ๆ ตั้งค่าตัวแปรใด ๆ ที่สคริปต์ของคุณขึ้นอยู่กับอย่างชัดเจนsystemd
จะไม่ใช้ของผู้ใช้ของคุณและ.bashrc
$PATH
ข้อมูลเพิ่มเติม:
ใช่เป็นไปได้ที่จะเรียกใช้โปรแกรมเมื่อเริ่มต้นบน Linux โดยการกำหนดพา ธ ไปยังไฟล์ที่เรียกใช้งานได้rc.local
ซึ่งจะอยู่ในไดเรกทอรี/etc
หรือ/etc/rc.d
เช่น:
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
/path/to/executable
หมายเหตุ: อย่าลืมกำหนดสิทธิเรียกใช้ตามที่อธิบายไว้ในเอกสารของไฟล์เช่น Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.
Startup applications
โดยใช้ปุ่มโฮมAdd
Startup command box
ป้อนคำสั่งOK
(คุณควรเห็นคำสั่งใหม่ของคุณในรายการ)Close
ทดสอบโดยการรีสตาร์ทหรือออกจากระบบและกลับเข้ามาใหม่
ที่มา: https://help.ubuntu.com/community/AddingProgramToSessionStartup
การแจกแจงแต่ละครั้งใช้เทคนิคบูทสแตรปแต่ละตัวดังนั้นต้องดูเอกสารสำหรับ distro ของคุณ /etc/rc.local เป็นสถานที่ที่คุณสามารถวางสคริปต์อัตโนมัติบางอย่าง แต่มันล้าสมัยไปแล้ว ขณะนี้ระบบที่ใช้ Linux ส่วนใหญ่ใช้ runlevels หรือ systemd bootstraping ดังนั้นงาน autostarted ส่วนใหญ่จึงสามารถควบคุมคุณภาพได้
ฉันพบคำตอบของฉันที่นี่: /programming/7221757/run-automatically-program-on-startup-under-linux-ubuntu ฉันสามารถสร้างไฟล์ / สคริปต์เพื่อปิด trackpad ของฉันในขณะที่ฉันอยู่ Linux Ubuntu 12.10 ของฉัน