crontabで通常のユーザーとしてこのスクリプトを実行したいと思います。
#!/usr/bin/env bash
PIDFILE=wp-content/uploads/sphinx/var/log/searchd.pid
if ! test -f ${PIDFILE} || ! kill -s 0 `cat ${PIDFILE}`; then
`which searchd` --config /home/user/www/wordpress-page/wp-content/uploads/sphinx/sphinx.conf
fi
メモリが1GB(Webfaction)を超えると、共有サーバーはすべてのデーモンを終了するため、Sphinx Searchデーモンを再実行します。
CLIコマンドで手動でスクリプトを呼び出すとうまくいきますが、crontabに追加するとcrontab -e
(
which: no searchd in (/usr/bin:/bin)
/home/user/www/wordpress-page/run-searchd.sh: line 8: --config: command not found
簡単に言えば、rootレベルを検索しますが、通常のユーザーとしてsshを介してログインしたときに自分が呼び出すように機能したいと思います。どうすればいいですか?
ベストアンサー1
$PATH
これはシェルの外部で行うためですcrontab
。
command -v searchd | xargs dirname
このコマンドはシステムのディレクトリを返すか、searchd
対話型シェルにディレクトリがない場合はエラーを返します。次に、実行するスクリプトの上部で次の操作を行います。searchd
$PATH
crontab
PATH=<directory_from_above_command>:$PATH
searchd
または代わりにフルパスを使用してくださいwhich searchd
。
which
どのように機能するかを完全に理解するには、以下を読んでください。「which」を使わないのはなぜですか?それでは何を使うべきですか?。