Saya memiliki skrip python yang biasanya saya jalankan dengan perintah ini:
(environment) python run.py
Saya ingin menjalankan skrip ini di awal. (Saya menggunakan ubuntu) Ini layanan saya:
[Unit]
Description=My Script Service
After=multi-user.target
[Service]
Type=idle
ExecStart=/home/user/anaconda3/bin/python /home/user/space/run.py
[Install]
WantedBy=multi-user.target
BTW, saya tidak bisa menjalankan skrip ini, tetapi saya bisa menjalankan skrip apa pun yang tidak di dalam lingkungan. Bagaimana saya bisa menjalankan skrip python saat startup (virtualenv)?
sudo systemctl status user_sent
● user_sent.service - Mail Service
Loaded: loaded (/lib/systemd/system/user_sent.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since xxxxx 16:30:20 MSK; 3s ago
Process: 3713 ExecStart=/usr/bin/python run.py (code=exited, status=200/CHDIR)
Main PID: 3713 (code=exited, status=200/CHDIR)
python
systemd
daemon
virtualenv
Melati
sumber
sumber
/usr/bin/python run.py
lihat stackoverflow.com/questions/37211115/… dan unix.stackexchange.com/questions/278188/…/path/to/your/virtualenv/bin/python
Jawaban:
File unit Anda sudah benar. Jika Anda ingin menjalankan file python di bawah venv, Anda hanya perlu referensi biner python di direktori venv seperti yang Anda lakukan dengan
/home/user/anaconda3/bin/python
Apa yang menonjol adalah alasan unit Anda gagal:
code=exited, status=200/CHDIR
. Ini kemungkinan besar menunjukkan masalah dalam skrip Anda.Jika Anda ingin men-debug itu, Anda akan melakukan hal berikut:
ExecStart=
persis seperti itu di bawah root untuk melihat, jika masalah disebabkan oleh skrip Anda.journalctl -u <unit_name>
. Itu akan memberi Anda lebih banyak informasi tentang masalah dengan unit Anda.Skrip Posting
Kedua
[Service]
opsi berikut berfungsi:atau
Satu-satunya perbedaan adalah bahwa panggilan relatif dalam skrip Anda dijalankan dari direktori yang berbeda. Jadi, jika skrip Anda berisi baris
open("my_file", "w")
, pada contoh pertama akan membuat file/my_file
dan yang kedua file/home/user/space/my_file
.sumber