upstart를 사용하여 Redshift를 시작하기에 적절한 시기는 언제입니까?

upstart를 사용하여 Redshift를 시작하기에 적절한 시기는 언제입니까?

나는 얻으려고 노력해왔다.적색편이시작앞으로특히 사용자를 전환할 때 밝은 시작 화면이 눈부시지 않도록 로그인하세요.

Redshift를 서비스로 실행하는 것은 완전히 지원되지 않는 것 같습니다(예:이 오류) 하지만 그럴 것 같다가능한원칙적으로.

시도한 후AskUbuntu에서 찾은 일부 내용그래도 작동하지 않으면 현재 내 시도는 내 자신의 신생 작업을 구축하는 것입니다 /etc/init/redshift.conf.

# Redshift

description "Redshift"
author      "[email protected]"

start on (started lightdm)

script
  exec redshift -c /etc/redshift.conf
end script

stop on runlevel [016]

내 생각에는 LightDM이 실행된 후에 시작하는 것이 효과적이며 중지하는 것도 좋습니다.

이제 이것은 내 로그 파일에 기록됩니다 /var/log/upstart/redshift.log.

`RANDR Query Version' returned error -1
Initialization of randr failed.

이 오류를 인터넷 검색해도 많은 정보가 제공되지 않습니다. 나추측하다아직은 이르고 디스플레이 매직과 관련된 일부 서비스가 아직 실행되지 않고 있습니다.

내 표정은 어떠해야 할까 start on?

Ubuntu 14.04 LTS; 3.13.0-77-일반 #121-Ubuntu SMP... x86_64 GNU/Linux
RandR 서버 버전 1.12.1;

답변1

적색편이 vs.X 서버. 시스템 시작의 일부로 시작할 수 있지만 이는 취약합니다. X 서버 세션(X 로그인 세션보다 광범위함)의 컨텍스트에서 시작하는 것이 안정적입니다.

여러 X 서버가 주어진 시간에 동일한 시스템에서 실행될 수 있습니다. 그들은 선착순으로 디스플레이 번호를 할당합니다. 표시 번호는 프로그램이 접속할 서버를 아는 방법과 DISPLAY프로그램이 환경 변수에서 서버를 찾는 방법입니다. GUI 프로그램을 시작하는 자연스러운 방법은 DISPLAY환경 변수를 원하는 값으로 설정하는 것입니다.

lightdm이 X 서버를 시작하는 첫 번째 엔터티라고 가정할 수 있으므로 시작 작업에서 :0환경 변수를 표시하고 하드코딩합니다 . DISPLAY=:0또한 변수를 설정해야 합니다 XAUTHORITY(참조:원격 X 모니터에서 창 열기("모니터를 열 수 없습니다" 이유)?). Ubuntu의 lightdm은 쿠키를 /var/lib/lightdm/.Xauthority.

env DISPLAY=":0"
env XAUTHORITY="/var/lib/lightdm/.Xauthority"

그러나 이는 깨지기 쉽습니다. 디스플레이 lightdm이 궁극적으로 위치한다고 가정합니다 :0. 경쟁 조건으로 인해 현재 형식에서는 작동하지 않을 것이라고 생각합니다. lightdmX 서버가 시작되어 실행되기 전에 작업이 시작된 것으로 간주될 수 있습니다(그러나 이에 대해 잘 모르겠습니다. 무엇인지 모르겠습니다. 작업이 시작된 것으로 계산됩니다.)

깨끗한 방법은 lightdm이 Redshift를 시작하도록 하는 것입니다. 그렇게 하면 적절한 시간에 적절한 맥락에서 시작됩니다. 이 섹션 의 줄을 편집 하고 /etc/lightdm/lightdm.conf추가합니다 .redshift -c /etc/redshift.confdisplay-setup-scriptSeatDefaults

[SeatDefaults]
display-setup-script=redshift -c /etc/redshift.conf &

&백그라운드에서 시작하도록 주의하십시오 redshift(그렇지 않으면 lightdm이 완료될 때까지 기다립니다). X 서버가 종료되면 Redshift도 종료된다고 가정합니다. X 애플리케이션은 일반적으로 디스플레이가 사라질 때 종료되므로 프로세스를 추적하고 명시적으로 종료할 필요가 없습니다.

답변2

피하다lightdm-freeze.

그 이유는 &쉘에 전달되지 않고 레드시프트에 매개변수로 전달되기 때문이다( ps -aux검증 참조). 이 문제를 해결하려면 f.ex 스크립트를 생성하세요.

redshift -c  /etc/redshift.conf &

존재하다 /root/bin/redshift.sh. chmod 755 및 /etc/lightdm/lightdm.conf.d/90-redshift.conf포함하도록 편집

[Seat:*]
display-setup-script=/root/bin/redshift.sh

( [Seat:*]새로운 것 같습니다 [SeatDefaults]).

관련 정보