วิธีเริ่มต้นโปรแกรมพื้นหลังโดยผู้ใช้ที่ไม่ใช่รูทอัตโนมัติ


14

ในฐานะผู้ใช้ที่ไม่ใช่รูทฉันต้องการรันงานแบ็คกราวน์เมื่อบูทระบบ เป็นบริการที่ไม่ต้องใช้สิทธิ์รูท มีวิธีทำหรือไม่?

วิธีหนึ่งคือการใส่sudo -u user commandในrc.localแต่การแก้ไขrc.localต้องใช้สิทธิ์ราก

อีกวิธีหนึ่งคือเริ่มจากcronทุก ๆ นาทีและตรวจสอบอินสแตนซ์ที่กำลังทำงานอยู่ แต่ก่อนอื่นมันจะทำให้ระบบตื่นโดยไม่จำเป็นและอย่างที่สองอาจมีสภาวะการแข่งขันในการตรวจสอบอินสแตนซ์ที่กำลังทำงานอยู่

วิธีที่สามคือเรียกใช้ใน~/.bash_profileแต่ฉันต้องการเริ่มต้นโดยไม่ต้องเข้าสู่ระบบของผู้ใช้

คำตอบ:


17

คุณสามารถใช้ cron ได้หากรุ่นของคุณมี@rebootคุณสมบัติ จากผู้ชาย 5 crontab :

แทนที่จะเป็นห้าฟิลด์แรกหนึ่งในแปดสตริงพิเศษอาจปรากฏขึ้น:

  string         meaning
  ------         -------
  @reboot        Run once, at startup.
  …

คุณสามารถแก้ไข crontab ผู้ใช้ท้องถิ่นด้วยคำสั่งcrontab -eโดยไม่มีสิทธิ์รูท จากนั้นเพิ่มบรรทัดต่อไปนี้:

@reboot /usr/local/bin/some-command

ตอนนี้คำสั่งของคุณจะถูกเรียกใช้ครั้งเดียวในเวลาบูต


มันผิดปกติหรือไม่ที่crontab -eจะสร้างไฟล์ cron /tmp
Chimpanzee Warlike

@Elliott ขึ้นอยู่กับบรรณาธิการของคุณ /var/spool/cron/crontabsในท้ายที่สุดไฟล์จะจบลงใน
Marco
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.