전공 수업부터 리눅스 마스터 2급 자격증을 준비하기까지 학습했던 리눅스 명령어들을 정리했다. 전반적인 명령어를 익히는 누군가에게 도움이 되었으면 좋겠다. 더 자세한 사용방법이 알고 싶다면 추가 공부를 할 것을 권장한다.
uname
(unix)시스템 정보 출력
옵션 | 설명 |
---|---|
-a | 사용 가능한 모든 시스템 정보 출력 ⇒ 커널 이름, 노드 이름(호스트 이름), 커널 릴리스, 커널 버전, 머신 하드웨어 이름, 프로세서 유형(가능한 경우), 하드웨어 플랫폼(가능한 경우), 운영체제 |
-m | 하드웨어 종류 출력 |
-n | 호스트이름 출력 |
-r | 커널 릴리스 출력 |
date
날짜와 시간을 출력
timedatectl
시스템 시간대를 지정하며, timedatectl set-timezone 타임존
으로 시간대를 변경할 수 있다.
출력 내용 | 의미 |
---|---|
Local time | 현재 지역의 시간 |
Universal time | 협정 세계시 |
RTC time | 하드웨어 시계 |
Time zone | 서버 지정 국가 및 시간 |
System clock synchronized | 시스템 시간 동기화 여부 |
NTP(Network Time Protocol) service | 타임서버의 동기화 여부 |
timedatectl list-timezones
타임존 목록을 확인할 수 있다.
exit
터미널 종료
shutdown
rc 스크립트를 실행하며, init 명령어와 비슷한 기능을 수행
옵션 | 설명 |
---|---|
-r | 재부팅 |
-h | 종료 |
-t | 시간 지정 |
명령 | 설명 | 비고 |
---|---|---|
update | 패키지 저장소에서 새로운 패키지 정보를 가져옴 (/etc/apt/sources.list에 명시한 저장소로부터 패키지 정보를 읽어 동기화) | |
upgrade | 현재 설치되어 있는 패키지를 업그레이드 | --no-upgrade: 해당 패키지가 설치되어 있을 경우 업그레이드 하지 않음 / --only-upgrade : 새로운 패키지를 설치하지 않고 이미 패키지가 설치된 경우 업그레이드만 함 |
install | 패키지 설치 | |
remove | 패키지 삭제 | 패키지의 설정 파일은 남겨둠 ⇒ 설정파일을 포함하여 패키지 삭제 시 purge 서브 명령을 사용하거나 remove 서브 명령과 함께 --purge 옵션 사용 |
purge | 환경설정까지 삭제 | |
download | 패키지를 현재 디렉터리로 내려 받음 | |
autoclean | 불완전하게 내려받았거나 오래된 패키지 삭제 | |
clean | /var/cache/apt/archives에 캐시되어 있는 모든 패키지를 삭제하여 디스크 공간을 확보 | |
check | 의존성이 깨진 패키지 확인 |
옵션 | 설명 |
---|---|
-f | 의존성이 깨진 패키지를 수정하려고 시도 |
-h | 간단한 도움말 출력 |
apt-cache [옵션] <서브명령>
명령 | 설명 |
---|---|
stats | 캐시에 대한 통계 정보 출력 |
dump | 현재 설치되어 있는 패키지를 업그레이드 |
search | 캐시에서 키워드로 검색 |
showpkg 패키지명 | 패키지에 대한 의존성 정보와 역의존성 정보를 검색하여 출력 |
show 패키지명 | 패키지에 대한 간단한 정보 출력 |
pkgnames | 사용 가능한 모든 패키지 이름 출력 |
옵션 | 설명 |
---|---|
-r | 패키지 제거 |
-P | 패키지 및 관련 설정 파일 모두 삭제 |
-i | 패키지 파일 설치 |
옵션 | 설명 |
---|---|
-p | 설치되거나 설치되지 않은 패키지 파일에 대한 질의 수행 |
-qa (query, all) | 패키지 설치 여부 확인 |
-ql (query, long) | 패키지 위 파일들의 위치 확인 |
-qi (query, information) | 설치된 패키지 정보 출력 |
-qf (query, file) | 특정 파일을 설치한 패키지명 출력 |
-ivh (install, verbose, human readable) | 패키지 설치 |
-e (erase) | 패키지 제거 |
-U (update) | 패키지 업데이트 |
--nodeps | 의존성 패키지 제거 |
-F (freshen) | 패키지 업그레이드 또는 설치 |
명령어 | 설명 | 비고 |
---|---|---|
yum info | 미설치된 패키지 정보 확인 | |
yum install [패키지명] | 설치 | yum install epel-release : 확장 패키지 관련 저장소 설치 |
yum search [문자열] | 문자열이 포함된 패키지 검색 | |
yum erase [패키지명] | 삭제 | |
yum upgrade [패키지명] | 업그레이드 | |
yum history | 작업 이력(설치, 삭제 등) 목록 | |
yum list | 전체 패키지 정보 출력 |
EPEL(Extra Packages for Enterprise Linux Release)
Fedora Project에서 제공하는 저장소로, 각종 패키지의 최신 버전을 제공하는 커뮤니티 기반의 저장소이다.
env
(environment) 또는 printenv
설정된 모든 환경변수(전역변수) 출력
set
/ unset
셸 변수(지역변수) 조회 및 등록 / 셸 변수 해제
alias
이름='명령'
이름='명령1;명령2'
(여러 명령을 적용)
별칭을 설정 및 해제할 수 있으며, 긴 명령어나 자주 사용하는 명령어를 짧게 지정할 때 유용하다. (자주 사용되는 명령어를 입력해두고 간편하게 사용)
unalias
별칭 해제
chsh
(change login shell)chsh [옵션] <사용자명>
사용자의 로그인 쉘을 변경
옵션 | 설명 |
---|---|
-s (shell) | 지정하는 쉘을 앞으로 사용할 로그인 쉘로 변경 |
-l (list) | 사용가능한 쉘 출력 |
set
특정 사용자가 로그인 한 이후 선언한 셸 변수(지역 변수)를 전부 확인할 수 있다.
unset
셸 변수 지정 해제한다.
watch
지정한 명령어의 결과를 원하는 시간 주기로 갱신하며 출력
echo
입력한 문자열 출력
옵션 | 설명 |
---|---|
-n | 마지막에 줄 바꿈 하지 않음 |
cat
(concatenate)cat [옵션] <파일명>
파일명을 인자로 받은 후 그 내용을 이어서 출력한다. Ctrl + d 키 입력 시, 이전 작업으로 되돌아온다.
옵션 | 설명 |
---|---|
-n | 행 번호를 붙여서 출력 |
tail
tail [옵션] <파일명>
파일 뒷부분 몇 행 출력
옵션 | 설명 |
---|---|
+ | 지정한 행 번호부터 끝까지 출력 |
- | 화면에 출력할 행의 수 지정 |
-f | 파일 출력이 종료되지 않고 주기적으로 계속 출력 |
clear
화면 정리
find
find <디렉터리 경로> [파일명] [옵션] (-exec 수행할 명령)
특정 경로(폴더)/파일 탐색
리눅스 find 명령어 사용법. (Linux find command) - 리눅스 파일 검색.
옵션 | 설명 |
---|---|
-name | 파일명으로 검색(파일형식이나 이름에 포함되는 글자 등이 들어갈수 있음) |
-type | 타입명으로 검색 (f: 일반파일, d: 디렉터리, l: 심볼릭링크 파일, s: 소켓파일 등) |
-size | 용량으로 파일 검색 |
-user | 지정한 유저명이 보유하고 있는 파일 검색 |
-perm | 지정한 액세스 권한과 동일한 파일 검색 |
-atime +(-)n | 오늘을 기준으로 n일 이전(이내)에 액세스한 적이 있는 파일 검색 |
-mtime +(-)n | 최근 n일 이전(이내)에 변경된 적이 있는 파일 검색 |
명령 | 설명 |
---|---|
-ls | 자세한 결과 출력 |
-exec 명령어 {} \; | 검색된 파일({}내에 들어감)에 지정한 명령 실행 |
grep
(global regular expression print)grep [옵션] <검색할 문자> <파일명>
옵션 | 설명 |
---|---|
-i | 파일내 검색할 문자열 대소문자 구별없이 탐색 |
-n | 파일내 검색할 문자열이 몇번째 줄인지 탐색 |
-v (invert match) | 패턴을 제외한 내용만 출력 |
-w | 단어 단위로 검색 |
-c | 매칭되는 줄 수 표시 |
-l | 매칭되는 패턴이 있는 파일 이름 출력 |
패턴 | 설명 |
---|---|
^pattern | pattern으로 시작하는 라인 |
pattern$ | pattern으로 끝나는 라인 |
[] | [] 내 문자열에서 한 문자와 일치 |
. | 아무 문자 하나 |
history
명령 입력 기록을 출력하며, 사용자 홈 0디렉터리의 .bash_history 파일에 저장된다.
명령 | 설 |
---|---|
!! | 바로 직전에 실행한 명령 재실행 |
!번호 | 히스토리에 해당 번호의 명령 재실행 |
!문자열 | 히스토리에서 해당 문자열로 시작하는 마지막 명령 실행 |
n | 최근 실행 명령 n개 출력 |
nmcli
(NetworkManager CLI)NetworkManager를 제어하고 네트워크 상태를 보고하는 데 사용
sudo nmcli con mod ens160 ipv4.addresses 192.168.52.131/24
sudo nmcli con mod ens160 ipv4.gateway 192.168.52.2
sudo nmcli con mod ens160 ipv4.dns "192.168.52.2 8.8.8.8"
sudo nmcli con mod ens160 ipv4.method manual
sudo nmcli con up ens160
netstat
옵션 | 설명 |
---|---|
-a(--all) | 모든 소켓 정보 출력 |
-r(--route) | 라우팅 테이블 정보 출력 |
-n(--numeric) | 호스트 이름 대신 IP 주소 출력 |
-I(--interface) | 모든 네트워크 인터페이스 정보 출력 |
-s(--statistics) | 프로토콜별로 네트워크 통계정보 출력 |
-p(--program) | 해당 소켓과 관련된 프로세스의 이름과 PID 출력 |
-t (tcp) | TCP 연결 표시 |
-m (memory) | 소켓 버퍼의 메모리 사용 상태 표시 |
nslookup
(name server)DNS 서버와 대화식으로 질의 응답
traceroute
traceroute <목적지 주소>
목적지까지 패킷이 거치는 경로 출력
tcpdump
ping [옵션] <목적지 주소>
네트워크 상의 트랙픽 덤프 출력
옵션 | 설명 |
---|---|
-a | 통신이 되면 소리 출력 |
-q | 테스트 결과를 지속적으로 보여주지 않고 종합 결과만 출력 |
-c | 보낼 패킷 수 지정 |
ping
네트워크 장비에 ECHO_REQUEST 신호 전송
route
라우팅 테이블 출력 및 편집
게이트웨이 추가
route add default gw 'ip address'
아카이브는 여러 파일을 하나의 묶음으로 보관하는 것을 뜻한다.
tar
(tape archieve)tar <기능> [옵션] [아카이브 파일] <파일명>
파일과 디렉터리를 묶어 하나의 아카이브 파일을 생성하며, GNU 프로젝트에 의해 개조되어 압축 관련 옵션을 지원한다.
원래 여러 파일이나 디렉터리를 묶어서 마그네틱 테이프와 같은 이동식 저장 장치에 보관하기 위해 사용하는 명령이었다.
기능 | 설명 |
---|---|
c (create) | 새로운 tar 파일 생성 |
(원본 파일은 그대로 유지) | |
C | 디렉터리 변경 |
x (extract) | tar 파일에서 원본 파일 추출 |
(아카이브 해제) | |
t (table of contents) | tar 파일 내용 출력 |
(미리보기) | |
v (verbose) | 명령어 수행과정을 자세히 출력 |
r (append) | 이미 생성된 아카이브에 새로운 파일을 아카이브 마지막에 추가 |
u (update) | 지정한 파일이 아카이브에 없는 파일이거나, 아카이브에 있는 파일이지만 수정된 파일인 경우 아카이브 마지막에 추가 |
cvf
: 아카이브 생성
xvf
: 아카이브 해제
r vs u
u기능은 아카이브 파일에 파일이 이미 있는지 확인하고 추가하는 반면, r기능은 지정한 파일을 무조건 아카이브 마지막에 추가
옵션 | 설명 |
---|---|
v (verbose) | 처리중인 파일의 명령어 수행과정을 자세히 출력 |
f | 아카이브 파일이나 테이프장치 지정 |
h | 심벌릭 링크의 원본 파일 포함 |
p | 파일 복구시 원래의 접근권한 유지 |
J | xz로 압축하거나 해제 |
j | bzip2로 압축하거나 해제 |
z | gzip으로 압축하거나 해제 |
Z | compress로 압축하거나 해제 |
(J/j/Z/z)xvf
를 통해 tar 아카이브 후 압축된 파일에 대해 압축 해제와 아카이브 해제 모두 수행할 수 있다.
bzip2
/ bunzip2
아카이브된 파일 압축/압축해제
옵션 | 명령 |
---|---|
-d | 압축 해제 |
--best | 최대한 압축 |
-l | 압축된 파일 정보 출력 |
gzip
/ gunzip
아카이브된 파일 압축/압축해제
옵션 | 설명 |
---|---|
-d | 압축 해제 |
-9 | 최대한 압축 |
-l | 압축된 파일 정보 출력 |
zip
/ unzip
아카이브된 파일 압축/압축해제
make
makefile의 내용대로 컴파일한다.
명령어 | 설명 |
---|---|
clean | 이전에 컴파일했던 내용 삭제 |
disclean | automake에서 분류되지 않은 나머지 파일 삭제 |
install | 컴파일된 파일을 설치 |
옵션 | 설명 |
---|---|
-f | 특정 Makefile을 사용하여 빌드 |
configure
(Makefile 생성을 위한 스크립트): 소스 코드를 컴파일하기 전에 시스템 환경을 검사make
(컴파일): Makefile에 기록된 지시에 따라 소스 코드를 컴파일하고 실행 파일을 생성make install
(설치): 컴파일된 프로그램을 시스템의 적절한 위치에 설치cmake
make의 대체 프로그램으로 멀티플랫폼을 지원하기 위한 목적으로 등장한 오픈 소스 프로젝트이다. make 과정을 수행하지 않고, 지정한 운영체제에 맞는 make 파일 생성이 주요 목적이다. 대표적인 프로그램으로 mysql이 있다.
ps
(process status)옵션없이 사용하면 현재 쉘이나 터미널에서 실행한 프로세스를 출력한다.
출력 정보 | 의미 | 비고 |
---|---|---|
F | 프로세스 플래그 | |
S | 프로세스 상태코드 | |
UID | 프로세스 소유자 이름 | |
SZ | 프로세스 이미지가 차지하는 물리적 페이지 크기 | |
USER | 사용자 계정 이름 | |
PID | 프로세스 번호 | |
PPID | 부모 프로세스의 아이디 | |
C | CPU 사용량(%) | UNIX |
PRI | 프로세스의 우선순위 | 낮을수록 높은 우선순위를 가짐 |
NI | nice 값 (우선순위) | -20~19 (디폴트: 0) |
%CPU | BSD | |
%MEM | 물리적 메모리 사용량(%) | |
VSZ | 사용 중인 가상 메모리 크기(KB) | |
RSS | 사용 중인 무리적 메모리 크기(KB) | |
STIME | 프로세스 시작 날짜 또는 시간 | |
TTY (teletype) | 현재 터미널의 번호 (장치 번호) | |
TIME | 프로세스가 사용한 누적 CPU 시간 | |
CMD | 프로세스의 실행 명령어 | |
STAT (state) | 프로세스의 현재 상태 | |
START | 프로세스 시작 시간 |
문자 | 의미 | 비고 |
---|---|---|
R (running) | 실행중 | |
S (sleep) | 인터럽트가 가능한 대기 상태 | |
I | 커널 스레드가 유휴 상태 | |
D (uninterruptible sleep) | 인터럽트가 불가능한 대기 상태 | 일반적으로 입출력 상태를 의미 |
T (stopped) | 작업 제어에 의해 정지된 상태 | |
Z (zombie) | 좀비 프로세스 | |
< | 우선순위가 높은 프로세스 | |
⇒ 더 많은 CPU time을 할당 | ||
s | 세션 리더 프로세스 | BSD |
+ | 포그라운드 프로세스 그룹 | BSD |
멀티스레드 |
옵션 | 설명 |
---|---|
-e (every) | 시스템에서 실행 중인 모든 프로세스의 정보 출력 |
-f (full) | 프로세스의 자세한 정보 출력 |
-u | 특정 사용자에 대한 모든 프로세스 정보 출력 |
-p | pid로 지정한 특정 프로세스 정보 출력 |
-o | 포맷 지정 |
옵션 | 설명 |
---|---|
a | 터미널에서 실행한 프로세스 정보 출력 |
u (usage) | 프로세스 소유자 이름, CPU 사용량, 메모리 사용량 등 상세 정보 출력 |
x | 시스템에서 실행 중인 모든 프로세스 정보 출력 |
옵션 | 설명 |
---|---|
--pid | 목록으로 지정한 특정 PID의 정보 출력 |
top
현재 실행 중인 프로세스의 정보를 실시간/주기적으로 출력하며, 상단에는 프로세스의 자세한 요약 정보, 하단에는 각 프로세스의 정보를 출력한다.
옵션 | 설명 |
---|---|
-n | 지정한 숫자만큼 화면 출력 갱신 |
-u | 지정한 사용자의 프로세스 모니터링 |
-b | 출력결과를 파일이나 다른 프로그램으로 전달 |
-d | 화면 갱신주기를 초 단위로 설정 |
-p | 지정한 PID 프로세스를 모니터링 |
pgrep
특정 프로세스가 실행 중인지 확인
옵션 | 설명 |
---|---|
-x | 패턴과 정확히 일치하는 프로세스의 정보 출력 |
-n | 패턴을 포함하고 있는 가장 최근 프로세스의 정보 출력 |
-u | 특정 사용자에 대한 모든 프로세스 출력 |
-l | PID와 프로세스 이름 출력 |
-t | 특정 단말기와 관련된 프로세스의 정보 출력 |
pmap
프로세스의 메모리 자원 사용량 상세 출력
bg
(background)현재 실행 중인 프로세스를 백그라운드 작업으로 전환하며, 명령어 수행 이전에 먼저 Ctrl + z
(SIGSTP, 20)로 프로세스를 대기 상태로 전환한다.
fg
(foreground)포그라운드 작업으로 전환
stop
stop <%작업번호>
포그라운드 작업을 정지(종료 아닌 일시 정지)
nohup
(no hang up)사용자가 로그아웃하거나 작업 중인 터미널 창이 닫혀도 프로세스를 백그라운드 프로세스로 계속해서 작업할 수 있도록 한다.
jobs
jobs <%작업번호>
백그라운드 작업 목록을 출력
항목 | 출력 예 | 의미 | 상세 |
---|---|---|---|
작업번호 | [1] | 작업번호로서 백그라운드로 실행할 때마다 순차적으로 증가 | |
작업순서 | + | 작업 순서 표시 | + : 가장 최근에 접근한 작업, - : + 작업보다 바로 전에 접근한 작업, 공백 : 그 외의 작업 |
상태 | Running | 작업 상태 표시 | Running : 실행 중 Done : 작업이 정상적으로 종료 Exit : 작업이 비정상적으로 종료 Stopped : 잠시 작업이 중단됨 |
명령 | sleep 100 & | 백그라운드로 실행 중인 명령 |
프로세스의 소유자와 루트 권한자만이 명령을 내릴 수 있으며, 우선 순위는 -20부터 19까지 높은 순~낮은 순으로 지정 가능하다.
nice
프로세스명을 사용하여 우선순위를 변경하며, nice 값을 기본적으로 10 증가(우선순위 낮춤)시킨다. 양수값에 ‘-’, 음수값에 ‘--’를 사용한다.
renice
renice [옵션] [n] [PID]
PID(프로세스 아이디)를 사용하여 이미 실행중인 프로세스의 우선순위를 변경한다. 양수값에 ‘-’를 사용하지 않는다.
kill
kill <시그널> <PID>
지정한 시그널을 특정 PID의 프로세스에게 보내 프로세스를 종료시키며, 작업번호로 종료시키려면 %[작업번호]를 지정한다.
[Ctrl] + c 는 인터럽트 시그널을 프로세스에 보내 종료시킨다.
옵션 | 설명 |
---|---|
-l | 리눅스에서 지원하는 시그널의 목록 출력 |
pkill
지정한 시그널을 특정 프로세스명의 프로세스에게 보내 프로세스를 종료(지정 CMD의 프로세스 종료)한다. 같은 명령이 여러 개 검색될 경우, 한 번에 모두 종료한다. (자신이 소유한 프로세스만 종료 가능)
killall
프로세스명을 사용하여 프로세스를 종료시킨다.
systemctl
systemd 제어
유닛 | 기능 |
---|---|
service | 시스템 서비스 유닛으로 데몬을 시작, 종료, 재시작 및 로드 |
target | 유닛을 그룹화 |
automount | 디렉터리 계층 구조에서 자동 마운트 포인트를 관리 |
mount | 디렉터리 계층 구조의 마운트 포인트를 관리 |
device | 리눅스 장치 트리의 장치를 관리 |
path | 파일 시스템의 파일이나 디렉터리 등 경로를 관리 |
scope | 외부에서 생성된 프로세스를 관리 |
slice | 시스템의 프로세스를 계층적으로 관리 |
socket | 소켓을 관리 |
swap | 스왑 장치를 관리 |
timer | 타이머와 관련된 기능을 관리 |
명령 | 설명 |
---|---|
start | 유닛 시작 |
stop | 유닛 정지 |
reload | 유닛 설정 파일 다시 읽음 |
restart | 유닛 재시작 |
status | 유닛의 현재 상태 확인 |
enable | 부팅 시 유닛 자동 시작으로 설정 |
disable | 부팅 시 유닛 자동 시작하지 않게 설정 |
옵션 | 설명 |
---|---|
-a | 상태와 관계없이 유닛 전체 출력 |
-t | 지정한 종류의 유닛만을 출력 |
restart vs reload
restart의 경우는 service를 재시작하므로 service를 shutdown한 후 다시 시작하는 반면, reload의 경우 해당 서비스의 configuration 파일들을 reload한다.
mount
mount [옵션] [장치] [마운트 포인트(특정 디렉토리)]
옵션 | 설명 |
---|---|
-t | 특정 파일 시스템의 종류 지정 |
-a | /etc/fstab 의 마운트 정보를 모두 적용 |
-o | 이미 마운트된 파일 시스템을 다시 마운트하면서 모드 변경 |
umount
마운트 해제
df
(disk free)disk [옵션] <파일 시스템>
디스크의 남은 공간(용량)을 확인하며, 파티션 단위로 출력한다. (파일시스템, 디스크의 크기, 사용량, 남아있는 용량, 사용률, 마운트 지점 순)
옵션 | 설명 |
---|---|
-a | 모든 파일 시스템을 대상으로 디스크 사용량 확인 |
-k , -m | 사용량을 해당하는 단위로 출력 |
-h | GB, MB, KB 등의 단위로 사람이 인식하기 쉽게 표현 |
-t | 지정한 파일시스템에 해당하는 디스크 사용량 출력 |
-T | 파일 시스템 종류 출력 |
du
(disk usage)디렉터리의 디스크 사용량 확인
blkid
(block id)블록 장치에 있는 파티션의 UUID와 파일 시스템 유형 확인
lsblk
(list block device)블록 장치에 대한 정보를 트리 형태로 표현
fdisk
fdisk [옵션] <장치명>
디스크의 파티션 생성, 삭제, 보기 등 파티션 관리
명령어 | 설명 |
---|---|
n (new) | 새로운 파티션 생성 |
w (write) | 파티션 정보 저장하고 종료 |
q (quit) | 저장 안하고 종료 |
x (expert mode) | 전문가 모드로 진입 |
d (delete) | 파티션 삭제 |
옵션 | 설명 |
---|---|
-l | 파티션 테이블 출력 |
-b | 섹터 크기 지정 |
mkfs
(make file system)mkfs [옵션] <파일시스템>
리눅스 파일 시스템 생성하며, mkfs.ext{?}
명령도 가능하다.
옵션 | 설명 |
---|---|
-t | 파일 시스템의 종류 지정 (디폴트는 ext2) |
ext4는 journaling 기능을 지원 |
mke2fs
mke2fs [옵션] <장치명>
리눅스 확장 파일 시스템 (ext2, ext3, ext4) 생성
옵션 | 설명 |
---|---|
-t | 파일 시스템의 종류 지정 (기본: ext2) |
-b | 블럭 크기를 바이트 수로 지정 |
-c | 배드 블럭 체크 |
pwd
(print working directory)현재의 전체 절대 경로를 출력
cd
(change directory)cd <디렉터리명>
경로(폴더) 변경하며, cd 입력 후 탭(Tab)키를 바로 눌러 내부 경로 순차 탐색 또는 글자 입력 후 눌러 자동 완성기능을 사용할 수 있다.
touch
touch [옵션] <생성할 파일명>
파일 생성 또는 파일의 파일 시스템 변경
옵션 | 설명 |
---|---|
-c | 인자로 입력한 파일의 타임스탬프를 현재시간으로 업데이트 |
-t | 원하는 시간으로 타임스탬프 업데이트 (YYYYMMDDhhmm 포맷) |
rm
(remove)rm [옵션] <원본 파일or디렉터리명>
파일 삭제
옵션 | 설명 |
---|---|
-r | 폴더 삭제 |
-i | 인자로 입력한 파일을 삭제할 것인지 안내 메시지 출력 |
rmdir
(remove directory)옵션 | 설명 |
---|---|
-p | 지정한 디렉터리 삭제(부모 디렉터리가 비어 있다면 부모 디렉터리도 삭제 |
w
현재 시스템을 사용하는 사용자의 정보와 작업정보 출력
who
현재 시스템을 사용하는 사용자의 정보 출력
옵션 | 설명 |
---|---|
-q | 사용자 이름만 출력 |
-H | 출력 항목의 제목도 함께 출력 |
-b | 마지막으로 시스템이 부팅한 날짜와 시간 출력 |
-r | 런레벨 확인 |
who am i
/ whoami
내가 처음 로그인한 기준으로 정보 표시 / 현재 내가 로그인한 사용자 표시
users
현재 호스트에 로그인되어 있는 모든 사용자 출력
su
(switch user)사용자 전환
옵션 | 설명 |
---|---|
- | 입력한 사용자의 사용자 초기화 파일 적용 (환경변수 적용 및 워킹 디렉토리 변경) |
sudo
(superuser do)root(관리자) 권한 사용
useradd
useradd [옵션] <새 로그인ID>
사용자 계정 생성
옵션 | 설명 | 예시 |
---|---|---|
-u | UID 지정 | |
-g | GID 지정 (존재하는 그룹이여야 함) | |
-G | 보조 그룹의 GID 지정 | |
-d | 홈 디렉터리 경로 지정 | useradd -m -d /home/room/testuser |
-m | 홈 디렉터리 지정 시 존재하지 않는 경우, 지정한 디렉터리명으로 디렉터리를 자동으로 생성 | useradd -m testuser |
-s | 로그인 시 사용할 기본 쉘 지정 | |
-c | 사용자의 이름 등 부가적인 설명 지정 | |
-f | 사용자 계정의 유효일 지정(INACTIVE 항목 설정) | useradd -f 7 |
-e | 사용자 계정 만기일 지정(EXPIRE 항목 설정) | useradd -e 2024007-28 testuser |
-D | 사용자 생성 시 기본 설정 출력 |
usermod
(modify)usermod [옵션] <로그인 ID>
옵션 | 설명 |
---|---|
-u | UID 변경 |
-g | GID 변경 |
-G | 보조 그룹의 GID 변경 |
-d | 홈 디렉터리 변경 |
-m | 홈 디렉터리 변경시 기존에 사용하던 파일 및 디렉터리를 옮김 |
-s | 로그인시 사용할 기본 쉘 변경 |
-c | 사용자의 이름 등 부가적인 설명 변경 |
-f | 유효일 변경(INACTIVE 항목 설정) |
-e | 만기일 변경(EXPIRE 항목 설정) |
-l | 아이디 변경 |
-L | 비밀번호 잠금 |
userdel
(delete)userdel [옵션] <로그인 ID>
사용자 계정 삭제하며, 옵션 없이 삭제 시 다른 사용자에게 남아있는 홈 디렉터리가 보일 수 있다.
옵션 | 설명 |
---|---|
-r | 사용자 홈 디렉터리까지 삭제 |
umask
기본 접근 권한은 출력하거나 변경
옵션 | 설명 |
---|---|
-S | 마스크 값을 문자로 출력 |
chmod
(change mode)파일 또는 디렉터리의 접근 권한 변경한다. 해당 파일의 소유주나 root(슈퍼 유저)만이 실행 가능하며, 기호 모드 또는 숫자 모드로 접근 권한 변경 가능하다.
옵션 | 설명 |
---|---|
-R | 하위 디렉터리까지 변경 |
chown
(ownership)chown [옵션] <사용자 계정> <파일명>
파일과 디렉터리의 소유자와 소유그룹 변경
옵션 | 설명 |
---|---|
-R | 서브 디렉터리의 소유자와 소유 그룹도 변경 |
chown
chown [옵션][:그룹명] 파일명
옵션 | 설명 |
---|---|
-R | 서브 디렉터리의 소유자와 소유 그룹도 변경 |
crontab
반복 작업(cron: 주기적으로 반복되는 일을 자동적으로 실행)을 예약한다.
날짜 표현 방법: 분/시/일/월/요일
옵션 | 설명 |
---|---|
-e | 편집기 실행 |
-l | 작업 조회 |
-r | 작업 삭제 (모두 삭제) |
at
단일 작업 예약
put
/ get
로컬 시스템에 있는 파일을 FTP 서버에 업로드 / 다운로드
ssh
(secure shell)ssh를 통해 원격지의 서버 컴퓨터에 접속할 수 있다.
옵션 | 설명 |
---|---|
-l | 계정 변경해서 접속 |
-n | ssh가 끝날 때 까지 터미널을 차지하지 않고 ssh를 백그라운드에서 실행 |
-p | 포트 변경 |
키 발급 과정
키 쌍 생성: ssh-keygen
명령어를 통해 ssh 공개키, 개인키를 발급한다. 아래 명령어를 통해 키를 발급(rsa 비대칭키 알고리즘 사용)하면 개인 키(비밀 키)는 ~/.ssh/id_rsa
에 저장되고, 공개 키는 ~/.ssh/id_rsa.pub
에 저장된다.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
공개 키를 서버에 배포: 생성된 공개 키(id_rsa.pub
)를 원격 서버의 사용자의 홈 디렉터리에 있는 .ssh/authorized_keys
파일에 추가해야 한다. 이 파일에 저장된 공개 키들을 통해 사용자가 비밀번호 없이 SSH를 통해 서버에 접속할 수 있다. 아래 명령어를 통해 서버 컴퓨터의 ~/.ssh/authorized_keys
에 공개키가 등록된다.
ssh-copy-id username@server_ip_address
SSH를 통한 접속: 개인 키를 사용하여 SSH 클라이언트에서 서버에 접속할 수 있다. 이후 클라이언트는 개인 키로 서버에서 받은 메시지를 암호 해독하여 인증을 수행한다.
ssh username@server_ip_address
scp
(secure copy)로컬과 원격지 간 파일 또는 디렉터리를 전송
rsync
파일 및 디렉토리를 로컬 및 원격 시스템 간에 효율적으로 복사
source
스크립트 파일 수정 후 수정된 내용을 바로 적용