[day-53] 리눅스 명령어 추가 정리

Joohyung Park·2024년 3월 21일
0

[모두연] 오름캠프

목록 보기
88/95

앞에서 설명한 명령어 외에 추가적인 명령어를 알아보자.

리다이렉트

출력 결과를 파일에 저장하거나, 파일로부터 입력을 받는 등의 작업을 수행할 수 있다.

# ls의 결과를 file.txt로 저장
ls > file.txt

꺽새가 2개이면 기존 파일의 마지막에 결과를 추가한다.

# file.txt의 내용을 sort 명령에 입력으로 전달
sort < file.txt
# 해당 폴더에 대한 ls 명령의 에러 메세지를 error.txt로 저장
ls /nonexistent_directory 2> error.txt

링크

윈도우의 바로가기와 비슷하다고 생각하면 된다.

  • 하드 링크 : 원본 파일과 동일한 노드를 가르킨다. 원본 파일이 삭제되어도 데이터에 엑세스가 가능하다.
  • 심볼릭 링크 : 윈도우의 바로가기. 원본 파일이 삭제되면 유효하지 않음
# hardlink라는 이름의 하드 링크를 생성
ln source_file hardlink
# symlink라는 이름의 심볼릭 링크 생성
ln -s source_file symlink

메모리와 디스크 명령

메모리 사용량

-h옵션을 주면 조금더 보기 쉽게 표현해준다.

실시간으로(5초마다) 메모리 사용 상태를 확인할 수도 있다.

디스크 사용량

dfdisk filesystem의 약자로, 파일 시스템의 디스크 사용량을 확인하는 명령어이다.

df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           798M  1.2M  797M   1% /run
/dev/sda1       154G   85G   59G  59% /
tmpfs           3.9G   31M  3.9G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/loop1      128K  128K     0 100% /snap/someapp/34
/dev/loop2      3.8M  3.8M     0 100% /snap/anotherapp/2

위와 같이 나오게 된다.

사용자 관련 명령

비밀번호 변경

passwd는 사용자 암호를 변경하거나 새로운 암호를 설정하는 데 사용한다.

  • 본인 암호 변경 : passwd
  • 다른 사용자 암호 변경 : passwd [사용자]
  • 사용자 암호 잠금 : passwd -l [사용자]
  • 사용자 암호 잠금 해제 : passwd -u [사용자]
  • 사용자 암호 삭제 : passwd -d [사용자]
  • 사용자 암호 즉시 만료 설정 : passwd -e [사용자]

권한

파일, 디렉토리의 액세스 권한을 말한다. 읽기(Read, r), 쓰기(Write, w), 실행(Execute, x) 총 3개의 권한이 존재한다.

위와 같은 형식으로 표현되며, 맨 앞 글자는 어떤 형태의 파일인지 알려주고 나머지는 세글자 단위로 표현된다.

첫 세글자는 소유자, 가운데 세글자는 그룹, 마지막 세글자는 기타 사용자 순서이다.

r, w, x중에 없는 권한이면 -표시로 나타낸다.

  • 첫번째 문자
첫번째 문자설명
-일반 파일
d디렉토리
l심볼릭 링크
b블록 스페셜 파일
c문자 스페셜 파일
p파이프
s소켓
  • 권한 위치(순서)
권한 위치 (순서)사용자 범주
2-4번째 문자소유자
5-7번째 문자그룹
8-10번째 문자기타 사용자
  • 권한 문자
권한 문자권한
r읽기
w쓰기
x실행
-해당 권한 없음

권한 변경

chmod와 연산자를 사용하여 권한을 변경할 수 있다.

예를 들어, chmod g+w filename은 그룹에 쓰기 권한을 추가하는 명령이며 chmod a-r filename은 모든 사용자의 읽기 권한을 삭제하는 명령이다.

  • 연산자
연산자설명
+권한 추가
-권한 삭제
=권한 설정
  • 사용자 범주
사용자 범주설명
u소유자
g그룹
o기타 사용자
a모든 사용자
  • 권한
권한설명
r읽기
w쓰기
x실행

숫자 모드로도 변경할 수 있는데, 읽기는 4, 쓰기는 2, 실행은 1로 표현하며 합산하여 권한을 나타낸다.

