Linux 125

[Linux] ps -ef VS ps aux

개요 보통 프로세스 정보를 확인할 때 ps -ef를 주로 사용한다. 최근 Python으로 프로세스 모니터링 방법을 확인하는데 ps aux 명령어를 추천하는 글을 봤는데 두 명령어 옵션에 차이가 있는지 정리한다. ps -ef linux 매뉴얼에 따르면 표준 구문, UNIX을 이용해 시스템 상의 모든 프로세스를 확인할 때는 아래의 명령어를 제시하고 있다. ps -e ps -ef ps -eF ps -ely 각 옵션은 다음과 같다. -e : 모든 프로세스를 선택한다. -A와 동일하다. -f : 목록을 full format으로 출력한다. -F : 목록을 full format으로 출력한다. -f와 동일하다. -l : 목록을 long format으로 출력한다. -y : 플래그를 표시하지 않고, ADDR 대신 RSS(..

Linux 2023.04.21

[Linux] Crontab - 사용자 전체 설정 확인

개요 일반적으로 Crontab 설정 정보를 확인할 때는 현재 사용자 또는 특정 사용자 계정에서 crontab -l을 사용하여 확인한다. crontab -l 다만 서버 내 계정이 많고, 관리자 root 권한을 갖고 있다면 보다 편하게 확인할 수 있을 것 같아 방법을 정리해 둔다. /var/spool/cron/crontabs 각 사용자가 작성한 crontab 설정은 아래 경로의 파일로 저장되는데, 파일의 소유자는 생성한 사용자로, 그룹 소유자는 crontab으로 지정된다. /var/spool/cron/crontabs/ /var/spool/cron/crontabs 경로는 root 사용자만이 읽기 권한을 가지고 있다. 실제 crontab 설정은 단순히 cat 명령어 등으로 확인하면 된다. crontab -u c..

Linux 2023.03.14

[Linux] OpenSSL - 사용법

개요 네트워크 데이터 통신에 사용되는 프로토콜인 TLS/SSL 오픈 소스 구현판으로, 기본적인 암호화 기능 및 여러 유틸리티 함수가 구현되어 있다. 거의 모든 버전의 유닉스 계열 운영 체제 및 윈도우에서 OpenSSL을 이용할 수 있다. 이 글에서는 간단히 개인 키 생성, 인증서 서명 요청 생성과 정보 확인을 위한 명령어를 정리한다. 개인 키(Private Key) 생성 genrsa 명령은 RSA 개인 키를 생성한다. 키를 생성할 때는 생성할 개인 키의 크기를 마지막으로 지정해야 한다. 기본값은 2048이다. openssl genrsa -out 2048 # -out : 키를 저장할 파일 경로 # -passout : 암호화 시 사용할 비밀번호 # 예시 openssl genrsa -out test_user...

Linux 2023.02.01

[Linux] 여러 프로세스 한 번에 종료하기

개요 그간 여러 프로세스를 종료할 때 ps -ef | grep 명령으로 찾은 후 한 땀 한 땀 pid를 입력해 종료를 했었다. ps -ef | grep kill -9 하지만 정리해야 할 프로세스가 몇십 개, 몇백 개가 넘어가니 그렇게 처리할 수가 없어졌다. 한 번에 여러 프로세스를 정리할 수는 없을까? 명령어 몇 가지 명령어를 조합하여 사용하면 검색한 문자열을 포함하는 프로세스를 한 번에 정리할 수 있다. ps -ef | grep | awk '{print $2}' | xargs kill -15 예시 예로 들어 아래와 같은 Airflow 관련 서비스를 한 번에 정리해보도록 하자. ps -ef | grep airflow ps -ef 명령 결과에서 프로세스의 pid는 두 번째 열에 해당한다. 각 행에서 두 번..

Linux 2022.12.29

[Linux] apt/dpkg - 패키지 설치 이력 확인

개요 apt install 명령어를 이용해 기존에 설치되어 있던 패키지를 업그레이드 버전으로 설치했다. 그리고 그대로 패키지가 동작하지 않았다……. 업그레이드했던 패키지를 기존에 설치되어 있던 버전으로 돌리고 싶은데, 생각해보니 기존 버전을 확인하지 않았다……. 이런 경우에는 어떻게 해야할까? apt history.log apt, apt-get을 이용한 모든 작업은 /var/log/apt/ 아래의 로그 파일에 기록된다. 그 중 설치 이력에 대한 로그는 history.log에 저장된다. 로그 파일을 열어보면, 명령어를 실행한 시점과 실행한 명령어, 그리고 명령어로 인해 삭제되거나 업그레이드/다운그레이드된 패키지와 그 버전을 확인할 수 있다. dpkg.log apt history.log는 gdebi와 같은 ..

Linux 2022.12.04

[Linux] rsyslog을 이용한 history 내역 남기기

개요 bash shell은 명령어 히스토리 기능을 이용해 사용했던 명령어 이력을 보여준다. 이 기능은 사용자 홈 디렉터리의 .bash_history 파일에 기록되기 때문에, 여러 사람이 사용하는 서버인 경우에는 중앙에서 관리하기가 쉽지 않다. 따라서 syslog에 명령어를 남김으로써 명령어 이력을 중앙에 저장해두는 것이 서버를 관리하기에 좋을 수 있다. logger를 이용해 history를 syslog에 남겨보도록 하자. rsyslog IP 네트워크에서 로그 메시지를 전달하기 위해 UNIX 및 Unix 계열 컴퓨터에서 사용하는 오픈 소스 기본적인 syslog 프로토콜을 구현하고, 필터링 기능, 오프라인 출력 대기 작업, TCP를 사용한 전송 등의 기능이 추가되었다. rsyslog 관련 설정 파일은 다음과..

Linux 2022.12.01

[Linux] wait - 프로세스 종료 대기

wait 실행한 프로세스가 종료할 때까지 대기하는 명령어이다. 여러 작업을 동시에 실행할 때 모든 작업이 종료되기를 기다리거나, 특정 작업이 종료되는 것을 기다릴 때 사용한다. 백그라운드 작업 종료 대기 아래의 경우 command1, command2, command3이 모두 종료될 때까지 기다린 후, 모든 명령어가 실행이 종료되면 command4를 실행한다. command1 & command2 & command3 & wait command4 특정 프로세스 종료 대기 특정 프로세스가 종료되기를 기다리고 싶다면 프로세스 ID(pid)를 전달하면 된다. wait pid # 예시 wait 100 내 경우에는, 특정 스크립트를 크론탭으로 주기적으로 실행하되 스크립트가 실행 중임을 나타내는 doing 파일이 있으면..

Linux 2022.11.17

[awk] 사용 예시

개요 2022.09.10 - [awk] 개념에서 awk 명령어에 대한 내용을 정리했다. 이 글에서는 사용했던 예시를 정리한다. 연산 결과 출력 mpstat | tail -1 | awk '{print 100-$NF}' 참고 : 2021.05.17 - 리소스(CPU/MEM) 확인 필드 값과 문자열을 붙여 출력 free | grep ^Mem | awk '{printf "actual_usage=%s, total=%s, actual_usage_ratio=%.2f%% \n", $3, $2, $3*100/$2}' 참고 : 2021.06.12 - [CentOS 7] 메모리 사용률 계산 특정 필드의 합 연산 find ./* -type f | xargs ls -l | awk '{ result += $5 } END { pr..

Linux 2022.11.16

[Linux] dummyfile 생성

dummyfile 내용 없이 공간만 차지하는 파일. 프로그램이나 디스크의 성능 등을 테스트하기 위해 생성하는 경우가 많다. 이 글에서는 Linux에서 dd 명령으로 dummyfile을 생성해본다. dd 파일을 복사하고 변환하는 명령어 dd [OPERAND]... # if=FILE : 표준 입력 대신 읽을 FILE # of=FILE : 표준 출력 대신 쓸 FILE # bs=BYTES : 한 번에 읽고 쓰는 바이트 수 # count=N : 복사할 입력 블록 수 💡 BYTES 지정 시 다음과 같은 기호가 올 수 있다. c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, xM=M, GB=1000*1000*1000, G=1024*1024*1024 등 dum..

Linux 2022.11.03

[Ubuntu] You () are not allowed to use this program (crontab) - 2

현상 Ubuntu에서 일반 사용자로 crontab 설정을 등록하려고 했더니 권한 문제로 설정이 되지 않았다. cron.allow 설정이 존재하는지, 내용은 어떤지 확인해보았더니 아래와 같이 이미 crontab을 설정할 사용자가 등록되어 있었다. 정확하게 아는 건 아니지만 파일의 읽기 권한이 충분하지 않아서 발생하는 현상인 것 같다. 아래의 두 가지 방법 중 원하는 방법으로 설정하면 될 것 같다. 해결 방법 1. 다른 계정이 /etc/cron.allow 파일을 읽을 수 있도록 설정한다. chmod 644 /etc/cron.allow # 또는 chmod o+r /etc/cron.allow 2. /etc/cron.allow 파일의 그룹 소유자를 crontab으로 설정한다. chown root:crontab /..

Linux 2022.10.29