Это просто означает, что родитель демона (pid 677) начал новую сессию, вилку, а ребёнок (pid 678) унаследовал эту сессию и продолжил работу.
Это могло произойти, если какой-нибудь оберточный сценарий использовался для даемонизации чего-нибудь (и по какой-то причине не выполнил свою цель - возможно, для обработки перезагрузок), или просто потому, что процесс выбрал вилку снова перед тем, как войти в устойчивое состояние.
Я бы сказал, что процесс является фактически демоном, если PPID равен 1 и у него нет управляющего терминала. Ограничение session id/process group id часто также верно, но на самом деле не требуется для демонического поведения.
gmail позволит использовать их SMTP-сервер для отправки электронных писем с помощью другого адреса электронной почты . Необходимо настроить устройства для входа на сервер Google с использованием полномочий gmail, но после этого можно отправлять из других учетных записей.
Вы можете настроить свой собственный сервер с помощью постфикса или подобного на RPi, но тогда вам придется отправлять и получать SMTP, и все головные боли в безопасности, которые с этим связаны.
-121--150529-Ваше первое решение работает, просто требуется немного времени (5-10 секунд в моем тесте на Кали), чтобы перейти от «(неполного)» к отсутствию записей.
Предположительно, он находится в каком-то переходном состоянии на пути к удалению.
-121--32680-РР объяснил логику лучше, чем могу.
Я предлагаю удалить cd/home/poppetapp & &
и просто использовать следующее для получения желаемого результата.
*/5 * * * * pgrep -f test_java_10.jar || /home/poppetapp/test_java.sh > /home/poppetapp/test_java.out
При достаточно большом значении 'undolevel'
Vim должен иметь возможность отменить изменения за весь день. Если вы выйдете из Vim в промежутке, вам также потребуется включить постоянную отмену , установив параметр 'undofile'
.
Vim захватывает не просто последовательный список команд для отмены, но фактически дерево всех изменений. Он также имеет несколько команд вокруг отмены (cp. : help undo-branches
); вернуться в штат в начале дня,
:earlier 12h
является хорошим кандидатом.
Существуют также плагины, такие как Gundo и undotree.vim , которые визуализируют дерево отмены и позволяют перемещаться по нему.
Если навигация по дереву отмены звучит слишком громоздко (например, потому что вы вносите много изменений в течение дня), вы также можете добавить облегченную систему управления версиями (в дополнение к Subversion), как мой плагин writebackup , и явно создать резервную копию в определенное время.
-121--52468- Преимущество чего-то вроде | |
в том, что он позволяет запускать что-то на основе кода возврата. Например, если левая сторона имеет значение false
, то она оценивает правую сторону, но в противном случае это не беспокоит.
Вот проблема, хотя - посмотрите на страницу человека для pgrep:
Утилиты pgrep и pkill возвращают одно из следующих значений при выходе: 0 Один или несколько процессов были сопоставлены. 1 Процессы не были сопоставлены.
Так что на самом деле, это 0
и, таким образом, false
, когда он соответствует - так что фактически он запустит ваш процесс java только если он уже запущен:).
Переключите | |
на & &
и получите требуемый результат. Хотя на самом деле, я бы предложил поместить это в сценарий, чтобы будущим читателям не пришлось выяснять то же самое.
Я бы предложил - процесс grepping по своей сути немного ненадежен. Вы можете сделать это через pid
или lockfile.
Я думаю, что это может быть проблема группировки. Я заменил ваш вызов pgrep
простым true
или false
:
Если процесс не выполняется, pgrep
не будет выполнен:
$ false | | echo cd & & echo run
CD
управляемый
Если процесс выполняется, pgrep
будет успешным:
$ true | | echo cd & & echo run
управляемый
В этом случае вы бы не хотели, чтобы все было исполнено! При выполнении true | | (echo cd & & echo run)
ничего не отображается, что мы хотим.
Я предлагаю попробовать pgrep -f test_java_10.jar | | (cd/home/poppetapp & &/ home/poppetapp/test_java.sh >/ home/poppetapp/test_java.out)
.
Ряд способов сделать это.
Вероятно, сценарий диспетчеризации под SunManager более или менее хорош, чем любой другой. Просто проверьте, включен или выключен eth0, а затем отключите или включите wifi соответствующим образом, используя nmcli (интерфейс командной строки с сетевым менеджером). При выполнении поиска будет найден следующий сценарий (См., например, http://crunchbang.org/forums/viewtopic.php?id=26282 ):
#!/bin/bash
if [ "$1" = "eth0" ]; then
case "$2" in
up)
nmcli nm wifi off
;;
down)
nmcli nm wifi on
;;
esac
fi
Назовите его тем, что вы будете, но/ etc/NetworkManager/dispatcher.d/99-wlan кажетесь подходящим, и убедитесь, что он является исполняемым.
Некоторая приятная документация по StartManager по адресу: https://wiki.archlinux.org/index.php/NetworkManager . мужские страницы - еще один хороший источник.
Кроме того, в качестве альтернативы можно рассмотреть возможность подключения к сети, а также использования скриптов в/etc/network/interfaces.
-121--150552- При достаточно большом значении 'undolevel'
Vim должен иметь возможность отменить изменения за весь день. Если вы выйдете из Vim в промежутке, вам также потребуется включить постоянную отмену , установив параметр 'undofile'
.
Vim захватывает не просто последовательный список команд для отмены, но фактически дерево всех изменений. Также имеет несколько команд вокруг undo (cp. : help undo-branches
); вернуться в штат в начале дня,
:earlier 12h
- хороший кандидат.
Существуют также плагины, такие как Gundo и undotree.vim , которые визуализируют дерево отмены и позволяют перемещаться по нему.
Если навигация по дереву отмены звучит слишком громоздко (например, потому что вы вносите много изменений в течение дня), вы также можете добавить облегченную систему управления версиями (в дополнение к Subversion), как мой подключаемый модуль writebackup , и явно создать резервную копию в определенное время.
-121--52468- Преимущество чего-то вроде | |
в том, что он позволяет запускать что-то на основе кода возврата. Например, если левая сторона имеет значение false
, то она оценивает правую сторону, но в противном случае это не беспокоит.
Вот проблема, хотя - посмотрите на страницу человека для pgrep:
Утилиты pgrep и pkill возвращают одно из следующих значений при выходе: 0 Один или несколько процессов были сопоставлены. 1 Процессы не были сопоставлены.
Так что на самом деле, это 0
и, таким образом, false
, когда он соответствует - так что фактически он запустит ваш процесс java только если он уже запущен:).
Переключите | |
на & &
и получите требуемый результат. Хотя на самом деле, я бы предложил поместить это в сценарий, чтобы будущим читателям не пришлось выяснять то же самое.
Я бы предложил - процесс grepping по своей сути немного ненадежен. Вы можете сделать это через pid
или lockfile.
Чтобы избежать проблем с приоритетом операторов ||
и &&
, просто перенесите свою логику в скрипт:
#!/bin/sh -e
if ! pgrep -f test_java_10.jar >&2; then
cd "$HOME"
/usr/home/java -jar./test_java_10.jar
fi
Затем вызывайте этот скрипт из вашего crontab каждые пять минут:
*/5 * * * * "$HOME/test_java.sh"