일부 시작 응용 프로그램을 연기 / 딜레이하여 로그인 시간을 줄이려면 어떻게해야합니까?


11

각 로그인마다 시작하도록 일부 응용 프로그램 (예 : redshift-gtk, gtg)을 자동으로 설정했지만 시작 응용 프로그램에 이러한 응용 프로그램을 추가 한 후 ( System -> Preferences -> Startup Applications) 로그인 시간이 분명히 증가했습니다. 이 모든 이유로 인해 패널, 데스크탑 등이 나타나는 데 시간이 너무 오래 걸립니다.

이 응용 프로그램을 즉시 사용할 필요는 없지만 결국 시작하면 좋을 것입니다. 반면 우분투 메뉴 / 패널은 필요한 다른 응용 프로그램을 실행할 수 있습니다.

at 명령을 대기열에 넣기 위해 모든 시작 응용 프로그램을 편집하려는 의도로 at 명령을 사용하려고 시도했지만 앱이 필요한 환경 변수 (DISPLAY와 같은)를 얻지 못했기 때문에 작동하지 않았습니다.

이것이 어떤 nice명령에 사용됩니까? 다른 아이디어는 내가 어떻게 이것을 달성 할 수 있습니까? 가능하면 시작 응용 프로그램 명령 편집을 피하고 싶습니다. 사용하는 다른 컴퓨터에서 복제하는 데 많은 노력이 필요하기 때문입니다.


@Riccardo Murri-맞습니다. 나는 내 의도를 더 잘 설명하기 위해 질문 제목을 편집했습니다.
koushik

아직 시작하지 않은 경우 시작 프로그램 및 서비스도 다듬어 줄 것입니다.
사람

답변:


11

데스크탑이로드되기를 기다리는 시간 (초)은 임의적이며 상황에 따라 변경 될 수 있습니다. 대신 sleep시스템로드가 감소하자마자 다음을 사용하여 시작 응용 프로그램을 실행 해보십시오.

(편집 : koushik의 제안을 추가했습니다.)

#!/bin/bash
# 
# Delays running an application until the system load has declined.
# 
# Usage:
#   run-when-load-low 'your command here'

echo "export DISPLAY=$DISPLAY; $1 &" | batch

exit 0

다른 이름으로 저장하고 시작 응용 프로그램 환경 설정에 ~/bin/run-when-load-low추가 하십시오 run-when-load-low 'COMMAND'.

이 방법에 대한 참고 사항 :

  • 위의 스크립트는 나를 위해 일한 것입니다. DISPLAY환경 변수 만 응용 프로그램에 전달 합니다. 의 경우 대부분의 데스크톱 응용 프로그램이 당신이 필요로하는 모든 것입니다. 그렇게 말하면서, 특별한 경우를 고려하고 올바르게 작동하지 않는 문제를 해결할 때이 사실을 명심하십시오. 응용 프로그램에 전달 된 다른 환경 변수가 필요할 수 있다고 생각하면 시작할 수있는 좋은 곳입니다. printenv개인적 으로이 문제는 아직 발생하지 않았지만 응용 프로그램 설명서입니다.
  • 시스템 "로드"값에 대한 나의 이해는 IO 대기를 고려한다는 것입니다. 따라서 IO를 대기하는 데스크탑 프로세스로 인한 CPU 사용 중단 동안 지연된 응용 프로그램이 실수로 너무 빨리 시작되지 않아야합니다. 이것은 내가 많이 알고있는 영역이 아니므로 여기에 틀렸다면 수정하십시오.
  • batch에만 영향을 미치는 경우 응용 프로그램이 실행됩니다; 우선 순위 / 우선 성을 바꾸지 않습니다.
  • 말할 필요도 없지만 시스템의 로드가 항상 높은 경우이 방법으로 예약 된 응용 프로그램은 실행되지 않을 수 있습니다.
  • 공백이 포함 된 매개 변수를 사용하여 애플리케이션을 실행해야하는 경우 백 슬래시를 사용하여 이스케이프 할 수 있습니다 run-when-load-low 'gedit My\ Notes.txt'. 작은 따옴표로 묶은 매개 변수를 응용 프로그램에 전달해야하는 경우 시작 명령에서 큰 따옴표를 사용해야합니다 run-when-load-low "gedit 'My Notes.txt'". 이보다 복잡한 작업은 하드 코딩 된 명령으로 스크립트 사본을 수정하는 것이 가장 좋습니다.

