kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
Saad Rafey
Saad Rafey
Question

Cara memulai ulang (atau mengatur ulang) proses yang sedang berjalan di linux

Saya memiliki dua sistem Linux yang berkomunikasi melalui soket (Desktop dan papan pengembangan berbasis ARM).

Saya ingin me-restart (atau mengatur ulang) aplikasi klien saya (yang berjalan di papan pengembangan) ketika server mengirimkan pesan tertentu yang telah ditentukan sebelumnya. Saya tidak ingin me-restart (reboot) Linux, saya hanya ingin aplikasi klien me-restart sendiri secara otomatis.

Saya tidak dapat memahami bagaimana hal itu harus dilakukan.

5 2015-06-06T10:30:04+00:00 3
Gilles  'SO- stop being evil
Gilles 'SO- stop being evil
Pertanyaan edit 6 Juni 2015 в 12:32
Unix & Linux
process
monitoring
signals
 yaegashi
yaegashi
6 Juni 2015 в 11:56
2015-06-06T11:56:02+00:00
Lebih
Sumber
Sunting
#21397377

Buatlah klien Anda mengeksekusi /proc/self/exe ketika menerima pesan paticular itu. Anda tidak perlu tahu di mana eksekusi sebenarnya berada dalam sistem berkas. Dan anda dapat menggunakan kembali main()'s argv untuk membuat vektor argumen baru.

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
        char buf[32] = {};
        char *exec_argv[] = { argv[0], buf, 0 };
        int count = argc > 1 ? atoi(argv[1]) : 0;

        printf("Running: %s %d\n", argv[0], count);
        snprintf(buf, sizeof(buf), "%d", count+1);
        sleep(1);

        execv("/proc/self/exe", exec_argv);

        /* NOT REACHED */
        return 0;
}

restart.c ini berjalan seperti ini:

$ gcc restart.c 
$ ./a.out 3
Running: ./a.out 3
Running: ./a.out 4
Running: ./a.out 5
 yaegashi
yaegashi
Jawaban edit 6 Juni 2015 в 12:16
6
0
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
Solution / Answer
Gilles  &#39;SO- stop being evil
Gilles 'SO- stop being evil
6 Juni 2015 в 9:05
2015-06-06T21:05:28+00:00
Lebih
Sumber
Sunting
#21397378

Cara normal untuk melakukan ini adalah dengan membiarkan program Anda keluar, dan menggunakan sistem monitoring untuk me-restart-nya. Program init menawarkan sistem monitoring seperti itu. Ada banyak program init yang berbeda (SysVinit, BusyBox, Systemd, dll.), dengan mekanisme konfigurasi yang sangat berbeda (selalu menulis file konfigurasi, tetapi lokasi dan sintaks file berbeda), jadi carilah dokumentasi dari program yang Anda gunakan. Konfigurasikan init untuk meluncurkan program Anda pada waktu boot atau atas permintaan eksplisit, dan untuk me-restart jika program mati. Ada juga program monitoring yang lebih bagus, tetapi Anda tidak membutuhkannya. Pendekatan ini memiliki banyak keuntungan dibandingkan dengan meminta program melakukan restart dengan sendirinya: pendekatan ini standar, sehingga Anda dapat me-restart banyak layanan tanpa harus peduli bagaimana program itu dibuat; pendekatan ini bekerja bahkan jika program mati karena bug.

Ada mekanisme standar untuk memberitahu sebuah proses untuk keluar: sinyal. Kirimkan program Anda sinyal TERM. Jika program Anda perlu melakukan pembersihan, tulislah signal handler. Itu tidak menghalangi adanya perintah khusus program untuk mematikannya jika Anda memiliki saluran administratif untuk mengirimkan perintah seperti ini.

5
0
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
 dr01
dr01
6 Juni 2015 в 10:57
2015-06-06T10:57:30+00:00
Lebih
Sumber
Sunting
#21397376

Jika aplikasi klien adalah layanan Linux, aplikasi ini bisa di-restart dengan perintah ini:

service <clientapp> restart

atau dipaksa untuk memuat ulang konfigurasinya:

service <clientapp> reload
service <clientapp> force-reload

Jika, kemungkinan besar, ini adalah aplikasi kustom, aplikasi ini harus memiliki fitur yang tertanam dalam kodenya untuk memulai ulang sendiri atau memuat ulang konfigurasinya setelah menerima sinyal atau peristiwa. Jika gagal melakukannya, sebagai upaya terakhir, Anda selalu dapat mematikan aplikasi klien:

pkill -9 <clientapp>

dan memulai ulang lagi, tetapi itu jelek karena meninggalkan aplikasi dalam keadaan yang tidak ditentukan.

2
0
Related communities 3
Belajar GNU/Linux Indonesia
Belajar GNU/Linux Indonesia
6 900 pengguna
Komunitas GNU/Linux Indonesia di Telegram, baca peraturan group di: telegra.ph/Peraturan-BGLI-03-07
Buka telegram
Deepin Linux Indonesia
Deepin Linux Indonesia
513 pengguna
ℹ️ Selamat datang di Grup Telegram Deepin Linux Indonesia ! Grup linux 📎 Pop!_OS: @pop_linux Channel 📎 Void: @void_time Group Programming 📎 Alpine.js: @alpinejsid 📎 Rust: @rust_community 📎 Go: @go_community
Buka telegram
Pop!_OS Linux Indonesia
Pop!_OS Linux Indonesia
141 pengguna
Komunitas pengguna Pop!_OS seindonesia Grup linux 📎 Deepin: @deepin_indonesia Channel 📎 Void: @void_time Group Programming 📎 Alpine.js: @alpinejsid 📎 Rust: @rust_community 📎 Go: @go_community
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Анна Литвиненко
Terdaftar 2 hari yang lalu
2
Inessa bu
Terdaftar 1 bulan yang lalu
3
Denis Babushkin
Terdaftar 1 bulan yang lalu
4
asakuno asakuno
Terdaftar 1 bulan yang lalu
5
aldo salerno
Terdaftar 2 bulan yang lalu
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
ES
ID
JA
RU
© kzen.dev 2023
Sumber
unix.stackexchange.com
di bawah lisensi cc by-sa 3.0 dengan atribusi