Mount gagal dan tidak kehabisan waktu

1

Saya punya skrip yang berjalan setiap 30m dan memeriksa apakah / mnt / controlurg sudah terpasang. Jika tidak, ia mencoba untuk memasang dan mengambil beberapa file darinya (ini adalah drive Windows). Sebelum 12,04 saya tidak punya masalah tetapi sekarang ketika skrip tidak dapat me-mount (untuk alasan apa pun) remote drive perintah mount tidak berakhir dan disimpan sebagai proses latar belakang. Dan yang terburuk, proses pemasangan latar belakang zombie baru dibuat setiap 30m dan CPU Load Average semakin tinggi (sekarang adalah 44% !!).

Memeriksa proses yang sedang berjalan saya mendapatkan beberapa entri seperti itu:

root     29458 29420  0 08:35 ?        00:00:00 mount /mnt/controlurg
root     29459 29458  0 08:35 ?        00:00:00 /sbin/mount.cifs //controlurg/c$ /mnt/controlurg -o rw,noauto,user=root,passwd=example,utf8
  • Bagaimana saya bisa membunuh proses itu? "kill -9 29459" tidak berfungsi.
  • Mengapa proses ini tidak kehabisan waktu? Bagaimana saya bisa membunuh mount gagal ini secara otomatis?

Fragmen menarik dari /opt/scripts/sftpcont.shl:

cat $SCRIPT/computers.dat | while read line
do
echo `date "+%Y/%m/%d %H:%M:%S"` ": Copying to ${line} with samba"
isalive=`ping -q -c1 $line| grep "1 received" |wc -l`
if [ $isalive!= "0" ]
 then
  mount /mnt/$line
  rm /mnt/$linea/contingenciasap/*
  cp $SCRIPT/fitxers/sapfitcrip.zip /mnt/$line/contingenciasap
  umount /mnt/$line
fi
done

Terima kasih

Dimas
sumber

Jawaban:

0

Akan sangat bagus jika Anda menunjukkan naskah Anda. Tapi bagaimanapun, Anda harus menggunakan perintah keluar seperti:

mount <partition> /mnt/controlurg || exit 1

Perintah ini hanya akan berhenti menjalankan skrip. Anda dapat menampilkan beberapa pesan (atau menulis ke file log) seperti:

mount <partition> /mnt/controlurg || eval 'echo "Error mounting partition" 1>&2; exit 1'

mount <partition> /mnt/controlurg || eval 'echo "Error mounting partition\n" >> mount.log; exit 1'

Untuk membunuh semua proses gunakan killallperintah.

Viktor K
sumber
Perintah killall (killall mount) hanya membunuh proses "mount / mnt / controlurg", tetapi bukan /sbin/mount.cifs ... Jadi Beban CPU terus bertambah tinggi. Saya mencoba membunuh -9, killall ... restart samba, ... dan proses latar belakang tetap :( Saya telah menambahkan skrip dalam posting. Saya tidak dapat menggunakan "|| keluar 1" karena saya tidak ingin menghentikan skrip ketika mount gagal, skrip harus terus berjalan
Dimas
Baik. Daripada Anda harus menggunakan perintah break atau melanjutkan.
Viktor K
Mungkin, lanjutkan apa yang Anda cari (baca baris lain dan coba pasang). Gunakan: || lanjutkan
Viktor K
Oh! Maaf saya lupa. Coba killall /sbin/mount.cifs. Semoga ini bisa membantu Anda.
Viktor K