본문 바로가기
CS

Linux 디렉토리 구조 및 CLI 명령어

by 신림쥐 2024. 4. 16.
728x90
반응형

 


 

리눅스 디렉토리 구조

 

  • /          - 최상위 디렉토리
  •  /bin    - 중요한 명령어 가 있는 디렉토리 , 부팅에 필요한 명령어가 있으며 부팅후에 일반 시스템 계정 사용자들도 사용할 수 있는 명령어가 있는 위치
  •  /boot   - 커널 시스템 부팅에 관련된 파일을 저장하고 있다.
  •  /dev    - 시스템 디바이스 파일을 저장, 가상디렉토리, 리눅스 시스템은 각종 디바이스 장치를 하나의 파일로 취급한다.
  •  /etc     - 시스템 전체 환경설정 파일을 저장
  •  /home - 사용자의 홈디렉토리와 FTP,WWW 등과 같은 서비스 디렉토리들이 저장, ID와 동일한 이름으로 디렉토리를 가진다. 시스템에 상용되진 않지만 단지 리모트상에서 시스템으로 접속하는 사용자들을 위한 공간
  •  /mnt    - 플로피 , CD-ROM등 마운트를 위한 디렉토리, 임시디렉토리로 자동 인식하지 않는다. 보통 여러개의 하위 디렉토리로 나누어 사용되고 , 평소에는 각 디렉토리들은 비어있다.
  •  /lib      - 프로그램들에 필요한 각종 라이브러리 저장
  •  /proc   - 실행중인 프로세서나 현재 시스템 정보를 파일형태로 보여주는 가상디렉토리, 즉 디렉토리에 존재하는 파일들은 실제 HDD에 저장되지 않고 커널에 의해 메모리에 적재된다.
  •  /root   - 시스템 관리자의 홈 디렉토리
  •  /sbin   - 시스템 관리자용 명령어를 저장
  •  /tmp   - 일시적인 저장을 위한 디렉토리 (정기적으로 삭제 된다.)
  •  /usr    - 각종 어플리케이션 등이 설치되어 있는 디렉토리
  •  /var    - 시스템 운영중에 생성되었따가 삭제되는 데이터를 저장하는 디렉토리

 

터미널 명령어

기본 파일 및 디렉토리 조작

cd

  • 디렉토리 이동

ls

  • 현재 자신이 속해있는 폴더 내의 파일, 폴더 표시
// 현재 경로에 하위 파일 조회
$ ls

// 특정 경로에 하위 파일 조회
$ ls /mnt/d/src/images/ST/776

pwd

  • 현재 자신이 위치한 디렉토리

mkdir

  • 현재 디렉토리에 폴더 생성
mkdir 766

 

cp

  • 파일 복사 (디렉토리 내부까지 복사 시, cp -R)
