Возможно, это, считайте информацию с proc фс и используйте до н.э для вычисления:
#!/bin/bash
tot=$(awk '{ if (/MemTotal:/) {print $2} }' </proc/meminfo)
free=$(awk '{ if (/MemFree:/) {print $2} }' </proc/meminfo)
pers=$(echo "scale=0; 100 - 100 * $free / $tot" | bc)
echo '{"Memory":"'$pers'"}'
Если вы просто хотите убедиться, что ваш скрипт перезапустится после смерти, вы можете сделать что-то вроде while true ; do php my_script.php ; done > /dev/null
Это будет ждать окончания работы my_script.php, а затем запустить его снова. Все результаты будут отправлены в /dev/null
Если вы хотите использовать nohup, то вы должны сделать следующее
$ echo 'while true ; do php my_script.php ; done > /dev/null' > ~/php_run_loop.sh
$ chmod a+x ~/php_run_loop.sh
$ nohup ~/php_run_loop.sh
ПРИМЕЧАНИЕ: Если у вас есть ошибка или другая проблема в вашем php-скрипте, это приведет к тому, что он будет повторяться снова и снова без ограничений. Это не изящное решение, но это решение.
BTW, cron хорош для запуска короткоживущего процесса по расписанию (каждые 5 минут, или каждую неделю, и т.д.), он не знает, как поддерживать существующий процесс в рабочем состоянии.
С nohup
вы должны также перенаправлять ошибки. Следующая команда запускает скрипт с выводом и ошибками, перенаправляющими на / dev / null:
nohup php my_script.php >/dev/null 2>&1 &
Но ваш скрипт может быть прерван по другим причинам (ошибка в скрипте, oom-killer и т. Д.). Итак, вы должны демонизировать его с помощью системного init (если он поддерживает автоматический перезапуск - выскочка, systemd и некоторые другие могут это сделать). Или вы должны написать задачу cron для проверки и перезапустить скрипт, если он не запускается.
Возможно, вы захотите посмотреть, что происходит, а не перенаправить вывод на /dev/null
.
Предлагаю открыть экран
или tmux
. Оба они являются терминальными мультиплексорами , которые останутся в живых, даже если Вы выйдете из системы.
Например, (...)
для получения информации
$ screen
$(inside screen-t1): ./get_tweets.php
.... running first
Теперь нажмите Ctrl-a c
, чтобы открыть новый терминал.
$(inside screen-t2): ./parse_tweets.php
... running second
Ctrl-a d
позволяет отсоединить сессию. При повторном входе в систему используйте экран -r
Примечание: Вы можете отобразить на экране строку состояния для визуализации различных окон.