개발자의 끄적끄적

[linux]리눅스에서 특정명령어 또는 서비스 자동시작하게 하는 방법 본문

개발/linux

[linux]리눅스에서 특정명령어 또는 서비스 자동시작하게 하는 방법

효벨 2020. 7. 13. 03:00
728x90
반응형

[linux]리눅스에서 특정명령어 또는 서비스 자동시작하게 하는 방법

 

 

  1. /etc/rc.d/rc.local 에 해당 실행 명령어나 스크립트 등록
  2. /etc/rc.d/rc3.d 같은 런레벨 파일에 바로 등록

 

등록 방법은 아래를 참고하세요.

 

 

1번 등록 시 주의사항은 일반적인 리눅스 명령어 사용시에는 절대경로로 사용하셔야합니다.

 

[root@ltm6-demo rc.d]# ls

init.d  rc  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  rc.local  rc.sysinit

[root@ltm6-demo rc.d]# /bin/ls

init.d  rc  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  rc.local  rc.sysinit

[root@ltm6-demo rc.d]#

 

위 처럼 명령어의 절대경로로 등록해주어야 정상 동작합니다.

 

위 처럼 실행권한이 있어야합니다. 없다면  chmod +x /etc/rc.d/rc.local   실행권한을 부여해줍니다.

 

 

 

 

[root@ltm6-demo ~]# cd /etc/rc.d

 

drwxr-xr-x. 2 root root  4096 Jan  2 14:14 init.d

-rwxr-xr-x  1 root root  2617 Jul 13  2016 rc

drwxr-xr-x. 2 root root  4096 Sep  5 10:44 rc0.d

drwxr-xr-x. 2 root root  4096 Sep  5 10:44 rc1.d

drwxr-xr-x. 2 root root  4096 Sep  5 10:44 rc2.d

drwxr-xr-x. 2 root root  4096 Sep  5 10:44 rc3.d

drwxr-xr-x. 2 root root  4096 Sep  5 10:44 rc4.d

drwxr-xr-x. 2 root root  4096 Sep  5 10:44 rc5.d

drwxr-xr-x. 2 root root  4096 Sep  5 10:44 rc6.d

-rwxr-xr-x. 1 root root   253 Jan  3 11:11 rc.local

-rwxr-xr-x  1 root root 20199 Jul 13  2016 rc.sysinit

 

리눅스는 런레벨이란 것이 있습니다. 일반적으로 보여지는 그래픽 화면은 런레벨 5이고 흔히 콘솔이라고 하는

검은 화면은 3번입니다. 그래서 자동시작할 서비스가 있다면 3, 5번에 등록하면 됩니다.

 

모든 런레벨에 적용하고 싶다면 저기 붉은색 

 

/etc/rc.d/rc.local

 

에 추가하시면 됩니다.   그 이유는 0~6번의 런레벨 파일을 열어보면 마직막엔 /etc/rc.d/rc.local 을 실행하기 때문입니다.

 

예제로 런레벨 3번을 열어보겠습니다.

 

 

[root@ltm6-demo rc3.d]# pwd

/etc/rc.d/rc3.d

[root@ltm6-demo rc3.d]# ll

total 0

lrwxrwxrwx  1 root root 19 Sep  3  2015 K10saslauthd -> ../init.d/saslauthd

lrwxrwxrwx. 1 root root 20 Mar 11  2014 K50netconsole -> ../init.d/netconsole

lrwxrwxrwx  1 root root 17 Feb  4  2016 K75ntpdate -> ../init.d/ntpdate

lrwxrwxrwx  1 root root 20 Sep  3  2015 K87multipathd -> ../init.d/multipathd

lrwxrwxrwx. 1 root root 21 Mar 11  2014 K87restorecond -> ../init.d/restorecond

lrwxrwxrwx  1 root root 15 Sep  3  2015 K89rdisc -> ../init.d/rdisc

lrwxrwxrwx  1 root root 19 Sep  3  2015 K92ip6tables -> ../init.d/ip6tables

lrwxrwxrwx  1 root root 18 Sep  3  2015 K92iptables -> ../init.d/iptables

lrwxrwxrwx  1 root root 22 Jan 14  2016 S02lvm2-monitor -> ../init.d/lvm2-monitor

lrwxrwxrwx. 1 root root 16 Sep 29  2014 S07iscsid -> ../init.d/iscsid

lrwxrwxrwx  1 root root 17 Mar  7  2016 S10network -> ../init.d/network

lrwxrwxrwx. 1 root root 16 Mar 11  2014 S11auditd -> ../init.d/auditd

lrwxrwxrwx  1 root root 17 Sep  3  2015 S12rsyslog -> ../init.d/rsyslog

