본문 바로가기

Linux

(26)
systemd 사용자 유닛 만들기 systemd에서는 사용자만의 유닛을 만들고 로그인 시 자동으로 실행하도록 설정할 수 있습니다. 이것으로 개별 사용자의 입맛대로 시작 프로그램을 등록할 수 있고, .timer나 resource control 등의 systemd 기능들을 사용할 수 있습니다. 먼저 사용자의 systemd 유닛 파일이 존재하는 디렉토리는 계정의 홈 디렉토리 아래의 .config/systemd/user/ 입니다. 사용자가 어떤 유닛을 만들어서 사용하고 싶다면 이 디렉토리에 저장되어 있어야 합니다. 예시로 chromium을 관리하는 서비스를 만들려면 아래와 같이 하면 됩니다. [Unit] Description=Chromium service [Service] ExecStart=/usr/bin/chromium 이 내용을 ~/.con..
man 페이지의 특정 섹션 보기 리눅스에서 명령어나 라이브러리의 함수의 자세한 설명과 인자들을 보기 위해서 man 페이지를 자주 사용합니다. 다만 동일한 이름의 명령어와 함수가 존재하는 경우가 있습니다. 그래서 함수의 설명과 인자를 보고싶었는데 정작 man 페이지에서는 명령어의 메뉴얼을 보여주는 것을 본 적이 있을겁니다. man 페이지는 내용에 따라서 여러 섹션으로 나뉘어 있습니다. 리눅스에서는 아래와 같이 8개의 섹션이 정의되어 있습니다. 1. 명령어2. system call3. 라이브러리 함수4. 특수 파일5. 파일 포맷 및 관습6. 게임7. 기타8. 시스템 관리 명령어 이렇게 한 페이지에 여러 섹션으로 나뉘어져 있기 때문에 페이지 이름이 중복되더라도 문제없이 메뉴얼이 저장, 표시될 수 있습니다. man 페이지 이름이 중복되는 것들..
리눅스 시스템 시간 동기화하기 ㅋ리눅스 시스템의 시간 동기화에 대해 사용되는 프로그램을 찾아보면 주로 ntpd, rdate를 소개하고 있습니다. 다만 둘 다 새로운 패키지를 설치해야 한다는 귀찮음과 rdate를 사용하여 정기적으로 동기화하려면 cron이나 systemd timer 등의 다른 프로그램의 도움이 필요합니다. 그래서 저는 요즘 대부분의 배포판에 도입된 systemd의 timesyncd 를 사용하여 시간 동기화를 하는 것을 추천합니다. systemd가 적용되어 있다면 systemd-timesyncd도 자동적으로 설치되기 때문에 따로 설치할 필요도 없고, systemd의 특유의 간단한 설정으로 어렵지 않게 적용할 수 있습니다. 먼저 timesyncd의 설정 파일은 /etc/systemd/timesyncd.conf 에 존재합니다..
hostnamectl로 리눅스 호스트명 변경하기 옛날 init 시절에 호스트명을 변경하려면 상당히 귀찮았습니다. 거기다 파일 하나만 바꿨다간 갑자기 에러가 뜨거나 하는 경우도 빈번했습니다. 하지만 systemd가 도입되면서 hostnamectl 이란 명령이 새로 생겼고, 이 명령을 사용하면 간단하며 안전하게 호스트명을 변경할 수 있습니다. hostnamectl를 아무 인자없이 실행하면 시스템의 호스트명, 샤시, Machine ID, Boot ID, 가상화, 커널 버전 등의 정보를 출력합니다.이것은 제 컴퓨터에 구축해둔 컨테이너에 접속하여 hostnamectl을 실행한 모습입니다. 현재 호스트명은 test로 설정된 것을 볼 수 있습니다. 이 호스트명을 변경하려면 set-hostname 과 변경할 호스트명을 인자로 입력하면 됩니다. # hostnamect..
systemd timer로 cron 대체하기 리눅스 init으로 많이 사용되는 systemd의 기능 중에 timer가 있습니다. 이 timer는 이름 그대로 일정 시간이 지난 이후에 작업을 수행하도록 하는 기능입니다. 예전의 리눅스에서는 cron이란 프로그램으로 crontab 설정파일을 통하여 일정 시간마다 프로그램을 실행시켰습니다만 가독성이 그리 좋지 못합니다.systemd에서는 가독성이 좋으면서 부가적인 옵션이 많으며 간단하게 설정이 가능하고, 리눅스가 실행되는 도중에는 절대 죽지 않기 때문에 사용자도 모르게 cron 서비스가 죽어버리는 사태도 막을 수 있습니다. 그러므로 만약 지금까지 cron을 사용하셨다면 systemd로 넘어오는게 시스템 자동화와 일률적인 관리 편의성을 위해서라도 바람직할거라 생각합니다. systemd는 모든 설정을 Uni..
systemd로 서비스 관리하기 systemd로 서비스를 관리하기 위해서는 먼저 systemctl이란 명령을 알아야합니다.systemctl은 systemd의 전반적인 설정에 필수적인 명령으로, 앞으로 systemd를 사용하기 위해서 가장 많이 사용할 명령입니다. 먼저 시스템 내부의 유닛들을 보기 위해서 list-units 라는 내부 명령이 있습니다. $ systemctl list-units 이렇게 정말 다양한 unit들이 존재합니다. list-units는 기본적으로 실행중인 유닛들을 표시합니다. 만약 모든 유닛들을 보고싶다면 --all 옵션을 사용하면 됩니다. $ systemctl --all list-units 여기서는 service 유닛들을 다룰 예정이라 이 유닛들만 보기 위해서는 -t 옵션을 사용하면 됩니다. $ systemctl ..
systemd란 무엇인가 근 몇 년 안에 리눅스를 조금이라도 깊게 사용해봤다면 systemd라는 미지의 프로세스가 있다는 것을 눈치채셨을 겁니다. 오래전에 사용하셨던 분이라면 init이 사라져버리고 systemd가 떡하니 PID 1를 차지하고 있는 것을 보고 의아해 하였을 분도 계실겁니다.systemd가 PID 1을 차지하는 것을 보면 init이 퇴출당하고 init이 하던 작업을 물려받은 더 대단한 systemd가 나타났다는 것을 쉽게 유추할 수 있습니다. 도대체 뭐가 그리 좋길래 상당수의 배포판들이 오래전부터 사용해오던 init을 버리고 systemd로 갈아탔는지 알아봅시다. 예전의 PID 1이었던 init은 현재로부터 수 십 년 전에 처음 소개된 프로그램인데 그 때의 구조를 거의 바꾸지 않고 계속 기능이 추가되며 날이 갈수록..
아치리눅스 pacman 사용하기 데비안 계열에서는 apt를, 레드햇 계열은 yum을 사용하듯이 아치리눅스는 pacman이라는 패키지 관리자를 통해 시스템의 패키지들을 관리합니다. pacman 에서는 여러 옵션들을 제공하지만 실제로 사용하는 옵션은 그리 많지 않습니다. 업그레이드, 검색, 설치, 삭제 정도만 알아두면 사용에 큰 어려움이 없습니다. 1. 시스템 전체 업그레이드 pacman에서 시스템의 모든 패키지들을 업그레이드하는 것은 아치리눅스를 사용하면서 가장 많이 사용하게될 명령입니다. 명령은 아래와 같습니다. $ sudo pacman -Syu 이를 실행하면 pacman은 패키지 데이터베이스를 업데이트하고 업데이트가 필요한 패키지를 찾아서 사용자가 업그레이드를 할지 말지 물어봅니다. 2. 패키지 검색 아치리눅스를 사용하다보면 추가적으..