GNU/Linux >> Belajar Linux >  >> Linux

Skrip Nohup untuk Python tidak berfungsi saat berjalan di latar belakang dengan &

Anda perlu menyiram stdout setelah mencetak:sys.stdout.flush(); jika tidak, perlu beberapa saat untuk mengisi buffer stdout.


Lewati flag python -u untuk unbuffering stdout

nohup python -u test.py &

Python akan menyangga stdout sebaliknya. Ini tidak memerlukan perubahan kode.

Dari halaman manual:

       -u     Force  stdin,  stdout and stderr to be totally unbuffered.  On systems where it matters, also put stdin, stdout
          and stderr in binary mode.  Note that there is internal buffering in xreadlines(), readlines() and  file-object
          iterators ("for line in sys.stdin") which is not influenced by this option.  To work around this, you will want
          to use "sys.stdin.readline()" inside a "while 1:" loop.

Baru saja mengalami masalah serupa. Skrip saya bekerja dengan baik tanpa nohup. Dengan nohup, skrip akan mogok dengan SyntaxError.

Masalahnya adalah konteks eksekusi nohup yang akan menggunakan alias python dipetakan ke python2 bukannya python3 .

Memperbaikinya dengan menentukan python3 bukannya python .


Linux
  1. Menjalankan Script Dengan “. ” Dan Dengan “sumber”?

  2. Cara "Tepat" Untuk Menguji Jika Suatu Layanan Berjalan Dalam Skrip?

  3. Bagaimana skrip bash dapat mengetahui direktori tempat ia diinstal ketika bersumber dari . operator?

  1. .bash_profile Tidak Bersumber Saat Menjalankan Su?

  2. Masalah Dengan Keyboard Tidak Berfungsi Saat Di-boot?

  3. Ubah direktori kerja di shell dengan skrip python

  1. nohup:perintah tidak ditemukan

  2. Tidak dapat mematikan skrip Python dengan Ctrl-C

  3. Baris shebang Ubuntu Python tidak berfungsi