Ssh newbie: bagaimana saya bisa memastikan bahwa program yang saya jalankan melalui ssh telah berakhir?


0

Minta maaf sebelumnya untuk pertanyaan yang mungkin sederhana. Saya memiliki beberapa pertanyaan mendasar tentang penggunaan ssh untuk menjalankan program yang tidak dapat saya selesaikan melalui Google. Saya menggunakan Unix (melalui program "Terminal" di Mac OS 10.6.7).

Saya mengakses mesin yang berbeda menggunakan ssh. Sesampai di sana, saya menjalankan beberapa kode. Ini menghasilkan file output dalam direktori pada mesin itu. Saya mengakhiri menjalankan dengan melakukan "kontrol C." Saya menyingkirkan file output dengan melakukan:

find . -type f -name "*.vtk" -exec rm -f {} \;

Masalahnya adalah:

  1. Orang yang mesinnya memberi tahu saya ada beberapa versi dari kode saya yang berjalan. Saya tidak mengerti bagaimana saya tidak menghentikan ini dengan melakukan "kontrol C." Adakah yang bisa menjelaskan?

  2. Juga (ini mungkin terkait dengan masalah pertama), ketika saya menjalankan perintah "find" di atas untuk menyingkirkan file output, jika saya menunggu beberapa detik / menit, beberapa file output telah muncul lagi! Mungkinkah ini terkait dengan versi "hantu" dari kode yang sedang berjalan, yang tidak bisa saya hentikan?

Jika ada yang bisa memberi tahu saya cara memastikan saya telah menghentikan SEMUA berjalan dan bagaimana menyingkirkan SEMUA vtk (atau akhiran lainnya) file output dari direktori, saya akan sangat menghargai itu. Juga, setiap saran mengenai sumber daya online tentang semua hal ssh ini akan sangat disambut baik. Terima kasih banyak.


SSH hanya memungkinkan Anda mengakses terminal mesin lain, tidak memiliki manajemen proses khusus, ini semua linux dan dapat ditiru pada mesin lokal.

1
Ctrl+Cbiasanya menghentikan program yang berjalan di terminal, tetapi program diizinkan untuk menangkap sinyal. Juga, jika program terdiri dari beberapa proses, mungkin saja tidak semua proses akan dimatikan. Apakah Anda menulis program itu, atau hanya pengguna saja? Program apa itu? Varian apa dari unix yang berjalan pada mesin jarak jauh? Apa perintah ssh yang Anda gunakan untuk menjalankan program?
Gilles

Terima kasih atas tanggapan Anda, Gilles. Saya menulis programnya. Ada di C ++. Saya mengkompilasinya menggunakan "make" dan kemudian saya menjalankannya menggunakan "./programName" Apa yang Anda maksud dengan "beberapa proses?" Sayangnya, saya tidak tahu versi unix mana yang berjalan pada mesin jarak jauh. Perintah ssh yang saya gunakan untuk mengakses mesin lain adalah: ssh -X myUserName @ ipAddressOfTheMachine.

@ Ant: Jalankan uname -srpada mesin jarak jauh untuk melihat varian unix apa yang sedang berjalan. Apakah Anda menggunakan forkatau memberi tanda penangan dalam program Anda, atau perpustakaan yang mungkin menggunakannya di bawah tenda?
Gilles

Terima kasih lagi Gilles ... Saya mendapatkan Linux 2.6.31.14-0.4-desktop sebagai hasil dari uname -sr di komputer lain. Saya tidak tahu apa garpu atau penangan sinyal! Maaf atas ketidaktahuan saya. Saya memang menggunakan "-X" ketika mengakses mesin lain, dan itu memungkinkan saya untuk menggunakan editor di program X11 (Mac) saya.

Jawaban:


1

Jika Anda tidak menggunakan alat seperti screensemua program Anda yang berjalan akan berakhir setelah Anda keluar dari sesi ssh Anda. Juga Ctrl + Cakan menghentikan proses latar depan yang sedang berjalan. Jika Anda memulai beberapa proses latar belakang (baik dengan &di akhir perintah Ctrl + z, bgAnda atau Anda dapat membuatnya menjadi proses latar depan dengan mengetik fg.

Program ini psmemungkinkan Anda untuk melihat program yang sedang berjalan. Di sana Anda akan melihat 'instance yang masih berjalan'. Anda dapat menghentikannya menggunakan kill -9 <PID>atau killall -9 <prog-name>.


Terima kasih dcn. Saya sebenarnya sudah mencoba menggunakan killall. Saya lakukan: ps -A | grep nama program dan kemudian killall -9 nama program. Tapi saya mendapat pesan yang mengatakan bahwa tidak ada executable yang berjalan!

PS Untuk keluar dari sesi ssh, apakah cukup dengan menutup jendela saja?

Juga berguna dijalankan kill -1sebagai pengguna (tidak pernah root) yang membunuh semua proses yang dimiliki oleh pengguna itu.
Benjamin Bannier
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.