
→ root 계정이 아니기 때문에 sudo 명령어를 이용해 test.sh를 생성한 뒤 아래 코드를 넣어준다.
💡
sudo= root 권한?
✔️ 일반적으로 시스템 관리자 또는 root 권한이 필요한 명령을 실행할 때 사용하는 명령어
✔️sudo를 사용하면 일시적으로 또는 특정 권한을 가진 사용자가 root 권한을 획득
#!/bin/sh
while :
do
echo "hi frodo" >> /tmp/test.log
sleep 10
done

→ 위 반복문(test.sh 실행)의 결과는 /tmp/test.log에 저장된다.

→ test.sh의 실행 권한을 stat명령어를 통해 확인하니 실행 권한이 없는 것을 확인할 수 있다.
→ 실행 권한을 줘야 test.sh를 실행할 수 있다.
chmod +x /usr/local/bin/test.sh //실행 권한 부여 명령어

→ 위에서 말한 것과 같이, root 계정이 아니므로 sudo 명령어를 사용해 실행 권한을 부여해준다.

→ [test.sh] 파일을 실행했더니,

→ 계속 frodo가 찍히는 것을 확인할 수 있다.
tail -f /tmp/test.log
실행할 파일을 만들었으니, 서비스도 만들어줘야 한다!
sudo vi /etc/systemd/system/test.service

[Unit]
Description=systemd practice.
[Service]
ExecStart=/bin/sh /usr/local/bin/test.sh
Restart=on-failure //실패할 시 재시작!!
[Install]
WantedBy=multi-user.target


→ test.service에 심볼릭 링크가 생성된 것을 알 수 있다.
//서비스 목록 리로드
sudo systemctl daemon-reload
//서비스 구동 및 시작 목록에 추가
sudo systemctl start test.service
sudo systemctl enable test.service

→ test.sh를 실행시켜주지 않아도 test.sh가 계속 실행되는 것을 알 수 있다.
[chohyeon1208@vm1 ~]$ sudo ps aux | grep test // 실행되고 있는 파일 확인 명령어

→ test.sh 파일이 계속 작동하고 있는 것을 확인할 수 있다.
[chohyeon1208@vm1 ~]$ sudo kill -9 670

→ 파일을 kill 해도 다시 살아나는 것을 볼 수 있다.
→ 이렇게 프로세스 관리 가능!!
→ 어떻게 하면 죽일 수 있을까?
[chohyeon1208@vm1 ~]$ sudo systemctl stop test

→ test.sh가 더 이상 실행되지 않는 것을 확인할 수 있다.
→ 두 개 모두 처리하는 역할은 같지만, 개념은 약간 다르다.
윈도우로 치면 “바로라기”와 같은 개념으로, 리눅스에도 링크 기능이 있다.
특정 파일이나 디렉토리를 링크를 걸어 사용할 수 있는데, 링크에는 2가지 종류가 있다.
- 하드링크 → 원본이 사라져도 유지
- 심볼릭 링크 → 원본이 사라지면 유지되지 않음
✔️ 하드 링크
→ 원본 파일과 동일한 inode를 가진다.
(→ 원본 파일이 두 개의 파일(원본 파일, 하드 링크 파일)로 서로 다른 이름으로 존재하지만 같은 파일 정보를 가지게 되는 것이다.)
✔️ 심볼릭 링크
→ 원본 파일의 이름을 가리키는 링크
장점 : 전혀 다른 파일이라도 원본 파일과 이름이 같아면 계속 사용 가능!
inode = index node