cp src/images/776/* Users/kim/Desktop/files
// cp [1경로] [2경로] 
// 1경로에 있는 파일을 2경로에 복사

 

mv

  • 파일 이동

rm

  • 파일 삭제 (디렉토리 삭제 시에는 보통 rm -R을 많이 사용)

rmdir

  • 디렉토리 삭제

touch

  • 파일 생성 (크기 0)

cat

  • 파일의 내용을 화면에 출력
$ cat /etc/issue

more

  • 화면 단위로 보기 쉽게 내용 출력

less

  • more보다 조금 더 보기 편함

find

  • 특정한 파일을 찾는 명령어

grep

  • 특정 패턴으로 파일을 찾는 명령어

 

 

사용자 및 그룹 관리

useradd

  • 새로운 사용자 계정 생성

passwd

  • 사용자 계정의 비밀번호 설정

userdel

  • 사용자 계정 삭제

usermod

  • 사용자 계정 수정

groupadd

  • 그룹 생성

groupdel

  • 그룹 삭제

groups

  • 그룹 확인

newgrp

  • 자신이 속한 그룹 변경

 

 

시스템 상태 확인

ps

  • 현재 실행되고 있는 프로세스 목록 출력

top

  • 리눅스 시스템의 운용 상황을 실시간으로 모니터링 가능

free

  • 시스템 메모리의 정보 출력

df

  • 파일 시스템의 디스크 공간 사용 정보를 표시

du

  • 디렉토리의 디스크 사용량을 표시

 

네트워크 상태 확인

ping

  • 네트워크 상태 점검 및 도메인 IP 확인

ifconfig

  • 리눅스 IP 확인 및 설정

netstat

  • 네트워크의 상태

traceroute

  • 알고 싶은 목적지까지 경로를 찾아줌

route

  • 라우팅 테이블 구성 상태

 

 

압축 및 권한 관리

tar, gzip 등

  • 압축 파일 묶거나 품

chmod

  • 파일 또는 디렉토리 권한 수정

chown

  • 파일 또는 디렉토리 소유자, 소유 그룹 수정

chgrp

  • 파일 또는 디렉토리 소유 그룹 수정

umask

  • 파일 생성 시의 권한 값을 변경

 

터미널 관리

clear

  • 현재 커맨드 화면을 깨끗하게 지움
  • 기본 단축키: Ctrl + L
$ clear

 

reset

  • 터미널 자체를 새로 초기화
  • 방향키를 통해 이전에 입력한 명령어는 확인이 가능, putty로 접속한 경우 화면을 지우지 않는다.
$ reset

 

 

alias

  • 명령어에 별칭을 지정

unalias

  • 명령어 별칭을 제거

echo

  • 문자열을 출력 (환경 변수 확인 및 설정에 유용)

stty

  • 터미널 라인 설정을 변경

tput

  • 터미널 특성을 설정 (예: 텍스트 색상 변경 등)

 

 

실행 파일 도구

explorer.exe

  • 디렉토리가 찾기 어려운 경우 윈도우 파일탐색기 열기
  • 예를 들어 추가한 폴더(temp)의 경로를 윈도우에서 찾고 싶은 경우 명령어를 통해 윈도우탐색기를 열수 있다.
$ explorer.exe .
    •  

 

 

 

원격 서버와의 상호작용을 자동화 도구

sshpass

  • SSH(Secure Shell) 연결에서 비밀번호를 자동으로 입력하기 위해 사용하는 유틸리티
    • 비밀번호 노출: sshpass는 비밀번호를 명령줄에 평문으로 입력하므로 보안에 취약할 수 있습니다. 특히, 스크립트나 로그 파일에 비밀번호가 저장될 수 있습니다.
    • 대체 방법: SSH 키 기반 인증을 사용하는 것이 훨씬 안전합니다. 키 기반 인증을 설정하면 비밀번호를 사용하지 않고도 SSH 접속이 가능합니다.
  • 자동화 스크립트나 배치 작업 에서 SSH 연결을 자동화할 때, 비밀번호를 입력하는 과정에 사용한다.
  • 보안적인 측면에서 SSH 키 인증을 사용하는 것이 더 안전합니다. 가능하다면 SSH 키 기반 인증을 고려하는 것이 좋다.
sshpass -p 'password' ssh user@hostname

//  'password'는 SSH 로그인에 사용할 비밀번호, 
// 'user'는 사용자 이름, hostname은 원격 서버의 주소
// SSH 접속
sshpass -p 'my_password' ssh user@192.168.1.100

// 파일 전송
sshpass -p 'my_password' scp /path/to/local/file user@192.168.1.100:/path/to/remote/directory

// 명령 실행
sshpass -p 'my_password' ssh user@192.168.1.100 'ls -l /path/to/directory'

 

 

spawn

  • UNIX 및 UNIX-like 시스템에서 프로세스를 생성(스폰)하기 위해 사용되는 명령어나 함수
    • 프로세스 생성: 새로운 쉘이나 명령어 실행을 위한 프로세스를 생성합니다.
    • 자동화: 자동으로 명령어를 입력하고 결과를 처리하는 스크립트를 작성할 수 있습니다.
    • 상호작용: 대화형 프로그램과 상호작용하여 테스트 자동화나 반복적인 작업을 자동화할 수 있습니다.
  • 원격 서버에 접속하여 명령어를 실행하거나, 설치 스크립트를 자동으로 진행하는 등의 작업을 자동화 등 대화형 프로그램을 자동화해야 할 때 유용하다.
import pexpect

# SSH 접속 예시
child = pexpect.spawn('ssh user@hostname')
child.expect('Password:')
child.sendline('password')

# 명령어 실행 후 결과 확인
child.expect('$')  # 프롬프트가 나올 때까지 기다림
child.sendline('ls -l')
child.expect('$')
print(child.before.decode('utf-8'))

# 세션 종료
child.sendline('exit')
child.close()

 

728x90
반응형