감사합니다. 이것은 최적의 접근 방식처럼 들립니다. 의심의 여지가 남아 있습니다. DISPLAY는 현재 환경의 응용 프로그램에 필요한 유일한 변수 batch입니까? 또한 데스크탑 로딩이 완전히 완료되기 전에 CPU 부하가 감소 할 수 있습니까 (예 : 일부 아이콘이로드 될 때까지 디스크 대기) 이러한 앱이 시작되어 이전과 비슷한 상황이 발생합니까? 즉, 다른 앱을 실행하려고 할 때 생성되는 우선 순위가 낮은 배치로 명령이 실행됩니까?
koushik

@koushik이 점을 제기 해 주셔서 감사합니다. 문제를 해결하기 위해 답변을 업데이트했습니다.
ændrük

놀랍게도, 나는이 문제에 대한 해결책을 한동안 찾고있었습니다.
levesque

1
이것은 이제 로그인 시간을 줄이는 데 실제로 도움이됩니다. 이러한 앱을 결국 시작하기 위해 앱이 실제로 실행될 때 알려주는 스크립트를 약간 수정했습니다. 또한 프로세스가 백그라운드로 분기되지 않는 한 batch여전히 실행중인 상태로 대기열에 유지 되므로 프로세스를 백그라운드에서 시작했습니다. 수정 된 라인은 다음과 같습니다.echo "export DISPLAY=$DISPLAY; notify-send 'Running on Load low' '$1' && $1 &" | batch
koushik

1
@ ændrük 인용 및 기타 '모범 사례'에 대해 확신이 서지 않을 때는 항상 Greycat의 위키를 참조합니다 .
사람

5

sleep 10 && COMMAND명령 이름으로 사용 하는 것이 효과가 없다는 것을 알았습니다. conky와 xchat이 너무 일찍로드되어 어떻게 든 손상되는 문제가있었습니다. 나는 작은 스크립트를 작성하고 ~/bin/startup이것을 넣어야했습니다.

#!/bin/bash
sleep 10
xchat &
conky &

실행 권한을 변경 chmod +x ~/bin/startup한 다음 시작 응용 프로그램 항목을 명령으로 바꾸면 startup스크립트의 모든 항목이 시작 됩니다.

그런 식으로 기울어 진 경우 각 응용 프로그램마다 하나의 파일을 가질 수 있습니다.


또한 파일이나 폴더 앞에 마침표 (예 : ~ / .bin / startup)를 붙여 숨길 수 있습니다. 즉, 노틸러스 등에서 폴더를 볼 때 보이지 않습니다. 토글 표시)
8128

나는 그런 해결책에 문제가 있었고 때로는 효과가있을 수도 있고 때로는 효과가 없을 수도 있습니다. 또한 절전 모드는 데스크톱 부팅을 확실히 지연시킵니다.
levesque

1
sleep것입니다 하지 부팅 지연. 시작 응용 프로그램은 비 차단 기능이므로 둘 이상의 항목을 한 번에로드 할 수 있습니다. sleepgnome을 사용하면 나머지 그놈이로드 한 다음 덜 중요한 것들을로드 할 수 있습니다.
Oli

2

'sleep'명령을 사용하십시오.

시스템-> 환경 설정-> 시작 응용 프로그램에서 지연하려는 프로그램의 명령을 편집하십시오.

sleep 10 && COMMAND

대기 할 시간 (초)으로 10을 바꾸고 명령 상자에 원래 있던 명령으로 명령합니다.


전체 질문 내용을 읽어보십시오. OP는 앱을 시작하는 데 시간이 오래 걸린다고 불평하고 로그인 프로세스에서 앱을 "분리"할 수있는 방법을 요청합니다 ( "이 앱을 즉시 사용할 필요는 없지만 좋을 것입니다" 그들이 결국 시작한다면 "). "잠자기"를 앞에 추가하면 실제로 시작 시간이 더 커집니다.
Riccardo Murri

로그인 프로세스가 각 명령이 완료되기를 기다렸다는 것을 알지 못했습니다. 어쩌면 COMMAND &(백그라운드에서 실행) 사용하는 것이 좋습니다.
dv3500ea

1
죄송합니다, 제 잘못 : 로그인 프로세스는 모든 시작 명령이 반환 될 때까지 기다리지 않습니다. 아아, 당신이 질문 텍스트를 편집하지 않으면 내 공감을 제거 할 수 없습니다 ...
Riccardo Murri
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.