Добрый день!
С начала в кратце опишу собсно сам проблемный скрипт.
Скрипт запускается под рутом и, всего навсего, запускает rsync под другим пользователем
Выглядит он примерно так:
#!/usr/local/bin/expect -f
...
set timeout 600
set timedout 1
while {$timedout == 1} {
set timedout 0
set pid [spawn su $login -c "/usr/local/bin/rsync -avz -e'ssh -cblowfish' ..."]
expect {
"Password" { send "$password\n"; exp_continue }
...
timeout { set timedout 1 }
}
if { $timedout = 1 } {
spawn kill -9 $pid
}
}
...
И вот, этот скрипт зачастую просто не завершает работу. Причем rsync отрабатывает. А вот su почему-то не возвращается. В списке процессов я вижу следующее:
#ps -auwwx | grep su
root 28079 0.0 0.0 0 0 p0- RE 11:13AM 0:01.36 [su]
Меня смущает это RE.. Более того, kill -9 в данном случае не помогает. Процесс не убивается. Убить его можно только, убив родителя.
Самое интересное, что при запуске этого скрипта вручную, вроде все Ок, а при запуске кроном - описанные выше проблемы.
Подозреваю, что что-то намудил с expect'ом.. Версий нет.. Может кто подскажет? :/