
cygrunsrv
WindowsでLinuxスタイルのスケジュール機能を利用するために、CygwinとCronをインストールしました。通知cron ジョブから。
次のコマンドを使用して、cron をサービスとしてインストールしました。
cygrunsrv -I cron -d "CYGWIN cron" -u cron_srv -p /usr/sbin/cron -a -n
すべて正常です。サービスは実行されており、エラーは報告されていません。また、このcron_srv
ユーザーに必要なすべての権限を付与したので、ユーザー コンテキストの切り替えなどが可能です。
crontab -l
私が定義した次の 2 つのジョブが提供されます。
HOME=/home/<username>
PATH=/usr/local/bin:/usr/bin:/bin:/cygdrive/c/utils/notifu:$PATH
# testing
* * * * * echo "Cron test at $(date +\%k:\%M)" >> ~/testcron.txt 2>&1
* * * * * notifu /p "Balloon Title" /t warn /w /m "event description"
cronevents
これは次のようになります:
2014/03/03 13:08:01 [cron_srv] /usr/sbin/cron: PID 2592: (branchito) CMD (echo "Cron test at $(date +%k:%M)" >> ~/testcron.txt 2>&1)
2014/03/03 13:08:01 [cron_srv] /usr/sbin/cron: PID 4076: (branchito) CMD (notifu /p "Balloon Title" /t warn /w /m "event description")
..エラーはありません。testcron.txt
ファイルを作成し、カスタム日付テストで正しく入力しました。ただし、notifu
エラーは報告されませんが、メッセージ付きのバルーンは表示されずcronevents
、友人の日付テストジョブと同じように実行されているようです。
最後に追加された に含まれているにもかかわらず、プログラムをPATH
見つけられるように変数を明示的に設定しましたが、確実にしたかったのです。notifu
PATH
興味深いのは、notifu
コマンドが Cygwin ターミナルから問題なく実行され、バルーンがメッセージとともにポップアップ表示されるのに、cron ジョブからはトリガーされないことです。
環境変数について何か読んだのですDISPLAY
が、それが問題なのでしょうか? もしそうなら、crontab ファイルでその値をどのように設定すればよいのでしょうか? Linux では のようになりますがDISPLAY=:0.0
、Windows でこの値を設定する方法がわかりません。
編集
さらに調査を進めていくと、問題は、Windows Vista の時点ではサービスがsession 0 isolation
レベルでのみ動作し、セキュリティ上の予防措置としてデスクトップと対話できない、またはデスクトップ インスタンスをセキュリティで保護する特別な方法で対話できる、ということにあることがわかりました。
この場合 (私の場合)、このサービスがそのアプリにメッセージを送信し、そのメッセージでバルーンヒントをポップアップできるようにするにはどうしたらよいか、また、サービス自体を変更せずにそれが可能かどうかを教えてください。私はそのサービスの作成者ではないからです。そのため、そのサービスに何らかの権限を与えて、ユーザー空間で動作させる notifu
方法はあるでしょうか。logon as