Dalam bash, apa konsekuensi negatif potensial dari menjeda proses dengan control-z?

11

Menggunakan bash, seseorang dapat menjeda proses dengan control-z. Namun, adakah keadaan atau pedoman umum yang harus diperhatikan di mana suatu proses tidak akan berperilaku baik dengan dijeda?

Skenario spesifik saya adalah membuat file tar yang membutuhkan waktu lebih lama dari yang diharapkan. Saya ingin menghentikannya untuk meletakkannya di latar belakang, tetapi memutuskan untuk tidak melakukannya. Pertanyaan saya, tentu saja, tidak khusus untuk tar. Sebaliknya, saya berharap untuk memahami fitur jeda di bash sedikit lebih baik serta apa yang akan membuat proses bereaksi buruk menjadi dijeda.

Wesley
sumber

Jawaban:

3

Tugas penyimpanan (pvmove, veritas vx-apa pun) yang bergantung pada salinan atom. Tidak baik jika mereka terjebak di luar kendali mereka. Itu tergantung pada apakah tugas hanya memadamkan beberapa API dan melakukan sisanya dari ruang kernel, maka itu aman. Jika itu terjadi di bahwa proses * * di shell Anda, kemudian benar-benar pergi dengan layar dan menjaga tangan off.

Pasti merekomendasikan Anda untuk menghindari menghentikan mereka ke latar belakang. Perintah yang menggunakan buffer seperti dd tampaknya lebih baik, dengan pengecualian drive tape yang disebutkan di atas.

(Saya pernah memenangkan reboot tambahan, kurang tidur dan banyak paranoia ketika itu terjadi pada saya ketika membersihkan kekacauan orang lain. Jelas: jangan mencoba mengambil jalan pintas jika Anda memperbaiki cara pintas orang lain ...)

Florian Heigl
sumber
6

Jika proses Anda menulis data, perlu diketahui bahwa masalah waktu dengan perangkat akses dan buffer non-acak mungkin bermasalah. Saya pernah melihat tape drive memiliki masalah dengan ini di kali.

Magellan
sumber
sesi jaringan / firewall mungkin time out dan tidak di-restart karena TCP-SYN tidak dikirim ulang.
jippie
Tumpukan TCP akan terus mengirim ACK bahwa jendela sudah penuh, kan?
Magellan
Paket tetap hidup bukan bagian dari TCP atau protokol IP, yang terbaik itu adalah bagian dari aplikasi. Jadi firewall atau klien atau server jarak jauh dapat kehabisan waktu menunggu paket dan menjatuhkan soket / koneksi.
Jippie
Tidak berbicara dengan keepalives, itu jelas merupakan level Aplikasi. Saya berbicara tentang ACK untuk jendela geser TCP di level Transport.
Magellan
2

Dan skenario duniawi: melakukan Ctrl-Z, lalu melupakannya dan keluar, dan kehilangan proses! =)

gfountis
sumber
0

Bukan jawaban yang benar-benar spesifik untuk pertanyaan itu, tetapi sebagai alternatif, Anda dapat mencoba menjalankan pekerjaan serentak dengan menggunakan screen. Dengan demikian Anda dapat menggunakan shell secara bersamaan dengan program lain.

jhtong
sumber
Ya, layar selalu merupakan cara yang baik untuk pergi. Namun saya tidak yakin bagaimana menanggapi nama Anda.
Wesley
@toiletfreak Bagaimana layar merupakan alternatif untuk berhenti? Layar menjalankan pekerjaan di latar belakang, bukan? Tapi itu berlanjut jika Anda melepas layar ...
Bernhard