LinuxForum.Fans
Тема

Помогите с запуском скрипта и висячим процессом.

Автор: Toje 11 сообщений 2894 просмотров
#292310

Есть простой скрипт

text
#!/bin/sh

######### Script Backup ############

# Mount BackupServer

mount //192.168.2.12/backups /mnt/istor -o user=admin,password=********** ,iocharset=utf8

# Macros of current date

current_date=`date +%F`

# Create directories in BackupServer

mkdir /mnt/istor/admin/centos/gate/$current_date mkdir /mnt/istor/admin/centos/gate/$current_date/scripts

# Backup

tar -cvjf /mnt/istor/admin/centos/gate/$current_date/gate-etc.tbz2 /etc tar -cvjf /mnt/istor/admin/centos/gate/$current_date/gate-openvpnkeys.tbz2 /usr/share/openvpn/easy-rsa/2.0/keys tar -cvjf /mnt/istor/admin/centos/gate/$current_date/gate-lightsquid.tbz2 /var/www/html/lightsquid tar -cvjf /mnt/istor/admin/centos/gate/$current_date/gate-nginx-html.tbz2 /usr/share/nginx cp /root/*.sh /mnt/istor/admin/centos/gate/$current_date/scripts/

# Umount BackupServer

umount /mnt/istor

############## END #####################################

Запускал , ничего не происходит.
в процессах висит:
837 ? Ss 0:00 /bin/sh /root/backup_gate.sh
838 ? D 0:00 mount //192.168.2.12/backups /mnt/istor -o user=admin,password=********,iocharset=utf8

2050 ? Ss 0:00 /bin/sh /root/backup_gate.sh
2051 ? D 0:00 mount //192.168.2.12/backups /mnt/istor -o user=admin,password=********,iocharset=utf8

2998 ? Ss 0:00 /bin/sh /root/backup_gate.sh
2999 ? D 0:00 mount //192.168.2.12/backups /mnt/istor -o user=admin
3993 ? Ss 0:00 /bin/sh /root/backup_gate.sh
3994 ? D 0:00 mount //192.168.2.12/backups /mnt/istor -o user=admin,password=**,iocharset=utf8
4935 ? S 0:00 CROND
4937 ? Ss 0:00 /bin/sh /root/backup_gate.sh
4938 ? D 0:00 mount //192.168.2.12/backups /mnt/istor -o user=admin,password=**,iocharset=utf8
5802 ? S 0:00 CROND
5804 ? Ss 0:00 /bin/sh /root/backup_gate.sh
5805 ? D 0:00 mount //192.168.2.12/backups /mnt/istor -o user=admin,password=**,iocharset=utf8
6693 ? D 0:00 mount //192.168.2.12/backups /mnt/istor -o user=admin,password=**,iocharset=utf8
7410 ? D 0:00 mount //192.168.2.12/backups /mnt/istor -o user=admin,password=**,iocharset=utf8
7495 ? D 0:00 mount //192.168.2.12/backups /mnt/istor -o user=admin,password=**,iocharset=utf8

пару дней назад 192.168.2.12 невозможно было на него зайти. и видимо процесс подвис.

пытался убить процесс
kill 837
kill 838
получилось вот так:
837 ? Zs 0:00 [backup_gate.sh] <defunct>
838 ? D 0:00 mount //192.168.2.12/backups /mnt/istor -o user=admin,password=**,iocharset=utf8

Подскажите что тут можно сделать?

#292311

В отдельно строка выполняется ?

user=admin,password=********** ,iocharset=utf8
#292313
l_cho написал:
В отдельно строка выполняется ?

user=admin,password=********** ,iocharset=utf8

это в скрипте прописано

#292315
"Toje" написал:
это в скрипте прописано

Вероятно, имелось в виду, «а вручную удалённый ресурс монтируется?»

#292316
"Lupo Alberto" написал:
Вероятно, имелось в виду, «а вручную удалённый ресурс монтируется?»

Честно говоря плохо знаком с linux, поэтому сори за такого рода вопросы. Вручную ничего не монтировал. скрипт запускается кроном. А есть разница в том как монтируется удаленный ресурс?
попробую..
ничего не происходит... курсор прыгает в самое начало след строки там и стоит

#292340
l_cho написал:
для начала тогда http://www.opennet.ru/man.shtml?topic=mount&category=8 и вам все станет ясно

Почитал конечно, но проблема не решилась, В таблице mtab этот ресурс прописан. но войти на него не смог. попробывал размонтировать никакого результата.
Меня больше волнуют висячие процессы. и никакого ответа на команды, ни ошибки ничего.

#292398

Имхо, было бы не плохо добавить в скрипт какой-нибудь флаг его завершения. Обычно я делаю так:

text
PID_FILE=/tmp/$(basename $0).pid

if [ -f "${PID_FILE}" ]; then OLD_PID=$(cat "${PID_FILE}") ps ${OLD_PID} 2>&1 1>/dev/null [ $? -eq 0 ] && echo "Предыдущая копия скрипта не завершила свою работу" && exit 1 fi

touch "${PID_FILE}" echo $$ > "${PID_FILE}"

# далее можно смело выполнять любые действия, с уверенностью в том, что этот скрипт работает в единственном экземпляре ...

Ну а для того, чтобы прибить все mount-ы и т.п:
[console]killall backup_gate.sh[/console]
либо
[console]killall mount[/console]
либо
[console]ps ax | grep backup_gate.sh[/console]
и ручками килять :)

Для решения ситуации с монтированием неплохо было бы проверить смонтирован ли удаленный ресурс (команда mount). Если он смонтирован - размонтировать, дождаться запуска скрипта (либо запустить руками) и посмотреть на результат выполнения. Судя по тому, что у вас висит куча процессов mount - проблема именно в этом.

Так же можно включить дебаггинг выполнения скрипта (если ваш /bin/sh -> /bin/bash):
#!/bin/sh -x

+ к этому частенько бывает полезной функция (имеет смысл при выполнении нескольких "молчаливых" команд подряд):

text
function silent () {
 echo "[$(date "+%Y%m%d %H:%m:%S")] command: $*"
 // далее можно добавить перенаправление 2>/dev/null (по вкусу)
 $*
}

И соответственно вместо вызова команды напрямую использовать нечто:
silent mkdir /mnt/istor/admin/centos/gate/$current_date

#292607
"afanasev.p" написал:
Ну а для того, чтобы прибить все mount-ы и т.п:
Консоль
killall backup_gate.sh

либо
Консоль
killall mount

либо
Консоль
ps ax | grep backup_gate.sh

и ручками килять ab

31885 ? D 0:00 mount //192.168.2.12/backups /mnt/istor
висит процесс, я выполняю
kill 31885
процесс висит, пробывал
kill -9 31885
он все равно висит...
umount конечно сообщает
device is busy

#292609
"Toje" написал:
umount конечно сообщает
device is busy

umount -l /mnt/istor

#292616

Спасибо за советы. Последняя команда тоже безрезультатно. пришлось-таки перезапускать сервер.

Войдите или зарегистрируйтесь, чтобы ответить.