Dandy Now!
  • [Linux] 생활코딩 리눅스 : 파일 찾기(locate, find), 백그라운드 실행(ctrl+z, jobs, fg), 항상 실행(daemon, service), 정기적 실행(cron)
    2024년 04월 15일 10시 41분 20초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    1. locate

    ✔️ 출처 : https://www.opentutorials.org/course/2598/14212

    1.1. 설치

    locate 패키지보다 mlocate 패키지가 updatedb 작업이 빠르기 때문에 mlocate를 설치한다.

    root@(생략):/# sudo apt-get -y install mlocate

    😉 Mac OS의 경우 설치가 필요 없다.

     

    1.2. updatedb

    locate 명령어는 실제 파일을 찾는 것이 아니라 파일 목록 데이터베이스(mlocate)에서 찾는다. 따라서 빠른 검색 속도를 제공하지만 최신의 정보가 아닐 수 있다(udatedb 작업은 크론에 등록되어 있어 매일 새벽에 자동으로 실행됨). 아래 명령어를 이용해 mlocate.db에 파일 정보를 저장한다. mlocate의 경우 설치 시 최초로 db를 생성하기 때문에 설치 직후 아래 명령어를 실행할 필요는 없다.

    root@(생략):/# sudo updatedb

     

    1.3. 파일 검색 예시

    아래 명령어는 파일 검색 예시이다.

    root@(생략):/# locate *.log

     

    2. find

    find는 파일 목록 데이터베이스에서 파일을 찾는 것이 아니라 직접 찾기 때문에 속도가-상대적으로-느리지만 항상 최신의 검색이 가능하다.

    아래 명령어는 모든 디렉터리를 검색하여 확장자가 log인 모든 파일을 검색한다.

    root@(생략):/# find / -name *.log

     

    3. whereis와 $PATH

    $PATH라는 환경 변수에 존재하는 실행 파일(명령어)의 위치를 찾는 명령어이다. 아래 명령어는 위(1.1)에서 설치한 locate의 위치를 찾는 예제이다.

    root@(생략):/# whereis locate

     

    4. 백그라운드 실행

    ✔️ 출처 : https://www.opentutorials.org/course/2598/14216

    4.1. ctrl+z

    실행 중인 프로세스를 백그라운드로 보낸다.

    nano에서는 ctrl+t+z를 입력해야 한다(그림 1 참조).

    [그림 1] ctrl+z를 입력하면 붉은색 배경의 메시지가 표시된다.

     

    4.2. jobs

    jobs 명령어를 통해 백그라운드에서 실행 중인 프로세스를 확인할 수 있다.

    root@(생략):/# jobs
    [1]+  Stopped                 nano bgtest

     

    4.3. fg

    백그라운드에서 실행 중인 프로세스를 포그라운드로 변경한다.

    root@(생략):/# fg
    root@(생략):/# fg %1	# jobs에서 출력된 프로세스 정보에서 []안에 있는 숫자를 % 다음에 입력하여 원하는 프로세스를 선택할 수 있다.

     

    4.4. kill

    백그라운드에서 실행 중인 프로세스를 제거할 때 사용한다.

    root@ltk-SP7-2104P:/leo# kill -9 %1
    
    [1]+  Stopped                 nano bgtest

     

    4.5. &

    앞서 살펴본 내용들이 실행 중인 프로세스를 백그라운드로 보내는 명령에 관한 것이었다면, &는 실행하려고 하는 명령을 백그라운드에서 실행하도록 하는 명령이다.

    root@(생략):/# ls -R / > result.txt 2> error.log &	# ls -R 명령에 의한 결과를 result.txt 파일로 출력하고, 그 과정에서 에러가 발생(2>)하면 error.log 파일로 출력한다. 이 과정이 백그라운드에서 이루어진다.
    [1] 1775197
    root@(생략):/# jobs
    [1]+  Running                 ls --color=auto -R / > result.txt 2> error.log &

     

    5. 항상 실행

    ✔️ 출처 : https://www.opentutorials.org/course/2598/14217

    5.1. daemon 디렉터리

    항상 실행하는 daemon이 위치한 디렉터리는  /etc/init.d/이다. 아래는 해당 디렉터리로 이동하는 명령이다.

    root@(생략):/# cd /etc/init.d/

     

    5.2. service

    service는 daemon을 실행하는 명령어이다.

    root@(생략):/etc/init.d# sudo apt-get install apache2	# 실습을 위한 아파치 설치
    root@(생략):/etc/init.d# sudo service apache2 start	# 아파치 실행
    root@(생략):/etc/init.d# ps aux | grep apache2	# 아파치가 설치되었는지 확인
    root@(생략):/etc/init.d# sudo service apache2 stop	# 아파치 실행 종료

     

    5.3. 재부팅 시 daemon 실행이 유지되도록 하는 방법

    etc에 있는 디렉터리 중 rc3.d는 리눅스가 CLI 부팅의 경우 설정하는 곳이고, rc5.d는 GUI 방식 부팅의 경우 설정하는 곳이다. 아래는 ll 명령어로 출력한 rc3.d 디렉터리의 내용의 일부이다.

    root@(생략):/etc/rc3.d# ll
    total 16
    drwxr-xr-x   2 root root  4096  3월 15 17:25 ./
    drwxr-xr-x 138 root root 12288  4월 20 06:30 ../
    lrwxrwxrwx   1 root root    27  9월 22  2022 K01speech-dispatcher -> ../init.d/speech-dispatcher*
    lrwxrwxrwx   1 root root    15  9월 22  2022 S01acpid -> ../init.d/acpid*
    (생략)

    K01speech-dispatcher에서 K는 재부팅 시 자동 실행하지 않는다는 의미이며, 01은 우선순위를 나타낸다. S01acpid의 경우 S는 재부팅 시 자동 실행됨을 의미한다.

     

    6. 정기적으로 실행(cron)

    ✔️ 출처 : https://www.opentutorials.org/course/2598/14218

    6.1. cron

    정기적으로 처리해야하는 작업을 설정한다.

    root@(생략):/# cron -e	# 크론 편집
    
    # 편집기에서 아래 예제 추가
    */1 * * * * date >> date.log 2>&1	# 1분마다 날짜 정보를 date.log 파일에 추가(>>) 저장. 에러 출력(2)은 표준 출력(1)으로 리다이렉션(&)하여 저장(>)

    😉 크론에 대한 더 자세한 내용은 링크 참고 : https://postforty.tistory.com/400

     

    6.2. tail

    root@(생략):/# tail -f date.log		# date.log 파일에 추가되는 로그를 모니터링
    728x90
    반응형
    댓글