crontab을 통해 Rhythmbox 시작

울프 줄리

우분투의 모든 버전을 다른 방식으로 처리해야하기 때문에 지금이 문제에 지쳤습니다.하지만 14.04에서는 더 이상 무엇을해야할지 모르겠습니다.

내 문제 : crontab이 재생할 음악을 선택하는 스크립트를 시작하고, Rhythmbox를 시작하고, 선택한 파일 또는 목록을 재생 대기열에 추가하고 재생하기 때문에 내 PC가 매일 자동으로 시작되어 경고 역할을합니다.

이제 문제는 스크립트가 터미널에서 실행할 때 완벽하게 작동하지만 crontab Rhythmbox로 시작하면 대부분 시작되지 않는다는 것입니다.

내 crontab :

MAILTO=""
XAUTHORITY=~/.Xauthority
DISPLAY=:0.0

# m h  dom mon dow   command
*/10 * * * * /scripts/copy_loop.sh &

#start alert
50 6 * * 1 /scripts/alert.sh #mo
50 6 * * 2 /scripts/alert.sh #di
50 6 * * 3 /scripts/alert.sh #mi
50 6 * * 4 /scripts/alert.sh #do
50 6 * * 5 /scripts/alert.sh #fr
30 7 * * 6-7 /scripts/alert.sh #sa/so

/script/copy_loop.sh스크립트가 완벽하게 실행하는 다른 스크립트입니다 (하지만 모두에서 프로그램을 시작하지 않습니다 ...)

경고 스크립트 : #! / bin / bash

logfile="/scripts/log/alert.log"

exec >> $logfile 2>&1

echo "***********************************" 
echo "* Start ("`date +'%d.%m.%Y %H:%M'`") as `whoami` *" 
echo "***********************************" 

#To avoid heart-attacks ;)
amixer set Master 14

echo "Turning monitors on and waiting 5 seconds." 
#Force Monitor to turn on (grafik bug!)
xset dpms force on
sleep 5

#how many days should a song be blocked?
days=25

#Create array of music
music=( "Dubstep von Hannes/1-45 The Sound of Dubstep 4 - Mix 1.mp3" 
    "Purity Ring's Shrines.MP3" 
    "XXYYXX - XXYYXX (Full Album).MP3" 
    "Bonobo/Days to Come Disc 1/"
    "LIQUID STRANGER - BABYLON OUTCAST (DJ MIX).MP3"
    "Wisdom - Beautiful Chillstep.mp3"
    "Sizzlebird - Artist Mix.mp3"
    "Yann Tiersen - Amelie Soundtrack.mp3"
    "chillstep mix 2013 vol.3.mp3"
    "Burning Snowflakes Mix.mp3"
    "Parov Stelar - Daylight/"
    "Parov Stelar - Coco/Disc 1/"
    "Parov Stelar - Coco/Disc 2/"
    "Seeed/"
    "Salvation 2 Hour Best of Chillstep Mix.mp3"
    "Lonely Nights Wonderful Chillstep Mix.mp3"
    "Caribou - Swim (Full Album).mp3"
    "Gorillaz Plastic Beach 2010/"
    "Griechenland/Pendulum - Hold Your Colour/"
    "Griechenland/Pendulum In Silico/"
    "Pendulum - Immersion/"
    "Aphex Twin - Selected Ambient Works 85-92.MP3"
    "RJD2 - Deadringer (Full Album).MP3"
    "SOLAR FIELDS - RANDOM FRIDAY (ALBUM) HQ.MP3"
    "Deep Cuts/"
    "Silent Shout/"
    "Gorillaz/"
    "Kosheen/(2002) resist/"
    "Dub_Fx/Everythinks A Ripple/"
    "Griechenland/B-Complex/"
    )