lrwxrwxrwx  1 root root 15 Apr  4  2016 S13iscsi -> ../init.d/iscsi

lrwxrwxrwx. 1 root root 31 Mar 11  2014 S14xe-linux-distribution -> ../init.d/xe-linux-distribution

lrwxrwxrwx  1 root root 26 Jan 14  2016 S25blk-availability -> ../init.d/blk-availability

lrwxrwxrwx  1 root root 15 Mar  7  2016 S25netfs -> ../init.d/netfs

lrwxrwxrwx  1 root root 19 Jan 14  2016 S26udev-post -> ../init.d/udev-post

lrwxrwxrwx  1 root root 14 Apr  4  2016 S55sshd -> ../init.d/sshd

lrwxrwxrwx  1 root root 14 Feb  4  2016 S58ntpd -> ../init.d/ntpd

lrwxrwxrwx  1 root root 16 Aug 26  2015 S64mysqld -> ../init.d/mysqld

lrwxrwxrwx  1 root root 17 Dec 11  2015 S80postfix -> ../init.d/postfix

lrwxrwxrwx  1 root root 15 Dec 11  2015 S90crond -> ../init.d/crond

lrwxrwxrwx. 1 root root 34 Mar 18  2014 S98cloud-set-guest-password -> ../init.d/cloud-set-guest-password

lrwxrwxrwx. 1 root root 35 Mar 18  2014 S98cloud-set-guest-sshkey.in -> ../init.d/cloud-set-guest-sshkey.in

lrwxrwxrwx  1 root root 11 Sep  5 10:44 S99local -> ../rc.local

[root@ltm6-demo rc3.d]#

 

 

 

 

대부분의 시작실행 스크립트는 /etc/init.d/ 에 존재합니다. 

별도로 개발한 스크립트를 적용하고 싶다면 아래 샘플을 참고해서 적용하면 됩니다.

 

 

런레벨 3번과 5번에 적용한 모습니다.  중요 서비스는 자동시작되게 다이렉트로 등록한 모습입니다.

 

[root@mailstr ~]# cd /etc/init.d/

[root@mailstr init.d]# ls

 

mysqld

tm6-engine

tm6-engine-auto

tm6-tomcat

 

[root@mailstr init.d]# cd /etc/rc3.d/

[root@mailstr rc3.d]# ln -s ../init.d/tm6-tomcat K99tm6-tomcat

[root@mailstr rc3.d]# ln -s ../init.d/tm6-tomcat S99tm6-tomcat

 

[root@mailstr rc3.d]# ln -s ../init.d/tm6-engine K99tm6-engine

[root@mailstr rc3.d]# ln -s ../init.d/tm6-engine S99tm6-engine

 

[root@mailstr rc3.d]# ln -s ../init.d/tm6-engine-auto K99tm6-engine-auto

[root@mailstr rc3.d]# ln -s ../init.d/tm6-engine-auto S99tm6-engine-auto

 

[root@mailstr rc3.d]# ln -s ../init.d/mysqld K98mysqld

[root@mailstr rc3.d]# ln -s ../init.d/mysqld S98mysqld

 

[root@mailstr rc3.d]# cd ../rc5.d/

[root@mailstr rc5.d]# ln -s ../init.d/tm6-tomcat K99tm6-tomcat

[root@mailstr rc5.d]# ln -s ../init.d/tm6-tomcat S99tm6-tomcat

 

[root@mailstr rc5.d]# ln -s ../init.d/tm6-engine K99tm6-engine

[root@mailstr rc5.d]# ln -s ../init.d/tm6-engine S99tm6-engine

 

[root@mailstr rc5.d]# ln -s ../init.d/tm6-engine-auto K99tm6-engine-auto

[root@mailstr rc5.d]# ln -s ../init.d/tm6-engine-auto S99tm6-engine-auto

 

[root@mailstr rc5.d]# ln -s ../init.d/mysqld K98mysqld

[root@mailstr rc5.d]# ln -s ../init.d/mysqld S98mysqld

[root@mailstr rc5.d]#

 

 

 

이렇게 /etc/rc.d/rc.local 에 등록해도 됩니다.

 

/etc/rc.d/rc.local

 

[root@ltm6-demo rc2.d]# cat /etc/rc.d/rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

 

# MTS Agent #

/home/talk/agent_talk/bin/control start

 

[root@ltm6-demo rc2.d]#

[root@ltm6-demo rc2.d]#

[root@ltm6-demo rc2.d]#

 

 



출처: https://blog.thundermail.co.kr/81 [ThunderMail's Blog]

반응형
Comments