hakeの日記

Windows環境でプログラミングの勉強をしています。

atd下でのrootによるQCopコマンドの実行

昨日の続き
昨日atdに登録したQCopコマンドがrootでは実行できないのが不思議と書いたところ、コメントを頂き変数QTDIRが設定していないからではないかとのご指摘を受けました、確かに実験をしたときには無くてSHOUTcastPlayerのスリープ機能で使用したソース(automail流用)では設定していました。


というわけで、再度確認
現状SHOUTcastPlayerのスリープ機能では、

#!/bin/sh
export QTDIR=/home/QtPalmtop
(略)
/home/QtPalmtop/bin/qcop ……
(略)

というScriptを用意して

echo su zaurus -c Script | at yyyy.mm.dd-HH:MM:SS

という様にしてatdに登録しています。



次にScriptの冒頭部に

export LOGNAME=root

を追加して

echo Script | at yyyy.mm.dd-HH:MM:SS

の様にatdに登録してみました、結果は残念ながらQCopを実行しませんでした。どうやら実行するScriptにLOGNAMEを書いても有効にならない模様です。
そこで/var/spool/at/以下に置くスクリプトに書いてみました。

#!/bin/sh
export LOGNAME=root
Script

これで実行したところ、上手くrootのままでもQCopが機能しました。
結論としてはatd下でのrootによるQCopコマンドの実行はatコマンドによる自動登録ではなくて、直接/var/spool/at/以下にスクリプトを作成する必要があるということみたいです。