Saya menjalankan Ubuntu 16.04 pada Laptop HP lama
Saya telah menginstal beberapa perangkat lunak untuk menciptakan server plex kecil buatan sendiri. Saya telah menginstal sonarr, radarr, banjir, jackett, dll dan mereka semua secara otomatis diluncurkan saat startup!
Beberapa hari yang lalu saya memutuskan untuk menginstal rclone juga dan saya telah membuat (berkat proyek GitHub) beberapa folder yang harus dipasang pada setiap startup dengan meluncurkan skrip (saya meluncurkannya melalui penulisan terminal sudo ~/bin/check.mount
). Sonarr dan Radarr diatur untuk mengunduh barang melalui banjir ke folder temp dan kemudian mengekspornya ke salah satu dari dua folder yang dipasang ini.
Masalahnya adalah, pada saat saya secara manual meluncurkan skrip Sonarr / Radarr sudah berdiri dan berjalan dan tidak dapat menemukan folder root mereka, jadi mereka memberi saya kesalahan.
Yang ingin saya lakukan adalah membuat layanan mountgdrive.ser (layanan, atau apa pun yang diperlukan) untuk secara otomatis meluncurkan skrip check.mount dan, jika itu tidak cukup, masukkan penundaan di sonarr.service dan radarr.service! Apakah itu mungkin?
Saya menulis ini dengan sudo nano /etc/systemd/system/mountgdrive.service
[Unit]
Description=MountSmokeScreen
After=network.target
[Service]
Type=oneshot
ExecStart=/home/samsepioldoloresh4ze/bin/check.mount
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
dan ditambahkan ke sonarr.service dan radarr.service mountgdrive.service
di After=
bit, seperti ini
[Unit]
Description=Sonarr
After=syslog.target network.target mountgdrive.service
[Service]
User=samsepioldoresh4ze
etcetc
....
Tapi itu tidak berhasil! Sonarr dan Radarr mulai secara normal, tetapi drive tidak terpasang! Apa yang saya lakukan salah?
Juga, rtcwake tidak berfungsi di laptop saya - saya pikir ini masalah kernel ?! Apakah ada cara untuk memperbaikinya?
sonarr.service
danradarr.service
akan dijalankan setelahmountgdrive.service
habis dan berjalan?mountgdrive.service
berjalan tetapi tidak melakukan apa-apa (tidak me-mount drive), dan kemudiansonarr.service
danradarr.service
berjalan secara normal karena ubuntu dieksekusimountgdrive.service
.mount
unit . Jika semua yang Andamountgdrive.service
lakukan adalah memasang direktori atau sejenisnya, Anda mungkin dapat mengubahnya ke.mount
layanan. Karena membuatnya lebih dapat diandalkan khususnya karena Anda memiliki ketergantungan padanya.Jawaban:
Alasan Anda mengalami masalah ini adalah karena Anda menggunakan
After=
saat Anda juga membutuhkanRequires=
atauWants=
.Ada 3 properti utama untuk mengelola dependensi. Saya akan mencoba menjelaskan perbedaannya secara singkat tetapi Anda dapat menemukan rincian lebih lanjut di Bagian Pilihan [Unit] | freedesktop.org
After=
Opsi ini hanya mengatur urutan unit, itu tidak menjamin bahwa layanan telah selesai memulai.
Wants=
Opsi ini memungkinkan unit Anda untuk memulai hanya setelah unit lain selesai memulai. (Tidak masalah apakah itu mulai berhasil atau tidak)
Requires=
Sama seperti
Wants=
, bagaimanapun, ini akan membuat unit Anda mulai hanya setelah dependensi telah berhasil dimulai.Anda juga dapat menggunakan kebalikan dari masing-masing opsi tersebut.
After=
dibalikan olehBefore=
Wants=
dibalikan olehWantedBy=
Requires=
dibalikan olehRequiredBy=
Untuk memperbaiki masalah Anda, Anda perlu mengubah layanan pemasangan ke:
Atau Anda dapat menambahkan
Wants=mountgdrive.service
kesonarr.service
danradarr.service
unit.Anda dapat melakukannya tanpa memodifikasi file default dengan menjalankan yang berikut (Anda perlu melakukan hal yang sama untuk
radarr.service
):Dan masukkan yang berikut ini:
Catatan: Anda dapat mengganti
Wants=
denganRequires
atauWantedBy=
denganRequiredBy=
jika Anda tidak ingin kedua layanan memulai sama sekali jikamountgdrive.service
gagal (MeskipunWants=
biasanya cukup dan bahkan direkomendasikan dalam dokumen).EDIT: Opsi
WantedBy
danRequiredBy
hanya dapat digunakan di bawah[Install]
bagian. (Terima kasih @Yankee )sumber
Wants=
danWantedBy=
, saya pasti akan menggunakannya !! Saya mendapatkan kesalahan ini ketika saya me-restart laptop i.imgur.com/a3LE3G9.pngCan't open /.config/SmokeScreen/smokescreen.conf
. Mungkin Anda memiliki "~ / .config / ..." di skrip yoru. Anda harus mengganti tilde (~
) dengan path lengkap yaitu/home/you_user_name/.config/....
(Atau gunakan path relatif ke skrip Anda)$HOME
belum tersedia saat boot, karena belum ada pengguna yang masuk.WantedBy=
di[Unit]
bagian? Saya pikir itu hanya bisa masuk[Install]
.