Bagaimana cara memulai kembali program latar belakang oleh pengguna non-root?

14

Sebagai pengguna non-root, saya ingin menjalankan pekerjaan latar belakang saat sistem melakukan boot. Ini semacam layanan yang tidak memerlukan hak akses root. Apakah ada cara untuk melakukannya?

Salah satu cara adalah dengan meletakkan sudo -u user commanddi rc.local, tapi editing rc.localmembutuhkan hak istimewa root.

Cara lain adalah meluncurkannya dari cronsetiap menit dan memeriksa setiap instance yang berjalan, tetapi pertama-tama ia membangunkan sistem secara tidak perlu dan kedua, mungkin ada kondisi lomba dalam memeriksa instance yang berjalan.

Cara ketiga adalah menjalankannya ~/.bash_profile, tetapi saya ingin memulainya tanpa login pengguna.

Wu Yongzheng
sumber

Jawaban:

16

Anda dapat menggunakan cron jika versi Anda memiliki @rebootfitur. Dari man 5 crontab :

Alih-alih lima bidang pertama, satu dari delapan string khusus dapat muncul:

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

Anda dapat mengedit crontab pengguna-lokal dengan perintah crontab -etanpa root privilege. Kemudian tambahkan baris berikut:

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

Sekarang perintah Anda akan dijalankan sekali saat boot.

Marco
sumber
Apakah tidak biasa crontab -emembuat file cron di bawah /tmp?
Simpanse Warlike
@ Elliott Itu tergantung pada editor Anda. Pada akhirnya file akan berakhir di /var/spool/cron/crontabs.
Marco