사용자 디스플레이에서 루트로 명령을 실행하면 예상대로 작동하지 않습니다.

사용자 디스플레이에서 루트로 명령을 실행하면 예상대로 작동하지 않습니다.

xdotool루트 셸에서 사용자 모니터에 대한 작업(마우스 이동)을 수행 하려고 하는데 다음과 같은 결과가 나타납니다.

# DISPLAY=:0 mousemove_relative 1 1
No protocol specified
Error:Can't open display: (null)
Failed creating new xdo instance
#

왜 이것이 작동하지 않습니까?


스크립트:

#!/bin/bash

exec=`/usr/sbin/nethogs -t -c 1| awk '/smbd/ {print $2}'`

sent=$exec

echo "result: "$sent
sent=$(echo "($sent+0.5)/1" | bc)
echo "rounded: "$sent
if [[ $sent -gt 0 ]]
then 
    echo "music is playing"
    `DISPLAY=:0 xdotool mousemove_relative 1 1`
else
    echo "quiet"
fi

나는 이것을 얻습니다 /var/mail/root:

Waiting for first packet to arrive (see sourceforge.net bug 1019381)
result: 6.73438
rounded: 7
music is playing
No protocol specified
Error: Can't open display: (null)
Failed creating new xdo instance

답변1

나는 답을 찾았다https://www.reddit.com/r/linux/comments/2clob0/help_with_cron_though_its_probously_not_really_a/?st=j7e4jv37&sh=e83bf930

스크립트에 다음을 추가해야 했습니다.

export DISPLAY=:0
export XAUTHORITY=/home/username/.Xauthority

관련 정보