GNU/Linux >> Belajar Linux >  >> Linux

Cara memulai layanan systemd setelah pengguna masuk dan menghentikannya sebelum pengguna keluar

Gunakan systemd itu sudah termasuk dukungan untuk sesi pengguna, sebenarnya Anda seharusnya sudah bergantung padanya (tanpa disadari).

Buat direktori layanan

mkdir -p $HOME/.local/share/systemd/user

Buat edit file layanan (vim, gedit, geany - apa pun yang Anda inginkan)

vim $HOME/.local/share/systemd/user/my.service

Seharusnya kira-kira terlihat seperti ini, jika ini adalah layanan permanen.

[Unit]
Description=My very own Service
[Service]
Type=simple
TimeoutStartSec=0
ExecStart=/path/to/start/script arguments
[Install]
WantedBy=default.target

Tapi sepertinya Anda lebih suka memicunya sekali, lalu mahir menggunakannya, jadi lebih baik gunakan konfigurasi oneshot seperti ini:

[Service]
Type=oneshot
RemainAfterExit=true
StandardOutput=journal
ExecStart=/path/to/start/script arguments
ExecStop=/path/to/stop/script arguments
[Install]
WantedBy=default.target

Ini tentu saja mengasumsikan bahwa skrip Anda dapat dieksekusi, yaitu:

chmod a+x /path/to/start/script
chmod a+x /path/to/stop/script

Jika tidak, Anda perlu menambahkan jalur ke masing-masing juru bahasa:

ExecStart=/bin/bash /path/to/start/script arguments

Sekarang muat ulang systemd (dan login ulang untuk kepentingan pengujian)

systemctl --user enable my.service # enables the service
systemctl --user # should display your new unit in the list
journalctl --user should show the log

Jika Anda memerlukan informasi lebih lanjut, lihat Arch-Wiki misalnya. Utas askubuntu ini memiliki berbagai ide, termasuk ide saya.

Anda dapat memperluas perilaku (jika Anda root) ke pengguna lain dengan mendefinisikan layanan secara global. Untuk melakukannya, Anda perlu membuat file layanan di /usr/share/systemd/user/ bukan di $HOME/.local/share/systemd/user .


Linux
  1. Bagaimana Cara Menjalankan Perintah Sebelum Login Pengguna Di Linux?

  2. Bagaimana Cara Menghentikan dan Menonaktifkan Layanan ClamAV dari CentOS?

  3. Cara Memulai dan Menghentikan OSWatcher

  1. Mulai, Hentikan, dan Mulai Ulang layanan di server systemd RHEL 7 Linux

  2. Cara Memulai, Menghentikan, dan Memulai Ulang Layanan di Server Khusus Linux

  3. Systemd:Menggunakan After dan Requires

  1. Bagaimana Cara Mengubah Pengguna Untuk Banyak File Layanan Systemd?

  2. Mulai, Berhenti, dan Mulai Ulang Crond Daemon di Linux

  3. Cara Memulai, Menghentikan, dan Memulai Ulang Layanan Zimbra