예를 들어, chmod 755 filename은 소유자에게 읽기(4), 쓰기(2), 실행(1) 권한(합산하여 7)을, 그룹과 기타 사용자에게는 읽기(4)와 실행(1) 권한(합산하여 5)을 부여하는 명령이다.

쉘스크립트

자동화 작업을 수행하기 위한 스크립트 언어이다. 텍스트 파일로 작성되며, 이 파일에는 실행할 쉘 명령이 포함된다.

# 스크립트가 zsh쉘에서 실행되어야 함을 명시
#!/usr/bin/zsh

# echo : 문자열이나 변수를 출력하는 명령
echo "Hello, World!"

위 파일을 test.sh라는 파일로 저장했을 때, 쉘에서 ./test.sh로 실행하면 Hello, World! 가 출력된다.

멀티 태스크와 프로세스 제어

  • 태스크 : 작업의 가장 기본적인 단위이다. 사용자가 시스템에게 명령을 내릴 때 생성된다.
  • 프로세스 : 실행중인 프로그램이다. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있으며, 각 스레드는 독립적인 실행 경로를 가진다. 다른 프로세스의 공간에 직접 접근이 불가하다.
  • : 일련의 연관된 프로세스의 그룹이다. 쉘에서 명령어를 실행하면, 그 명령어는 잡으로 간주되며, 잡은 하나 이상의 프로세스로 구성될 수 있다.
  • ps : Process Status의 약자로, 현재 시스템에서 실행 중인 프로세스의 정보를 출력해준다.
    • ps -ef : 모든 프로세스의 정보를 볼 수 있음
    • ps -u [사용자명] : 특정 사용자에 의해 실행된 프로세스를 보여줌
    • ps -l : 프로세스의 자세한 정보 출력
    • ps -p [프로세스 ID] : 특정 프로세스 ID에 대한 정보 출력

앞에서 설명했던 grep과 함께 자주 사용된다.

# 현재 실행중인 모든 프로세스 중, 특정 프로세스의 정보만 출력
ps -ef | grep [process name]

jobs

현재 쉘에서 실행 중인 작업(job)의 목록을 보여준다. 주로 & 명령어로 백그라운드에서 실행하거나, ctrl+z를 사용하여 프로세스를 일시 중단한 다음 사용한다.

옵션설명
-l각 작업의 프로세스 ID를 같이 표시합니다.
-n마지막에 보여준 것 이후에 상태가 변경된 작업들만 표시합니다.
-p각 작업의 프로세스 ID만 표시합니다.
-r실행 중인 작업들만 표시합니다.
-s중지된 작업들만 표시합니다.
$ sleep 100 &
[1] 12345

$ jobs
[1]+  Running                 sleep 100 &

$ jobs -l
[1]+ 12345 Running                 sleep 100 &

kill

프로세스를 종료시키거나 강제로 종료시킬 때 사용한다.

kill [options] <pid>

만약, 강제로 종료시킨다면 다음과 같이 명령한다.

kill -9 1234

여기서 -9가 강제 종료 옵션이다.

시그널

프로세스간에 통신하는 방법 중 하나이다. 비동기적인 통지 시스템으로, 한 프로세스(또는 운영체제 자체)가 다른 프로세스에게 어떤 사건이 발생했음을 알리는데 사용한다.

시스템 관리

사용자 전환하기

  • su 명령 : switch user의 약자로, 로그인한 사용자의 ID를 다른 사용자의 ID로 변경한다.
su -        # root 사용자로 전환합니다.
su - john   # 'john'이라는 사용자로 전환합니다.
su john   # 'john'이라는 사용자로 전환합니다.
su -c whoami john # 'john'이라는 사용자로 전환하여 'whoami' 명령어를 실행하고 다시 원래 사용자로 돌아갑니다.
  • sudo 명령 : 관리자 권한이 필요한 작업을 수행할 때 사용한다.
sudo apt-get update

sudo를 통해 실행할 수 있는 명령은 /etc/sudoers 파일에서 정의되며, 이 파일은 sudo visudo 명령을 통해 안전하게 편집할 수 있다.

