У меня есть веб-сервер ubuntu, который использует задание хронирования для подключения к стороннему sftp, извлекает файл и отключается. Это работало несколько недель и прекратилось.
Я попытался вручную ввести SSH в sftp со своего веб-сервера и получил следующую ошибку:
Ошибка запроса оболочки на канале 0
Это привело меня к https://stackoverflow.com/questions/27021641/how-to-fix-request-failed-on-channel-0
Это дало мне lsof / dev / pts / *, чтобы увидеть, какие у меня открытые файлы
sudo lsof /dev/pts/*
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1513 ubuntu 0u CHR 136,0 0t0 3 /dev/pts/0
bash 1513 ubuntu 1u CHR 136,0 0t0 3 /dev/pts/0
bash 1513 ubuntu 2u CHR 136,0 0t0 3 /dev/pts/0
bash 1513 ubuntu 255u CHR 136,0 0t0 3 /dev/pts/0
sudo 1670 root 0u CHR 136,0 0t0 3 /dev/pts/0
sudo 1670 root 1u CHR 136,0 0t0 3 /dev/pts/0
sudo 1670 root 2u CHR 136,0 0t0 3 /dev/pts/0
lsof 1671 root 0u CHR 136,0 0t0 3 /dev/pts/0
lsof 1671 root 1u CHR 136,0 0t0 3 /dev/pts/0
lsof 1671 root 2u CHR 136,0 0t0 3 /dev/pts/0
Если я правильно это понимаю, у меня из моего скрипта открыто 255 экземпляров псевдо-терминала. Таким образом, если я не совсем ошибаюсь, у меня две проблемы. Во-первых, мне нужно закрыть их, чтобы мой код снова заработал, а во-вторых, мне нужно исправить мой код, чтобы он закрыл это должным образом.