От start-stop-daemon(8)
страница справочника:
- x, - исполнительный исполняемый файл Check for processes that are instances of this executable (according to /proc/pid/exe)
Что означает, что это проверит на экземпляры /usr/local/zend/bin/php
, и если это находит их не, запускают новый процесс. Если у Вас есть волшебный cookie:
#! /usr/local/zend/bin/php
на первой строке Вашего/var/www/server/consultpilot/ServerTicket.php сценария, и удостоверяются, что это - исполняемый файл с chmod
, затем можно изменить его на:
DAEMON=/var/www/server/consultpilot/ServerTicket.php
и получите результаты, которые Вы ожидали бы.
Вы можете сделать тест на фиктивные данные, которые должны добиться успеха, если и только если опция доступна и работает, как ожидается:
trap 'if [ -e "$tmp" ]; then rm -rf -- "$tmp"; fi' EXIT
tmp="$(mktemp -d)"
cd -- "$tmp"
mkdir exclude
mkdir include
echo foo > include/test.txt
echo foo > exclude/test.txt
[ "$(grep --exclude-dir exclude --recursive foo . | wc -l)" -eq 1 ]
К счастью, существует относительно стандартизованный способ сообщать о потенциальных возможностях программ. Однако, он не всегда используется, поэтому это не дурацкий ответ, а просто ответ, защищенный от злоупотребления властью.
$prog --help | grep -e "\b$option\b"
(примечание, \b означает "граница слова". То есть после вашего $option не останется ни одного символа, поэтому $option-f не будет соответствовать)
Это вернет вам опцию, если она существует - но что более важно, вернет статус выхода 0, если она существует, или статус выхода 1, если его нет. Вы можете протестировать это с помощью:
$ # we pipe to /dev/null to hide the output, and show that it doesn't matter
$ grep --help | grep -e "\b--exclude-dir\b" > /dev/null
$ echo $?
0
$ grep --help | grep -e "\b--exclude-dirf\b" > /dev/null
$ echo $?
1
Это будет работать на многих программах, но не все имеют --help, то есть.... helpful. Вам также может повезти с
man $progr | grep -e "\b$option\b"
, если первая не сработает
.Учитывая, что большинство (все?) Команды выходят с кодом возврата, превышающим нулю при вызове с неизвестными параметрами, вы можете попробовать
cmd --option-to-probe [other options and parameters] >/dev/null 2>/dev/null
и проверять, будет ли $?
0 или нет.
Можно посмотреть на man-страницу команды, что-то вроде этого:
CMD=grep
OPTIONS=""
for OPT in "--exclude-dir" "--text" "--not_an_option"; do
if man $CMD | col -bx | egrep --quiet \\$OPT; then
OPTIONS="$OPTIONS $OPT"
fi
done
alias $CMD="$CMD $OPTIONS"