for (( i=0; i < 1; i++ )); do
    choose=${music[$(($RANDOM % ${#music[@]}))]}

    #check if song is blocked
    cat /scripts/alertBlock | grep "$choose" > /dev/null

    if [[ $? == 0 ]]; then
        #song is blocked
        echo "$choose is blocked" 
        i=-1
    fi
done


#write to file, so it can't be played the next given days

lines=`wc -l < /scripts/alertBlock`

#cut the last entry
tail -n $(($days - 1)) /scripts/alertBlock > /scripts/.temp
cat /scripts/.temp > /scripts/alertBlock

echo "$choose" >> /scripts/alertBlock

echo "$choose chosen and added to Block-List" 

echo "waiting for Rhythmbox to start" 

rhythmbox-client --no-present & 

#ok=false

#while [[ $ok == false ]]; do
#    rhythmbox-client --check-running
#   
#   if [[ $? == 0 ]]; then
#       ok=true
#   else
#       ok=false
#   fi
#done

sleep 10

echo $choose | grep '/$'

if [[ $? == 0 ]]; then
    cd "/home/julian/Music/$choose"

    echo "Clearing queue" 
     rhythmbox-client --clear-queue 2>&1 

    # To avoid adding pictures and such crap
     rhythmbox-client --enqueue *.mp3
     rhythmbox-client --enqueue *.wav
     rhythmbox-client --enqueue *.ogg
     rhythmbox-client --enqueue *.flac
    sleep 2
     rhythmbox-client --play
else

     rhythmbox-client --no-start --play-uri="/home/julian/Music/$choose" 2>&1
fi

echo "Music player started. Have Fun!"  

echo "**************************" 
echo "* End ("`date +'%d.%m.%Y %H:%M'`") *" 
echo "**************************"

기본적으로 스크립트는 모니터를 켜고 (완벽하게 작동) 음량을 조정 (완벽하게 작동)하고 노래를 선택하고 블록 목록에 추가 (완벽하게 작동)하고 리듬 박스를 시작합니다 (메쉬 ... 작동한다면 플레이 큐에 추가 및 사물 너무 작동합니다 ...)

이전 배포판 (12.10 ~ 13.10)에서 Rhythmbox가 시작 (추가 DISPLAY=:0.0 sudo -u julian또는 시작 rhythmbox-client --no-present)되었지만 이제는이 모든 것이 더 이상 작동하지 않습니다.

터미널에서 스크립트를 시작할 때 생성되는 로그 파일 :

***********************************
* Start (28.05.2014 07:56) as julian *
***********************************
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback 0 - 31
  Mono: Playback 14 [45%] [-25.50dB] [on]
Turning monitors on and waiting 5 seconds.
RJD2 - Deadringer (Full Album).MP3 chosen and added to Block-List
waiting for Rhythmbox to start
Musicplayer startetd. Have Fun!
**************************
* End (28.05.2014 07:56) *
**************************

리듬 박스가 시작되고 재생됩니다.

crontab에서 시작 :

***********************************
* Start (28.05.2014 06:50) as julian *
***********************************
Simple mixer control 'Master',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback 0 - 31
  Mono: Playback 14 [45%] [-25.50dB] [on]
Turning monitors on and waiting 5 seconds.
Purity Ring's Shrines.MP3 chosen and added to Block-List
waiting for Rhythmbox to start

(rhythmbox-client:5655): GLib-GIO-CRITICAL **: g_dbus_proxy_new_sync: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
Musicplayer startetd. Have Fun!
**************************
* End (28.05.2014 06:50) *
**************************

여기에 오류 메시지가 표시되지만 제거하는 방법을 모르겠습니다.

어떤 도움을 주시면 감사하겠습니다.

편집 : 한 단계 더 깊이 들어가기 : 두 가지 흥미로운 질문이 있습니다.

  1. 모든 버전이 crontab에서 다르게 작동하는 이유는 무엇입니까?
  2. 이 비꼬는 질문에 미안하지만 사용자가 입력 한 명령처럼 취급되지 않는 이유는 무엇입니까? DISPLAY = : 0.0 문을 추가해야한다는 것은 분명하지만 xauthority 파일을 추가하는 것이 절대적으로 명확하지 않으며 더 이상 작동하지 않습니다.

리듬 박스가 시작되면 다음 두 가지 가능성이 있습니다. 1. 자체 인스턴스에서 실행되므로 표시 rhythmbox-client되지 않습니다. 2. 캡슐화 된 lightdm / unity 인스턴스에서 실행되므로 키보드의 핫키가 작동하지 않고 닫히면 음악이 재생되지만 killall rhythmbox어떤 식 으로든 unity를 통해 Rhythmbox를 시작하기 때문에 이를 죽여야합니다 (빠른 -오디오 패널에서도 액세스) 두 번째 인스턴스를 만듭니다.

나는 지금 추측하고 있지만 crontab이 실제로 설정된 사용자의 이름이 아닌 그의 작업을 수행하기 때문에 마지막 두 가지 점이 발생한다고 생각합니다.

어떤 도움이라도 대단히 감사하겠습니다.

편집 2014-06-16 : 더 많은 정보를 가져 오려면 : 14.04에서 그래픽 인터페이스를 시작할 수도없는 것 같습니다.

11 8 * * * gnome-terminal
11 8 * * * DISPLAY=:0.0 gnome-terminal

위의 어느 것도 작동하지 않습니다. 나는 13.04와 13.10에서 이것이 효과가 있다고 확신합니다 ... 그래서 여전히 조사 중입니다 ...

울프 줄리

이제이 문제를 해결하기 위해 완전히 다른 방법을 선택했습니다.

스크립트는 이제 crontab의 명령이 접근 할 때까지 fifo 파일로 기다렸다가 작동을 시작합니다. 그 때문에 시작시 스크립트를 시작하고 crontab이 그렇게하도록 지시 할 때 작동하도록 할 수 있습니다. 이제 디스플레이 관리자는 다음과 같이 보이는 crontab이 아닌 스크립트를 시작합니다.

#start alert
50 8 * * 1 echo "start;`whoami`;'`date`'" > /scripts/alert/com_fifo #mo
30 7 * * 2 echo "start;`whoami`;'`date`'" > /scripts/alert/com_fifo #di
...

죄송하지만 일부 기능을 재사용 할 수 있도록 여러 파일로 분할되어 스크립트 게시가 거의 불가능합니다. 기본적으로 다음과 같습니다.

hellNotFrozen=true
com="/scripts/alert/com_fifo"

#clear fifo file
rm $com >/dev/null 2>&1 
mkfifo $com

while [[ $hellNotFrozen ]]; do

    #read fifo-file - this statement is blocking!
    inp=`cat $com` #$inp now holds the text pasted into the com-file

    #...do other stuff here        
    rhythmbox-client --enqueue "/data/Music/$chosenFolder/*"
    rhythmbox-client --play

done

모든 답변에 감사드립니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

crontab을 통해 Rhythmbox 시작

분류에서Dev

crontab을 통해 git 작업

분류에서Dev

Starting Rhythmbox via crontab

분류에서Dev

Skype 통화가 끝나면 Ubuntu 18.04 Rhythmbox가 시작됩니다.

분류에서Dev

시스템 crontab을 통해 사용자 배경 화면 변경

분류에서Dev

Crontab을 통해 시작된 스크립트가 다르게 작동하는 이유는 무엇입니까?

분류에서Dev

Env & Crontab-> 프로그램은 bash에서 작동하지만 cron을 통해 시작되지 않습니다.

분류에서Dev

'ipython 커널'을 통해 시작된 ipython 커널 다시 시작

분류에서Dev

Rhythmbox를 사용하여 DAAP를 통해 음악을 공유하는 방법은 무엇입니까?

분류에서Dev

Rhythmbox가 활성 세션을 다시 시작하고 로그인 화면을 표시합니다.

분류에서Dev

알림을 통해 시작시 활동 상태 복원 시도

분류에서Dev

알림을 통해 시작시 활동 상태 복원 시도

분류에서Dev

Rhythmbox가 시작되지 않습니다

분류에서Dev

gradle을 통해 xlsx 작성

분류에서Dev

cmd를 통해 명령으로 powershell을 시작하십시오.

분류에서Dev

터미널 명령을 통해 시작된 앱의 타이밍 시작 시간

분류에서Dev

스크립트는 crontab을 통해 실행되지 않지만 독립적으로 작동합니다.

분류에서Dev

스크립트는 crontab을 통해 실행되지 않지만 독립적으로 작동합니다.

분류에서Dev

bash 스크립트가 crontab을 통해 예상대로 작동하지 않습니다.

분류에서Dev

Wine을 통해 Sketch Up을 시작하는 방법

분류에서Dev

GRUB 명령 줄을 통해 Windows 10을 시작하는 방법

분류에서Dev

명령 줄을 통해 Chrome을 시작할 수 없습니다.

분류에서Dev

Android : 작업을 통해 열고 다시 시작 (예 : NFC 태그 스캔)

분류에서Dev

터미널을 통해 계산기를 시작하는 방법

분류에서Dev

CloudFormation을 통해 AWS Marketplace에서 AMI 시작

분류에서Dev

ASG를 통해 시작 구성을 얻는 방법

분류에서Dev

cron을 통해 2 개의 셀러리 프로세스 시작

분류에서Dev

터미널을 통해 계산기를 시작하는 방법

분류에서Dev

시작 명령을 통해 변수 반환

Related 관련 기사

  1. 1

    crontab을 통해 Rhythmbox 시작

  2. 2

    crontab을 통해 git 작업

  3. 3

    Starting Rhythmbox via crontab

  4. 4

    Skype 통화가 끝나면 Ubuntu 18.04 Rhythmbox가 시작됩니다.

  5. 5

    시스템 crontab을 통해 사용자 배경 화면 변경

  6. 6

    Crontab을 통해 시작된 스크립트가 다르게 작동하는 이유는 무엇입니까?

  7. 7

    Env & Crontab-> 프로그램은 bash에서 작동하지만 cron을 통해 시작되지 않습니다.

  8. 8

    'ipython 커널'을 통해 시작된 ipython 커널 다시 시작

  9. 9

    Rhythmbox를 사용하여 DAAP를 통해 음악을 공유하는 방법은 무엇입니까?

  10. 10

    Rhythmbox가 활성 세션을 다시 시작하고 로그인 화면을 표시합니다.

  11. 11

    알림을 통해 시작시 활동 상태 복원 시도

  12. 12

    알림을 통해 시작시 활동 상태 복원 시도

  13. 13

    Rhythmbox가 시작되지 않습니다

  14. 14

    gradle을 통해 xlsx 작성

  15. 15

    cmd를 통해 명령으로 powershell을 시작하십시오.

  16. 16

    터미널 명령을 통해 시작된 앱의 타이밍 시작 시간

  17. 17

    스크립트는 crontab을 통해 실행되지 않지만 독립적으로 작동합니다.

  18. 18

    스크립트는 crontab을 통해 실행되지 않지만 독립적으로 작동합니다.

  19. 19

    bash 스크립트가 crontab을 통해 예상대로 작동하지 않습니다.

  20. 20

    Wine을 통해 Sketch Up을 시작하는 방법

  21. 21

    GRUB 명령 줄을 통해 Windows 10을 시작하는 방법

  22. 22

    명령 줄을 통해 Chrome을 시작할 수 없습니다.

  23. 23

    Android : 작업을 통해 열고 다시 시작 (예 : NFC 태그 스캔)

  24. 24

    터미널을 통해 계산기를 시작하는 방법

  25. 25

    CloudFormation을 통해 AWS Marketplace에서 AMI 시작

  26. 26

    ASG를 통해 시작 구성을 얻는 방법

  27. 27

    cron을 통해 2 개의 셀러리 프로세스 시작

  28. 28

    터미널을 통해 계산기를 시작하는 방법

  29. 29

    시작 명령을 통해 변수 반환

뜨겁다태그

보관