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/以下にスクリプトを作成する必要があるということみたいです。