Pertanyaan: Bisakah saya memulai proses dengan systemd dan menugaskan proses itu direktori kerja yang saya pilih?
Saya memiliki layanan yang ingin saya mulai systemd
. Ketika layanan itu sedang dimulai, saya ingin dapat menetapkannya sebagai direktori kerja saat ini. Saya tahu bagaimana melakukan ini jika saya menggunakan init
, tetapi saya mengalami masalah dengan systemd
.
Inilah yang saya coba untuk mulai bekerja.
Layanan saya
Saya membuat utilitas sederhana ("listdir"), ditulis dengan Python, dan ditempatkan di /opt/bin/listdir
:
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
File Konfigurasi Saya
Saya kemudian membuat listdir.service
file untuk systemd
dan meletakkannya di sini /lib/systemd/system/listdir.service
::
[Unit]
Description=Test of listing CWD.
[Service]
ExecStartPre=chdir /usr/local
ExecStart=/opt/bin/listdir
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
Masalah
Ketika saya menjalankan systemctl start listdir
log sistem saya mencatat direktori root ("/") sebagai direktori kerja saat ini. Tentu saja, saya berharap /usr/local
sebagai direktori saat ini, karena saya pikir ExecStartPre
akan mengubah direktori sebelum memulai proses.
Jelas, saya membayangkan itu systemd
akan bekerja seperti skrip shell (meskipun saya tahu itu bukan skrip shell). Bisakah seseorang memberi saya ide tentang apa yang harus saya lakukan? Apakah mungkin untuk mengatur direktori kerja menggunakan systemd
? Terima kasih!
Sunting: Log sistem saya melaporkan kesalahan. (Saya baru saja memperhatikan.)
Executable path is not absolute, ignoring: chdir /usr/local
Jadi, chdir
adalah perintah shell, dan bukan executable itu sendiri. Baik. Tetapi apakah masih ada cara bagi saya untuk mengubah direktori menggunakan systemd
?