Docker server를 사용하기 위해 Linux 명령어를 정리해보았다. 자주 사용되는 명령어와 개념에 대해 알아보자.
파일 및 디렉토리 관련 명령어
- ls -al: 현재 디렉토리의 파일 및 디렉토리 목록을 자세히 출력
- pwd: 현재 작업 중인 디렉토리의 경로를 출력
- mkdir: 새로운 하위 디렉토리를 생성
- touch: 비어있는 파일을 생성
- cat [파일]: 해당 파일의 내용을 화면에 출력
디렉토리 이동 및 경로 관련 명령어
- cd [디렉토리]: 지정한 디렉토리로 이동
- cd ..: 상위 디렉토리로 이동
기타 유틸리티 명령어:
- clear: 터미널 창의 내용을 삭제
- rm [파일]: 파일을 삭제, "-r" 옵션으로 디랙터리를 삭제
- 세미콜론(;)을 사용하여 한 줄에 여러 개의 명령어를 입력
도움말과 메뉴얼 관련 명렁어:
- [명령어] --help: 해당 명렁어의 도움말을 호출
- man [명령어]: 해당 명령어의 자세한 메뉴얼을 확인
파일 복사, 이동 및 이름 변경:
- cp [원본 파일] [대상 경로/파일]: 파일을 복사
- mv [원본 파일] [대상 경로/파일]: 파일을 이동하거나 이름을 변경
패키지 관리 명령어 (apt-get 또는 yum 사용):
- ubuntu에서는 apt-get, amazon linux는 apt-get 대신 yum 사용
- update: 패키지 목록을 최신 상태로 업데이트
- install: 패키지를 설치
- upgrade: 시스템의 모든 패키지를 업그레이드
- remove: 패키지를 삭제
- search: 특정 패키지를 검색
기타 유용한 명령어:
- sudo: 슈퍼 유저(관리자) 권한으로 명령어를 실행
- nano: 텍스트 파일 편집기로, 파일 생성과 수정이 가능하다. nano 편집기를 실행하고 파일을 작성한 후, ctrl+z를 누르면 편집기가 백그라운드로 들어간다.
- top: 현재 실행 중인 프로세스와 시스템 리소스 사용량을 모니터링하는 작업 관리자
원격 다운로드 및 버전 관리:
- wget [URL]: 지정한 URL에서 파일을 다운로드
- wget -O [저장명] [URL]: 다운받은 파일을 원하는 이름으로 저장
- git clone [GitHub HTTPS URL]: 깃허브의 파일을 리눅스로 복제
grep을 사용한 특정 정보 검색:
- grep [찾을 정보] [파일]: 파일에서 원하는 정보가 포함된 행을 찾아 출력
- 파이프(|)를 사용하여 명령어의 출력 결과를 다른 명령어로 전달
- 예시: ls --help | grep sort | grep file => ls --help에서 "sort"와 "file"이 모두 포함된 행을 출력
ps aux로 실행 중인 프로그램 확인:
- ps aux: 현재 실행 중인 모든 프로그램과 프로세스를 출력
- grep과 함께 사용하여 원하는 프로그램만 필터링
- 예시: ps aux | grep apache => "apache"가 포함된 프로그램만 출력
입출력 리다이렉션 (IO Redirection):
- 명령어 > [저장할 파일]: 화면에 출력되는 내용을 지정한 파일로 저장
- 명령어 2> [에러 로그 파일]: 에러 메시지를 지정한 파일로 저장
- 예시: ls -l > result.txt => "ls -l" 명령어의 결과를 "result.txt" 파일에 저장
head로 파일 일부분 출력:
- head [파일]: 긴 파일에서 처음부터 10줄만 출력
- head -n [숫자] [파일]: 숫자만큼의 줄을 출력
- 예시: head -n1 linux.txt => "linux.txt" 파일의 첫 줄만 출력
쉘(shell)과 쉘 스크립트(Shell Script):
- 쉘은 명령어를 실행할 수 있는 프로그램
- echo $0을 통해 현재 사용 중인 쉘의 종류를 확인
- 쉘 스크립트는 여러 개의 명령어를 순차적으로 실행하는 스크립트
Shell Script 제작:
- nano나 다른 텍스트 편집기를 사용하여 스크립트 파일(.sh)을 작성하고, #!/bin/bash와 같이 첫 줄에 어떤 쉘이 사용될지 지정
- 원하는 명령어들을 작성하고, 필요한 경우 조건문(if문) 등도 추가
- chmod +x [파일]으로 실행 권한 부여 후, ./[파일] 형식으로 스크립트 실행 가능
디렉토리 구조:
- 리눅스는 계층적인 디렉토리 구조를 가지고 있으며, 최상위 디렉토리는 / (루트 디렉토리)
- 주요 디렉토리들은 bin(사용자 일반 명렁), sbin(시스템 관리자), home(사용자 홈 디럭터리) 등이 있으며 각각 다른 역할을 수행
프로그램 위치 확인:
- whereis [프로그램]: 해당 프로그램이 설치된 위치를 출력합니다. 파일명, 명령어가 위치한 디렉토리도 출력
- locate [파일이름]: 지정한 파일 이름과 일치하는 모든 파일을 출력
- 예시: locate *.log => 컴퓨터에서 확장자가 ".log"로 끝나는 모든 파일을 출력
mlocate와 updatedb:
- mlocate는 locate 명령어를 사용하기 위한 패키지
- updatedb 명령어를 실행하여 데이터베이스를 최신 상태로 업데이트
find로 파일 탐색:
- find 명령어는 디렉토리를 직접 탐색하여 원하는 파일을 탐색
- 예시: find / -name "*.log" => 전체 시스템에서 확장자가 ".log"인 파일
- find 명령어의 사용은 상대적으로 복잡하므로, 자세한 내용은 문서 등을 참고
- echo $PATH: PATH라는 환경 변수에 저장된 경로들을 출력합니다.
- 환경 변수는 시스템이 실행될 때 사용되는 설정 값들을 저장하는 변수
백그라운드 확인:
- jobs 명령어로 현재 백그라운드에서 실행 중인 프로그램을 확인
- fg 명령어로 다시 해당 프로그램으로 복귀
- 예제 : ls -alR / > result.txt 2> error.log: 출력 결과를 "result.txt" 파일에 저장하고, 발생한 오류 메시지는 "error.log" 파일에 저장한다. 명령이 오래 걸릴 경우 맨 뒤에 &를 붙여서 백그라운드에서 실행
- 백그라운드 예제: ls -alR / > result.txt 2> error.log &
Apache2 웹 서버:
- Apache2는 널리 사용되는 웹 서버 소프트웨어
- /etc/init.d/ 디렉토리에 설치된 Apache2 관련 파일들이 위치하며, sudo service 명령어를 통해 실행
- sudo apt-get install apache2 명령어로 설치
- sudo service apache2 start/stop/restart 명령어로 서버를 시작, 종료, 재시작
crontab을 사용한 작업 스케줄링:
- crontab -e 명령어를 사용하여 에디터에서 주기적으로 실행할 작업을 정의
- 분, 시간, 일, 월, 요일 등의 주기와 함께 원하는 명령어를 입력
- 주기는 로 생략 가능하며, 예시로 1/ * * * *은 매 분마다 실행됨을 의미
- date 명령어로 현재 날짜와 시각을 확인
alias(별명) 설정:
- alias [별명]='[명령어]' 형식으로 별명을 설정
- 예시: alias l='ls -al' => "l"이라는 별명으로 "ls -al" 명령어를 사용
- unalias [별명]으로 별명을 삭제
.bashrc 파일과 쉘 초기화:
- .bashrc 파일은 쉘(shell)이 시작될 때 자동으로 실행되도록 약속된 파일
- 해당 파일에 원하는 명령어나 설정을 추가하면 쉘이 실행될 때 자동으로 처리
다중 사용자 관리: id 명령어로 사용자 ID를 식별하고, who 명령어로 현재 접속 중인 사용자를 확인
- Root 사용자:
- Root 사용자는 시스템의 최상위 권한을 가지는 슈퍼 유저
- 일반 사용자는 sudo를 통해 Root 권한을 사용
- su 명령어를 사용하여 Root로 전환할 수 있음. (ex: su - root)
- Super User 상태에서의 주의사항:
- Super User 상태에서는 명령어 실행에 주의
- 적절하지 않은 명령어 실행으로 시스템에 영향을 줄 수 있으므로 신중하게 사용
- adduser:
- adduser [추가할 사용자 이름]: 새로운 사용자를 추가
- 해당하는 홈 디렉토리와 관련 파일들이 자동으로 생성
- sudo passwd [사용자 이름]으로 비밀번호를 설정
- Permission과 chmod:
- 파일 및 디렉토리에 대한 접근 권한은 Permission으로 구분
- ls -l 명령어로 접근 모드(권한) 정보를 확인
- ls -l 출력 결과 : type / access mode / owner / group / ... / 파일 명
- access mode : user(owner), group, other의 권한(rw, r, ..) 순으로 출력
- rw- : read & write, - 자리에는 x(excute-실행)이 올 수 있음
- chmod 명령어를 통해 접근 모드(권한)을 변경
- 파일 및 디렉토리 소유자와 그룹:
- 파일 및 디렉토리는 소유자와 그룹에 의해 관리
- 소유자는 파일을 만든 사용자를 나타내며, 그룹은 해당 파일을 공유하는 사용자들의 그룹을 의미
SSH(Secure Shell):
- SSH는 원격 제어를 위해 사용되며, shell을 통해 컴퓨터에 접근
- SSH 서버와 클라이언트가 필요하며, sudo apt-get install openssh-server 명령어로 설치
- SSH 비공개 키와 공개 키를 활용하여 로그인 없이 SSH 접속이 가능
- ssh-keygen 명령어를 사용하여 비공개 키와 공개 키 쌍을 생성
IP 주소와 DNS:
- IP 주소는 컴퓨터를 식별하기 위한 주소
- DNS(Domain Name System)은 도메인 이름과 IP 주소 간의 매핑을 담당하는 시스템
- DNS 서버는 도메인 이름을 입력받으면 해당하는 IP 주소를 반환
Port Forwarding: 라우터가 들어오는 트래픽을 특정 컴퓨터로 전달
Hosts 파일과 DNS:
- hosts 파일은 도메인 이름과 IP 주소의 매핑 정보를 담고 있는 파일
- /etc/hosts 경로에 위치하며, sudo nano /etc/hosts 명령어로 수정
Rsync(Remote Sync):
- Rsync는 원격에 있는 파일 및 디렉토리를 복사하고 동기화하기 위해 사용되는 툴
- rsync -a src/ dest 명령어로 사용할 수 있으며, src 디렉토리의 내용을 dest로 복사
Web Server Log:
- 웹 서버에서 발생하는 로그는 access.log, error.log 등의 파일에 기록
- 해당 로그 파일을 확인하여 웹 서버의 상태 및 문제점을 파악
해당 포스트에 새롭게 알게 된 내용 혹은 필요한 내용을 지속적으로 추가할 예정이다. 강의는 생활코딩님의 유튜브를 참조하였다.
출처
리눅스
www.youtube.com
'Data Science' 카테고리의 다른 글
| [KNIME] PostgreSQL 연결 (2) | 2023.12.03 |
|---|---|
| [Pytorch] 가중치 초기화 (0) | 2023.10.26 |
| [정규화] 정규화의 역할 및 종류 (0) | 2023.10.13 |
| [Metric] 분류/시계열 (0) | 2023.10.11 |
| [Metric] 회귀 (0) | 2023.10.09 |