У меня есть экземпляр Ubuntu Linux ec2, работающий на AWS. Я использовал следующую команду
nohup php script.php
так что когда я отключаюсь от экземпляра с SSH, он все еще работает. Скрипт содержит огромный цикл, на выполнение которого уйдет около 4 дней.
for($i=0;$i<1000000;$i++) {
// It does other stuff that's kind of irrelevant
echo $i.'\n';
}
Я проверял nohup.out
файл с vim editor
чтобы видеть, добавляется ли он по-прежнему каждые пару часов. Вроде перестали добавляться. Но, войдя ps -ef
в терминале показывает, что скрипт все еще работает.
Любые идеи?
Первое, что приходит в голову, это то, что файловая система, содержащая этот файл, может быть заполнена. Программа будет получать ошибку каждый раз при попытке записи в файл, но может игнорировать их.
Если у экземпляра EC2 есть копия strace
программа, вы можете использовать ее, чтобы понять, что делает программа:
strace -p pid-of-process
перечислит все системные вызовы, выполняемые процессом. Если программа в основном выполняет файловый ввод-вывод, то:
strace -e trace=file -p pid-of-process
перечислит только выполняемые операции с файловой системой. Это может быть легче интерпретировать. В любом случае, это даст вам некоторое представление о том, что делает программа.