Linux는 Windows 시작과 동일합니까?


16

시스템을 부팅 할 때마다 Linux 시작에 응용 프로그램 / 스크립트를 추가 할 수있는 방법이 있습니까?

나는 자동화 된 방법을 찾고 있습니다. 즉, 사용자는 cron 작업이나 이와 같은 것으로 이것을 추가해서는 안됩니다.



그것은 우분투 단지 $ 그놈 세션 속성을 사용하는 경우
user3804598

답변:


11

Cron 과 같은 것 ?

@reboot항목을 참고하십시오

이것은 가장 유연한 접근 방식이며 Windows의 "예약 된 작업"과 가장 유사한 접근 방식입니다 (실제로 더 낫습니다).


사용자의 의도없이 CRON에 작업을 추가 할 수 있습니까?
Sourav

예. 바로 쓰기 /etc/cron.d, 또는 그들이 알고없이 프로그램에서 통화의 crontab.

무슨 소리 야? 프로그래밍 방식으로 수동으로 추가하는 것을 의미하는 경우 예입니다. Crontab은 단지 텍스트 파일입니다.

10

Xorg 자동 시작

시스템 수준의 시작 스크립트 외에도 데스크탑 환경에는 자체 자동 실행 프로그램 방법이있을 수 있습니다. 폴더 .config/autostart는 자동 실행 항목을 정의하는 데스크탑 중립적 인 방법이어야합니다. /etc/xdg/autostart시스템 전체 구성을위한 것입니다. 사양에 대한 자세한 내용은 http://developer.gnome.org/autostart-spec/에 있습니다.

LXDE의 경우 자동 시작 항목을에서 설정할 수도 있습니다 ~/.config/lxsession/LXDE/autostart.

네트워크가 시작된 스크립트를 실행해야하는 경우에는 약간 다릅니다 . 이 경우 네트워크 관리자에 대해 정의 할 수있는 특수 사후 연결 스크립트를 확인해야합니다. 두 네트워크 매니저WICD 연결 후 자동 실행 항목을 지정하는 자신의 방법이있다. 을 통해 네트워크를 구성한 경우 ifupdown포스트 업 스크립트를 /etc/network/if-up.d/폴더에 배치 할 수 있습니다 . 그러나 연결 후 스크립트 실행에 대한 더 나은 접근 방식이 체계화 될 수 있습니다 (대부분의 최신 배포판 인이를 지원하는 시스템의 경우).

시스템 서비스로 자동 시작

자동 시작하려는 것이 데스크탑이 필요한 그래픽 응용 프로그램이 아닌 경우 xorg 또는 현재 데스크탑 환경에서 제공하는 자동 시작 기능을 사용하지 않는 것이 가장 좋습니다.

systemd 많은 최신 배포판에서 유비쿼터스가되었으며 서비스 시작 방법 및 운영 방식 측면에서 많은 제어 및 유연성을 제공합니다.

몇 가지 이점을 요약하겠습니다 ( systemd는 더 많은 작업을 수행 할 수 있음 ).

  • 루트 또는 특정 사용자로 실행 : 예 User=myuser
  • 구성 가능한 시간 초과로 실패시 서비스를 다시 시작하십시오. Restart=on-failure|on-watchdog|on-abnormal|always
  • 서비스 유형 설정 : Type=simple|forking|oneshot|notify|dbus
  • 시작의 전제 조건 및 종속성을 설정, 네트워크 (최대 후에 시작할 서비스를 설정할 수 있습니다 즉 Wants=network-online.target에서 [Unit]절).

telegram-cli 데몬을 시작하는 서비스 예. 에 배치하십시오 /etc/systemd/system/tg.service.

[Unit]
Description=MyDaemon
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/telegram-cli -k /etc/telegram-cli/tg-server.pub -W -P 1234 -d -vvvRC
ExecStop=/usr/bin/pkill -f telegram-cli

