[jmpark@jmpark ~]$ ll
합계 0
drwxr-xr-x. 2 jmpark jmpark 6 8월 1 21:59 공개
drwxr-xr-x. 2 jmpark jmpark 6 8월 1 21:59 다운로드
drwxr-xr-x. 2 jmpark jmpark 6 8월 1 21:59 문서
drwxr-xr-x. 2 jmpark jmpark 6 8월 1 21:59 바탕화면
drwxr-xr-x. 2 jmpark jmpark 6 8월 1 21:59 비디오
drwxr-xr-x. 2 jmpark jmpark 6 8월 1 21:59 사진
drwxr-xr-x. 2 jmpark jmpark 6 8월 1 21:59 서식
drwxr-xr-x. 2 jmpark jmpark 6 8월 1 21:59 음악
[jmpark@jmpark ~]$ vi bash_profile
[jmpark@jmpark ~]$ vi .bash_profile
bash_profile 는 사용자의 홈 디렉토리 안에 있잖아. 근데 조회하면 안보이는건 왜 그런걸까? 그리고 vi bash_profile가 아니라 vi .bash_profile로 편집기를 여는 이유는? .이 왜 붙는거지?
1. 숨김 파일 조회
bash_profile 파일이 사용자 홈 디렉토리에 있지만, 기본적으로 ls 명령어로는 숨김 파일이 보이지 않는다.
숨김 파일은 파일 이름이 .(점)으로 시작하는 파일을 말하고 파일 이름 앞에 .이 붙으면 해당 파일은 기본적으로 숨김 파일로 처리된다.
예를 들면, .bash_profile과 같은 파일은 숨김 파일이다.
숨김 파일을 보려면 -a 옵션을 사용하면 된다.
ls -a
이 명령어를 사용하면 숨김 파일도 포함한 모든 파일이 표시된다.
파일 이름 앞의 .(점) 사용 이유:
s 명령어로는 보이지 않게 하여, 사용자에게 중요하지 않은 설정 파일이 일반 파일 목록에 섞이지 않도록 하는 것이다.
2. vi .bash_profile와 vi bash_profile의 차이
.bash_profile은 Bash 셸의 로그인 세션에 관련된 환경 설정 파일로, 보통 숨김 파일로 존재하며 사용자 설정과 관련된 중요한 정보가 담겨 있다.
vi .bash_profile:
이 명령어는 사용자의 홈 디렉토리에 있는 .bash_profile 파일을 열게 된다.
파일 이름 앞에 .(점)이 붙어있기 때문에 이 파일은 숨김 파일를 의미한다.
vi bash_profile:
이 명령어는 현재 작업 디렉토리에서 bash_profile이라는 파일을 vi 편집기로 오픈한다.
/etc/systemd/system 경로에 server.service를 만들고 설정 (만들 때 당연히 root 사용자로 파일 만들어야 함)
systemd는 유닛 파일이 실행 가능한 파일이 되어서는 안됨
권한은 644를 기본으로 하며, 이와 다를 경우 보안상 취약한 상태
[root@localhost ~]# cd /etc/systemd/system/
[root@localhost system]# vi server.service
[Unit]
Description=Run RTIM Server as jmpark user
[Service]
Type=forking
User=jmpark
WorkingDirectory=/app/server/bin
ExecStart=/bin/bash /app/server/bin/runServer.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target # 시스템 부팅 시 대부분의 서비스가 실행되는 기본 대상을 의미
## Service Type 설정
개인적인 생각이지만 service 타입 설정이 제일 중요한 듯, 구동시키는 스크립트가 어떤 기능을 하는지에 따라 설정해줘야 한다. 아니면 백날천날 안됨.
WorkingDirectory는 실행할 명령어가 사용해야 할 기본 작업 디렉토리를 지정합니다. 이는 명령어가 상대 경로로 파일을 찾거나 생성할 때 기준이 되는 디렉토리입니다.
예를 들어,ExecStart에 명시된 경로가 절대 경로일지라도, 실행 중에 발생하는 파일 작업은WorkingDirectory에서 상대적으로 처리됩니다.
파일 접근 문제 방지:
명령어가 실행될 때, 해당 명령어가 사용하는 파일이나 리소스가WorkingDirectory에 있을 경우, 상대 경로로 접근할 수 있습니다. 만약WorkingDirectory가 설정되어 있지 않다면, 기본적으로/(루트 디렉토리)에서 실행되므로 파일을 찾지 못할 수 있습니다.
스크립트나 프로그램의 통일성:
여러 스크립트나 프로그램이 동일한 작업 디렉토리를 사용해야 할 경우,WorkingDirectory를 통해 일관된 작업 환경을 제공할 수 있습니다. 이는 특히 복잡한 애플리케이션에서 유용합니다.
WorkingDirectory=/app/server: 이 설정으로 인해,rtim-server가 실행될 때 기본 작업 디렉토리는/app/server가 됩니다.
ExecStart=/app/server/bin/rtim-server start: 이 경로는 명령어의 절대 경로입니다.
이 경우, 만약 rtim-server가 상대 경로로 파일에 접근해야 한다면, /app/server를 기준으로 하게 됩니다. 따라서, 파일 작업이 더 원활하게 이루어질 수 있습니다.
# 서비스 등록 여부 확인 및 자동시작 설정
등록한 서비스 보이는지 확인
[root@localhost system]# systemctl status server
● server.service - when reboot, server.service auto start to user
Loaded: loaded (/etc/systemd/system/server.service; disabled; vendor preset: disabled)
Active: inactive (dead)
[jmpark@localhost ~]$ systemctl enable server
root@bagjeongmin-ui-MacBookPro /Users # sudo passwd rathon
Changing password for rathon.
New password:
Retype new password:
################################### WARNING ###################################
# This tool does not update the login keychain password. #
# To update it, run `security set-keychain-password` as the user in question, #
# or as root providing a path to such user's login keychain. #
###############################################################################
끝!
사용자 변경해서 작업하자
root@bagjeongmin-ui-MacBookPro /Users # su - rathon
rathon@bagjeongmin-ui-MacBookPro ~ %