มีวิธีใดบ้างที่จะเพิ่มแอพพลิเคชั่น / สคริปต์ลงในการเริ่มต้น 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=myuserRestart=on-failure|on-watchdog|on-abnormal|alwaysType=simple|forking|oneshot|notify|dbusWants=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 ของฉัน