GNU/Linux >> Belajar Linux >  >> Linux

Layanan Systemd Tidak Akan Memulai Nodejs?

Saya mencoba membuat aplikasi nodejs saya untuk memulai saat boot. Ini berjalan dengan baik jika saya memulainya dari baris perintah sebagai pengguna odroid.

Ini file layanan saya:

[Unit]
Description=ProImage
After=network.target mysql.service

[Service]
ExecStart=/bin/node //eadn-wc01-5196795.nxedge.io/proimage/app.js
Restart=on-failure
RootDirectory=/proimage
WorkingDirectory=/proimage
User=root

[Install]
WantedBy=multi-user.target

Saat saya menjalankan:

sudo systemctl status proimage_daemon

Saya mendapatkan:

[email protected]:~$ sudo systemctl status proimage_daemon
● proimage_daemon.service - ProImage
   Loaded: loaded (/lib/systemd/system/proimage_daemon.service; enabled; vendor preset: enabled)
   Active: inactive (dead) (Result: exit-code) since Tue 2019-02-26 09:45:30 EST; 6s ago
  Process: 30797 ExecStart=/bin/node //eadn-wc01-5196795.nxedge.io/proimage/app.js (code=exited, status=200/CHDIR)
 Main PID: 30797 (code=exited, status=200/CHDIR)

Feb 26 09:45:29 odroid systemd[1]: proimage_daemon.service: Unit entered failed state.
Feb 26 09:45:29 odroid systemd[1]: proimage_daemon.service: Failed with result 'exit-code'.
Feb 26 09:45:30 odroid systemd[1]: proimage_daemon.service: Service hold-off time over, scheduling restart.
Feb 26 09:45:30 odroid systemd[1]: Stopped ProImage.
Feb 26 09:45:30 odroid systemd[1]: proimage_daemon.service: Start request repeated too quickly.
Feb 26 09:45:30 odroid systemd[1]: Failed to start ProImage.

Saya telah melihat journalctl menggunakan:

journalctl -u proimage_daemon.service

dan itu memberi saya hal yang sama sebagai berikut:

[email protected]:~$ journalctl -u proimage_daemon.service --since 09:38
-- Logs begin at Tue 2019-02-26 09:02:47 EST, end at Tue 2019-02-26 10:02:34 EST. --
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Trying to enqueue job proimage_daemon.service/stop/replace
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Installed new job proimage_daemon.service/stop as 13040
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Enqueued job proimage_daemon.service/stop as 13040
Feb 26 09:38:12 odroid systemd[1]: proimage_daemon.service: Job proimage_daemon.service/stop finished, result=done
Feb 26 09:38:12 odroid systemd[1]: Stopped ProImage ICU.
Feb 26 09:39:19 odroid systemd[1]: Started ProImage ICU.
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Main process exited, code=exited, status=200/CHDIR
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Unit entered failed state.
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Failed with result 'exit-code'.
Feb 26 09:39:19 odroid systemd[1]: proimage_daemon.service: Service hold-off time over, scheduling restart.
Feb 26 09:39:19 odroid systemd[1]: Stopped ProImage ICU.

Saya telah melihat selusin posting tentang masalah ini. Mereka semua mengatakan status=200/CHDIR menunjukkan masalah dengan direktori kerja.

Dalam kasus saya, direktori kerja pasti ada dan dimiliki oleh root. Saya telah mengatur izin ke 777 secara rekursif di direktori ini. Saya sudah mencoba banyak hal berbeda dengan file layanan, semuanya tidak berhasil.

Adakah yang punya saran tentang apa yang mungkin menjadi masalah saya?

Jawaban yang Diterima:

Per dokumentasi exec systemd, atur RootDirectory mirip dengan chroot. Dalam kombinasi dengan pengaturan WorkingDirectory , itu berarti systemd sedang chroot aplikasi Anda ke /proimage dan kemudian mencoba di dalam direktori itu ke cd /proimage , yang akan diterjemahkan menjadi /proimage/proimage .

Jika Anda tidak perlu melakukan proses chroot, hilangkan RootDirectory pengarahan. Jika Anda ingin melakukan chroot proses, hilangkan WorkingDirectory arahan.

Terkait:Ssh – Mencatat upaya akses SSH?
Linux
  1. 10 perintah systemd yang berguna:Referensi

  2. Cara membuat layanan Systemd di Linux

  3. Menambahkan layanan baru ke sistem Linuxd

  1. Thunderbird Tidak Akan Mulai?

  2. Steam Tidak Mulai Di Ubuntu 16.04?

  3. Systemd:Menggunakan After dan Requires

  1. Kelola startup menggunakan systemd

  2. Mulai gunakan systemd sebagai alat pemecahan masalah

  3. Bagaimana cara mengeluarkan pengatur waktu systemd dari status n/a?