ฉันจะรันสคริปต์เมื่อเริ่มต้นบนเครื่อง Ubuntu Server 17.10 ได้อย่างไร ฉันคิดว่าวิธีนี้มีการเปลี่ยนแปลงใน 17.10
ฉันจะรันสคริปต์เมื่อเริ่มต้นบนเครื่อง Ubuntu Server 17.10 ได้อย่างไร ฉันคิดว่าวิธีนี้มีการเปลี่ยนแปลงใน 17.10
คำตอบ:
ใส่สคริปต์ในการใช้งานที่เหมาะสมของcron
ตาราง (เช่นcrontab ) @reboot
กับตารางเวลาของ
ผู้ใช้สามารถแก้ไขของตารางที่มีcron
crontab -e
ตัวอย่างที่จะทำงาน/path/to/script.sh
เมื่อเริ่มต้น:
@reboot /path/to/script.sh
หากคุณจำเป็นต้องใช้มันเป็นรากไม่ได้ใช้@reboot sudo /path/to/script.sh
;
ใช้sudo crontab -eu root
เพื่อแก้ไข crontab ของรูท
ดูเพิ่มเติมที่: crontab (1), cron (8), crontab (8)
Ubuntu 15.04 และส่งต่อโดยค่าเริ่มต้นใช้สิ่งที่เรียกว่าsystemd
ซึ่งเป็นโปรแกรม (แปลก ๆ ) ที่ทำให้บริการเริ่มต้นและกระบวนการโดยอัตโนมัติ คุณสามารถสร้างของคุณเองและเพิ่มลงในรายการบริการเริ่มต้นได้ด้วยความพยายามเพียงเล็กน้อย
บริการ Systemd พื้นฐาน
นี่เป็น.service
ไฟล์barebones ที่สามารถใช้ในการเปิดตัวเซิร์ฟเวอร์ python gui ของฉัน (อาจเป็นเชลล์สคริปต์ก็ไม่สำคัญ):
[Unit]
Description=Python GUI Server
[Service]
ExecStart=/home/pi/software/GUI_POE.py &
[Install]
WantedBy=multi-user.target
Description
ตัวเลือกคือสตริงใด ๆ ที่อธิบายถึงสิ่งที่ให้บริการหรือไม่
ExecStart
ตัวเลือกระบุคำสั่งในการดำเนินการ ที่นี่ฉันให้เส้นทางไปยังสคริปต์ python ที่ใช้งานได้และใช้&
โทเค็นเพื่อเรียกใช้งานในพื้นหลัง
WantedBy
ความสำคัญตัวเลือกที่ระบุตามสิ่งที่เป้าหมายต้องการที่จะใช้บริการนี้ ถ้าคุณไม่จำเป็นต้องบริการของคุณจะทำงานในเวลาที่เฉพาะเจาะจงมาก ๆ multi-user.target
แล้วก็ตั้งค่าให้
ขั้นตอนพื้นฐาน
เขียนสคริปต์ที่คุณต้องการให้ทำงานเมื่อเริ่มต้นใช้งานnano
หรือแก้ไขที่คุณต้องการ ให้แน่ใจว่าคุณรวม shebang ที่เหมาะสมที่ด้านบนสุดของไฟล์ ( #!/bin/bash
สคริปต์ทุบตี) chmod
และให้สิทธิ์ในการปฏิบัติการด้วย
เพียงแค่เขียนถึงบริการของคุณในไฟล์ชื่อ my_service.service และคัดลอกลงใน directoy cp my_service.service /lib/systemd/system/
ที่เหมาะสมกับ
เริ่มบริการของคุณ: sudo systemctl start my_service.service
. การดำเนินการนี้จะเปิดใช้งานสคริปต์ที่คุณแจ้งให้บริการของคุณเรียกใช้ คำสั่งเดียวกันกับ "หยุด" แทนที่จะเริ่มจะปิด
sudo systemctl enable my_service.service
เพิ่มบริการของคุณเพื่อกระบวนการเริ่มต้นขึ้น: หากต้องการลบออกเพียงแค่แทนที่ "เปิดใช้งาน" ด้วย "ปิดการใช้งาน" ในคำสั่งเดียวกัน
และนั่นมัน! โปรดทราบว่าสคริปต์ของคุณจะทำงานโดยอัตโนมัติด้วยการอนุญาตรูทซึ่งเป็นค่าเริ่มต้นในบริการ systemd
ตัวอย่างง่ายๆของฉัน (เต็ม)
สำหรับการอ้างอิงต่อไปนี้เป็นบริการ systemd ที่เรียบง่ายฉันมีที่เปิดตัว Python GUI Server อย่างง่ายโดยใช้ Dash:
[Unit]
Description=Python GUI Server
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/home/pi/software
ExecStart=/home/pi/software/GUI_POE.py &
Restart=always
RestartSec=15s
KillMode=process
TimeoutSec=infinity
User=pi
Group=pi
[Install]
WantedBy=multi-user.target
บริการตัวอย่างนี้ใช้สคริปต์ Python3 แต่สูตรจะเหมือนกันทุกประการสำหรับเชลล์สคริปต์
อ่านเพิ่มเติมสามารถพบได้ที่กวดวิชาที่ยอดเยี่ยมนี้โดย DigitalOcean และกระทู้ AskUbuntu นี้มีคำตอบที่ยอดเยี่ยมที่ช่วยให้ฉันเรียนรู้ systemd หวังว่านี่จะช่วยได้!