새로 정의한 사용자를 sudoers에 추가하기 위해서는 다음과 같은 과정을 거친다.

sudo visudo
# visudo 파일 안에서 해당 라인 추가
[사용자 이름] ALL=(ALL:ALL) ALL

여기서 첫 번째 ALL은 모든 호스트에서, 두 번째 (ALL:ALL)은 모든 사용자와 그룹으로, 세 번째 ALL은 모든 명령을 실행할 수 있음을 의미한다.

서비스 관련

systemctl은 서비스를 시작하고, 중지하고, 재시작하거나 그 상태를 확인하는 등의 작업을 수행할 수 있다.

# 서비스 시작
systemctl start [서비스이름]

# 서비스 중지
systemctl stop [서비스이름]

# 서비스 재시작
systemctl restart [서비스이름]

# 서비스 상태 확인
systemctl status [서비스이름]

# 시스템 부팅 시 서비스 자동 시작 설정
systemctl enable nginx.service

# 시스템 부팅 시 서비스 자동 시작 설정 해제
systemctl disable nginx.service

네트워크 명령

  • ifconfig : 네트워크 구성을 보거나 저장하는 데 사용한다.
    sudo apt install net-tools를 설치하여 사용해야 하며
    최근에는 ip 명령으로 대체되고 있다고 한다.

  • dig : DNS(Domain Name System) 서버에 쿼리를 전송하여 정보를 얻는 데에 사용한다.

$ dig google.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54830
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com.                    IN      A

;; ANSWER SECTION:
google.com.             299     IN      A       216.58.210.14

;; Query time: 32 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Jul 17 10:46:22 UTC 2017
;; MSG SIZE  rcvd: 55

ip 주소 등을 확인 가능하다.

사용자 생성과 삭제

  • adduser : 사용자 생성 시 사용
adduser [옵션] 사용자명

위 코드를 실행하면, 해당 사용자의 홈 디렉토리를 만들고, 비밀번호를 설정하고, 시스템에 필요한 다른 설정을 수행한다.

  • deluser : 사용자 제거
# 사용자 제거
sudo deluser username

# 사용자 계정, 홈 디렉토리 삭제
sudo deluser --remove-home username

그룹 관리

사용자들이 자원을 공유하는 데 사용하는 도구이다. 각 사용자는 기본 그룹에 속하며, 추가적으로 여러 그룹의 멤버가 될 수 있다. 관련 정보는 /etc/group 파일에 저장된다.

  • chown : 파일 또는 디렉토리의 소유자를 변경
chown new_owner filename

# 한 번에 소유자와 그룹을 모두 변경
chown new_owner:new_group filename
  • groupadd : 그룹 생성
sudo groupadd developers
  • usermod -a -G : 그룹에 사용자 추가
sudo usermod -a -G developers john

여기서 -a는 사용자를 그룹에 추가하고, -G는 추가할 그룹을 지정하는 옵션이다.

  • groupdel : 그룹 삭제
sudo groupdel developers
  • groups : 그룹 확인
groups john

종료와 재시작

  • 종료
# 즉시 종료
sudo shutdown -h now
sudo poweroff

# m분 후 종료
sudo shutdown -h +m
  • 재시작
# 즉시 재시작
sudo shutdown -r now 
sudo reboot

# m분 후 재시작
sudo shutdown -r +m

사용자 환경 설정(Vim)

  • ~/.vimrc
    • Vim 사용자 개인의 환경 설정 파일
    • Vim의 다양한 옵션, 키 매핑, 플러그인 설정 등을 구성
    • 새로운 Vim 세션이 시작될 때마다 자동으로 실행
      다른 파일들도 있지만 보통 ~/.vimrc 파일을 수정하여 설정을 변경한다.

애플리케이션 설치 및 삭제

  • 설치
sudo apt update
sudo apt install [package-name]
  • 삭제
# 패키지의 구성 파일은 제거하지 않는 삭제
sudo apt remove [package-name]

# 완전 삭제
sudo apt purge [package-name]

# 삭제한 후 필요 없는 종속성 제거
sudo apt autoremove
profile
익숙해지기 위해 기록합니다

0개의 댓글