시스템을 부팅 할 때마다 Linux 시작에 응용 프로그램 / 스크립트를 추가 할 수있는 방법이 있습니까?
나는 자동화 된 방법을 찾고 있습니다. 즉, 사용자는 cron 작업이나 이와 같은 것으로 이것을 추가해서는 안됩니다.
답변
Cron 과 같은 것 ?
@reboot
항목을 참고하십시오
이것은 가장 유연한 접근 방식이며 Windows의 “예약 된 작업”과 가장 유사한 접근 방식입니다 (실제로 더 낫습니다).
답변
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
.
참고 : 사용한 경우
cron
crontab 항목이 제한된 환경에서 실행된다는 사실을 알고 있습니다. 다음에도 동일하게 적용됩니다systemd
. 항상 절대 경로를 사용하고 정의 된 변수를 가정하지 않습니다. 스크립트가 의존하는 변수를 명시 적으로 설정하십시오.systemd
하지 않습니다 사용자의를 사용.bashrc
하고$PATH
.
더 많은 정보:
답변
예. 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.
답변
Startup applications
홈 버튼 을 사용하여 검색- 딸깍 하는 소리
Add
- 응용 프로그램을 호출 할 이름을 입력하십시오 (모든 이름이 가능합니다)
- 은에서
Startup command box
명령을 입력 OK
(목록에 새 명령이 표시되어야 함)을 클릭하십시오.- 딸깍 하는 소리
Close
다시 시작하거나 로그 아웃 한 후 다시 로그인하여 테스트하십시오.
출처 : https://help.ubuntu.com/community/AddingProgramToSessionStartup
답변
각 배포판은 각각의 부트 스트랩 기술을 사용하므로 배포판에 대한 문서를 확인해야합니다. /etc/rc.local은 자동화 된 스크립트를 넣을 수있는 곳이지만 실제로는 구식입니다. 이제 대부분의 Linux 기반 시스템은 런레벨 또는 시스템 부트 스트랩을 사용하므로 대부분의 자동 시작 작업을 정밀하게 제어 할 수 있습니다.
답변
/programming/7221757/run-automatically-program-on-startup-under-linux-ubuntu 에서 내 대답을 찾았
습니다. 내 Linux Ubuntu 12.10 세션.