User=jicu

[Install]
WantedBy=multi-user.target

이제 서비스가 자동 시작되도록 할 수 있습니다.

sudo systemctl enable tg

서비스를 시작하십시오 :

sudo systemctl start tg

서비스를 중지하십시오 :

sudo systemctl stop tg

상태를 확인하십시오 :

systemctl status tg

서비스를 비활성화하십시오 :

sudo systemctl disable tg

여분의 타이핑을 저장하기 ~/.bashrc위해 라인에 추가 alias sc='sudo systemctl $*'하면 위 명령을 짧게 줄일 수 있습니다 sc start tg.

참고 : 사용한 경우 croncrontab 항목이 제한된 환경에서 실행된다는 사실을 알고 있습니다. 다음에도 동일하게 적용됩니다 systemd. 항상 절대 경로를 사용하고 정의 된 변수를 가정하지 않습니다. 스크립트가 의존하는 변수를 명시 적으로 설정하십시오. systemd 하지 않습니다 사용자의를 사용 .bashrc하고 $PATH.

더 많은 정보:


7

예. Linux에서 시작시 또는 디렉토리 rc.local에있는 실행 파일 경로를 정의하여 프로그램을 실행할 수 있습니다 ./etc/etc/rc.d

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
/path/to/executable

참고 : 파일 설명서에 설명 된대로 실행 권한을 할당하는 것을 잊지 마십시오. Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.


파일에 항목을 추가하면 매번 프로그램이 시작됩니까?
Sourav

2
재부팅 할 때마다 그렇습니다. 정기적으로 예약 된 작업 (매일, 시간, 주 또는 임의의 조합)을 원하면 cron스케줄러가 친구입니다.

3
  1. Startup applications홈 버튼 을 사용하여 검색
  2. 딸깍 하는 소리 Add
  3. 응용 프로그램을 호출 할 이름을 입력하십시오 (모든 이름이 가능합니다)
  4. 은에서 Startup command box명령을 입력
  5. OK(목록에 새 명령이 표시되어야 함)을 클릭하십시오.
  6. 딸깍 하는 소리 Close

다시 시작하거나 로그 아웃 한 후 다시 로그인하여 테스트하십시오.

출처 : https://help.ubuntu.com/community/AddingProgramToSessionStartup


1

각 배포판은 각각의 부트 스트랩 기술을 사용하므로 배포판에 대한 문서를 확인해야합니다. /etc/rc.local은 자동화 된 스크립트를 넣을 수있는 곳이지만 실제로는 구식입니다. 이제 대부분의 Linux 기반 시스템은 런레벨 또는 시스템 부트 스트랩을 사용하므로 대부분의 자동 시작 작업을 정밀하게 제어 할 수 있습니다.


0

/programming/7221757/run-automatically-program-on-startup-under-linux-ubuntu 에서 내 대답을 찾았 습니다. 내 Linux Ubuntu 12.10 세션.


3
해결책을 찾게 된 것을 기쁘게 생각합니다. 답변에 단계 요약을 포함시킬 수 있습니까?이 답변은 단순한 링크보다 유용합니다. 감사!
slm

시작시 내 트랙 패드를 자동화하고 끄는 방법을 찾고있었습니다. 터미널에 입력 한 명령은 'sudo modprobe -r psmouse'였습니다. 현재 세션에서 트랙 패드를 끕니다. 부팅 할 때 이것을 자동화하고 싶었습니다. 'sudo modprobe -r psmouse를 추가하여 /etc/rc.local 파일을 수정하여 스크립트를 작성하고 조사했습니다. 그런 다음 터미널에서 다음 명령을 실행하십시오. 'sudo mv / filename /etc/init.d/' 'sudo chmod + x /etc/init.d/filename' 'sudo update-rc.d filename defaults'이제 터치 패드가 꺼져 있습니다. 시작할 때.
CatGuyTX
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.