GNU/Linux >> Belajar Linux >  >> Linux

Proses latar belakang di linux

Ada satu hal penting yang perlu Anda lakukan setelah menambahkan & di akhir perintah. Prosesnya masih terhubung ke terminal. Anda perlu menjalankan disown setelah menjalankan perintah java.

java -jar yourApp.jar > log.txt &
disown

Sekarang, Anda dapat menutup terminal.


Ada beberapa cara untuk mencapai hal seperti itu:

  1. nohup java -server myApplication.jar > /log.txt - ini cukup lurus ke depan. Itu hanya akan menempatkan aplikasi di latar belakang. Ini akan berhasil tetapi itu bukan cara yang baik untuk melakukannya.
  2. Gunakan pembungkus shell dan aplikasi OR daemon di atas. Pendekatan ini digunakan oleh banyak proyek sumber terbuka dan cukup bagus untuk sebagian besar skenario. Selain itu dapat disertakan dalam init.d dan diperlukan run level dengan perintah start, stop dan status reguler. Saya dapat memberikan contoh jika diperlukan.
  3. Buat server daemon Anda sendiri menggunakan Java Service Wrapper atau Apache Jakarta Commons Daemon. Sekali lagi - keduanya sangat populer, teruji dengan baik, dan dapat diandalkan. Dan tersedia untuk Linux dan Windows! Yang dari Apache Commons digunakan oleh server Tomcat! Selain itu ada Akuma.

Secara pribadi saya akan menggunakan solusi 2 atau 3 jika Anda perlu menggunakan server ini di masa mendatang dan/atau mendistribusikannya ke klien, pengguna akhir, dll. nohup bagus jika Anda perlu menjalankan sesuatu dan tidak punya waktu untuk mengembangkan solusi yang lebih rumit untuk masalah tersebut.

Iklan 2:

Skrip terbaik, yang digunakan oleh banyak proyek, dapat ditemukan di sini.

Untuk Debian/Ubuntu dapat menggunakan skrip yang sangat sederhana berdasarkan start-stop-daemon . Jika ragu ada /etc/init.d/skeleton seseorang dapat memodifikasi.

#!/bin/sh

DESC="Description"
NAME=YOUR_NAME
PIDFILE=/var/run/$NAME.pid
RUN_AS=USER_TO_RUN
COMMAND=/usr/bin/java -- -jar YOUR_JAR

d_start() {
    start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --exec $COMMAND
}

d_stop() {
    start-stop-daemon --stop --quiet --pidfile $PIDFILE
    if [ -e $PIDFILE ]
        then rm $PIDFILE
    fi
}

case $1 in
    start)
    echo -n "Starting $DESC: $NAME"
    d_start
    echo "."
    ;;
    stop)
    echo -n "Stopping $DESC: $NAME"
    d_stop
    echo "."
    ;;
    restart)
    echo -n "Restarting $DESC: $NAME"
    d_stop
    sleep 1
    d_start
    echo "."
    ;;
    *)
    echo "usage: $NAME {start|stop|restart}"
    exit 1
    ;;
esac

exit 0

Linux
  1. echo Contoh Perintah di Linux

  2. Proses Pembuatan Linux?

  3. Proses Linux di latar belakang - Berhenti bekerja?

  1. Linux – Bagaimana Membatasi Proses Ke Satu Cpu Core Di Linux??

  2. Linux:proses menjadi layanan

  3. Proses yang berjalan di latar belakang terbunuh di linux

  1. Proses Boot Linux

  2. Status Proses Linux

  3. Membuat daemon di Linux