LINUX 명령어 정리

이승현·2022년 9월 15일
0

pwd (print working directory)
현재 작업중인 디렉토리 정보 출력

 $ pwd
 /home/ubuntu

cd (change directory)
경로 이동

$ cd /home/ubuntu/testfile
$ pwd
/home/ubuntu/testfile
$cd ..
$ pwd
/home/ubuntu

/ 절대 위치 기준
./ 현재 위치
../ 현재 위치 상위
~/ Home 위치 기준

ls (list)
현재 디렉토리의 파일에 대한 리스트를 보여주는 명령어
EX) ls [옵션][파일경로]

$ls

$ls -l

$ls -a

$ls -al

$ls -h -al //K, M, G 단위의 파일크기를 사용하여 보기 좋게 표시

chmod (change mode)
각 디렉토리를 읽고 쓰고 실행할 수 있는 권한 부여

File      -
Directory d
Link      l
**
user group other
rwx   rwx	rwx
**
r: read / w : write / e : execute
rwx는 각 1bit씩 총 3bits
**
execute  :: 2^0 = 1 
write    :: 2^1 = 2 
read     :: 2^2 = 4
-->모든 권한 부여 7
$chmod 774 a.out

숫자 대신 문자로도 변경 가능

chmod u     r
      g  +- w
      o     x
$ chmod o+x a.out

mkdir (make directory)
디렉토리 생성

mkdir [directory name]
touch [file name]

rmdir
디렉토리 삭제

$rmdir dir1 : dir1 디렉토리 삭제

rm (remove)
파일이나 디렉토리 삭제
디렉토리 삭제 시 하위 디렉토리까지 모두 삭제됨

rm -f [file name]
rm -r [directory name]

touch
파일이나 디렉토리의 최근 업데이트 일자를 현재 시간으로 변경
파일이나 디렉토리가 존재하지 않으면 빈 파일을 만듬

mv (move)
mv [source][destination]
**
파일 혹은 디렉토리 이동
실제로 원하는 위치로 이동할 때도 사용, 이름을 변경하는 용도로도 사용
cp와는 달리 디렉토리 이동시 별다른 옵션이 필요 없음

cp (copy)
파일 혹은 디렉토리 복사
디렉토리 복사할 때에는 -r

$ ls

$ cp file2 makefile

$cp -r dir1 dir2

$cp ./indir1/*.* .

./dir1내 file

./indir1 내 file

./indir1 내 file을 현재 디렉토리 ./dir1에 복사

ln(link)
ln -s [source][target] :: soft link
ln [source][target] :: Hard link
**
1) Hard Link는 Link File이 File System의 물리적 위치인 inode참조

inode :: unique함
Ref (reference count) :: 실제 파일시스템을 참조하는 링크 파일의 개수

$ln file1(기존에 있던 파일) myfile

$ls -li


2) Soft Link는 Link File이 Link File을 참조

$ touch library.0.1.so
$ ln -s library.0.1.so library.so

$rm -f library.so
$touch library.0.2.so 
$ln -s library.0.2.so library.so

cat (concatenate)
파일의 내용 출력
파일 여러개를 합쳐 하나의 파일로 만들 수 있음
기존 한 파일의 내용을 다른 파일에 덧붙일 수 있음
새로운 파일을 만들 수 있음
" | " :: 파이프 라인

$cat [파일이름/경로] | more
파일을 열어 내용을 출력

">" :: Redirection(꺽쇠)

$cat [source] > [target]
같은 이름의 파일이 없는 경우 : 파일 새로 만들고 내용 입력
같은 이름의 파일이 있는 경우 : 파일 덮어쓰고 내용 새로 입력
$cat [source] >> [target]
같은 이름의 파일이 없는 경우 : 파일 새로 만들고 내용 입력하기
같은 이름의 파일이 있는 경우 : 기존 파일의 내용 밑에 이어쓰기
<옵션>
-b : 비어 있는 줄이 아닐 경우 줄 번호를 출력하는 옵션
-n : 모든 라인에 줄 번호를 표시하는 옵션
-E : 모든 줄 끝에 "$"를 붙여 출력하는 옵션

--> source를 맨 마지막에 출력

head, tail
head :: 파일의 앞부분을 보고싶은 줄 수 만큼 보여줌
옵션을 지정하지 않으면 파일 상위 10줄 출력
tail :: 파일의 뒷부분을 보고싶은 줄 수 만큼 보여줌
옵션을 지정하지 않으면 파일 하위 10줄 출력

head [filename]
파일의 위에서 몇 줄 출력
tail [filename]
파일의 아래에서 몇 줄 출력
tail -f [filename]
파일 내용을 화면에 계속 띄워주고 파일이 변하게 되면 새로운 
업데이트된 내용을 갱신해줌

grep (Global Regular Expression Print)
텍스트 파일에서 원하는 문자열이 들어간 행을 찾아 출력하는 명령어, 주로 log파일에서 특정 날짜, 문자로 기록된 error메시지를 찾는데 유용하게 사용

$grep [옵션][문자열][파일명]
-b : 문자와 일치하는 줄의 시작점 출력
-c : 문자와 일치하는 줄의 수 출력
-h : 여러 파일에서 문자열을 찾을 때, 파일이름이 붙는 것을 방지
-i : 대소문자를 구분하지 않는다
-n : 줄의 번호와 내용을 같이 출력
-v : 문자가 포함되지 않는 행 출력
-w : 문자와 한 단어로 일치해야 출력
-l : 문자가 들어간 파일 이름을 출력
-r : 하위 디렉토리에서도 문자를 찾음
-A : 특정 문자 아래 추가로 여러 행 출력
-B : 특정 문자 위 추가로 여러행 출력
<자주 사용하는 형식>
$ grep ^문자열 : 문자열로 행이 시작되는 경우 출력
$ grep 문자열& : 문자열로 행이 끝나는 경우 출력
$ grep 문자1\|문자2 : 여러 문자열을 한 번에 검색
$ grep -A2 문자열 : 해당 문자열이 들어간 행을 포함해 아래 2행 출력
$ grep -v 문자열 : 해당 문자를 제외한 행 출력
$ grep 문자열* : 현재 위치의 모든 파일에서 특정 문자열 출력

more
파일의 내용을 끊어서 확인할 경우 사용
입력을 화면 단위로 볼 수 있으며, 한 화면 이상의 내용을 가진 파일이라면 하단에 파일의 내용이 얼마나 출력되었는지 %로 표시됨

more [옵션] [파일이름]
<옵션>
-[number] : 한 화면에 몇번째 라인까지 표시할지
-s : 빈 줄이 연속적으로 여러줄이 있는 경우에 하나의 빈 줄로 표시되는 옵션
<more실행  명령어>
Space : 페이지 단위로 표시하는 명령
Enter : 행 단위로 표시하는 명령
F(Forward) : 앞 페이지로 이동하는 명령
B(Backward) : 이전 페이지로 이동하는 명령
q : 종료하는 명령
= : 현재 줄 번호를 출력하는 명령

less
파일을 열고 내용을 볼 수 있는 뷰어 기능
vi명령어와 다르게 파일 실행 시 전체 파일을 읽지 않기 때문에 파일 크기가 큰 파일을 빠르게 읽을 수 있음

less [옵션] [파일이름]
<옵션>
-N : 줄 번호를 출력하는 옵션
<less 실행  명령어>
Space : 줄 번호를 출력하는 옵션
f : 다음 페이지로 표시하는 명령
Enter : 행 단위로 표시하는 명령
/[String] : 표시되는 파일에 내용 기준 이후에 내용의 문자열을 찾는 명령
?[String] : 표시되는 파일에 내용 기준 이전에 내용의 문자열을 찾는 명령
q : less 명령어를 종료하는 명령

<system 명령어>

tar (Tape Archiver)
여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용

1. tar로 압축하기
$tar -cvf [파일명.tar] [폴더명]
ex) file1라는 폴더를 aaa.tar로 압축하고자 한다면
$tar -cvf aaa.tar file1
2. tar 압축 풀기
$tar -xvf [파일명.tar]
ex) aaa.tar라는 tar파일 압축을 풀고자 한다면
$tar -xvf aaa.tar
3. tar.gz로 압축하기
$tar -cvfz [파일명.tar.gz] [폴더명]
ex) file1라는 폴더를 aaa.tar.gz로 압축하고자 한다면
$tar -cvfz aaa.tar.gz file1
4. tar.gz 압축 풀기
$tar -xvfz [파일명.tar.gz]
ex) aaa.tar.gz라는 tar.gz파일 압축을 풀고자 한다면
$tar -xvfz aaa.tar.gz
<옵션>
-c : 파일을 tar로 묶음
-p : 파일 권한을 저장
-v : 묶거나 파일을 풀 때 과정을 화면으로 출력
-f : 파일 이름을 지정
-C : 대상 디렉토리 경로를 지정
-x : tar압축을 풂
-z : gzip으로 압축하거나 해제함
-j : bzip2 압축 적용 옵션
-A : 지정된 파일을 tar 아카이브에 추가
-d : tar 아카이브와 파일 시스템 간 차이점 검색
-r : tar 아카이브의 마지막에 파일들 추가
-u : tar 아카이브의 마지막에 파일들 추가
-k : 아카이브 추출 시, 기존 파일 유지
-U : 아카이브 추출 전, 기존 파일 삭제
-w : 모든 진행 과정에 대해 확인 요청(interactive)
-e : 첫 번째 에러 발생 시 중지
[명령어 사용방법]
tar cvf T.tar * : 현재 디렉토리의 모든 파일과 디렉토리를 tar로 묶기
tar dvf T.tar [PATH] : 대상 디렉토리를 포함한 모든 파일과 디렉토리를 tar로 묶기
tar cvf T.tar [FILE_1] [FILE_2] : 파일을 지정하여 tar 아카이브로 묶기
tar xvf T.tar : tar 아카이브를 현재 디렉토리에 풀기
tar xvf T.tar -C [PATH] : tar 아카이브를 지정된 디렉토리에 풀기
tar tvf T.tar : tar 아카이브의 내용 확인하기
tar zcvf T.tar.gz * : 현재 디렉토리를 tar로 묶고 gzip으로 압축하기
tar zxvf T.tar.gz : gzip으로 압축된 tar 아카이브를 현재 디렉토리에 풀기
tar jcvf T.tar.bz2 * : 현재 디렉토리를 tar로 묶고 bzip2로 압축하기
tar jxvf T.tar.bz2 : bzip2로 압축된 tar 아카이브를 현재 디렉토리에 풀기
tar cvfw T.tar * : tar 아카이브 묶거나 풀 때 파일 별 진행 여부 확인하기

root 권한
특정 명령을 실행하거나 파일에 접근하기 위해서 root권한이 필요 root권한을 사용하기 위해서 su,sudo 명령어를 사용

su (substitute user)
현재 계정을 로그아웃 하지 않고 다른 계정으로 전환하는 명령

$su [사용자명]
root 계정으로 로그인 | 현재 디렉토리 유지(현재 계정의 쉘 유지) | root 계정의 패스워드 필요
$su -[사용자명]
root 계정으로 로그인 | "/root"로 디렉토리 변경 (root 쉘 실행) | root 계정의 패스워드 필요
$whoami 
현재 사용자를 확인 
$logout(또는 exit)
이전 계정으로 돌아온다
$su -c 'apt-get update'
root권한으로 하나의 명령만 실행한다
(sudo와 비슷하게 사용 가능)

sudo (substitute user do)
현재 계정에서 root 권한을 이용하여 명령어를 실행할 때 사용
/etc/sudoers 파일에 지정되어 있는 사용자만 사용가능

$sudo [명령어] : root 계정으로 로그인 없이 [명령어]를 실행 | root 계정의 패스워드 필요
sudo su : root 계정으로 로그인 | 현재 디렉토리 유지(현재 계정의 쉘 유지) | 현재 계정의 패스워드 필요
$sudo -i : root 계정으로 로그인 | "/root" 디렉토리로 변경 (root 쉘 실행) | root 계정의 패스워드 필요
$sudo -s : root 계정으로 로그인 | 현재 디렉토리 유지 | root 계정의 패스워드 필요

su와 sudo의 차이점
sudo -> 현재 계정에서 단순히 root의 권한만 빌림
root권한을 이용하여 접근 권한을 얻고 명령어를 실행할 수 있도록 슈퍼유저로서의 액세스를 도움
++
su -> root 계정으로 전환
로그아웃 없이, 다른 사용자로 로그인인을 가능하게 하는 리눅스 명령어
++
su와 su-
공통점 : root계정으로 전환한다
차이점 : su : root계정의 환경변수를 가져오지 않고 현재 계정의 환경변수를 사용 / su- : root계정의 환경변수까지 모두 가져와서 root계정에 접근하게 됨

chown (Change Owner)
파일의 소유권과 그룹을 변경하는 명령어

chown [option][user:group] [target]
소유자는 반드시 입력해야 함
chown [옵션] [user] [target]
소유자 변경
chown [옵션] .[group] [target]
소유자그룹 변경
$sudo chown 새로운user명 :(or .) 새로운group명 target

find
리눅스 파일 시스템에서 파일을 검색하는데 사용되는 명령어

$find [option] [directory] [표현식]
<표현식>
name : 해당 이름의 파일을 찾음. 해당 이름에는 정규 표현식을 활용할 수 있음
type : 지정된 파일 타입에 해당하는 파일 검색
user : 해당 유저에게 속한 파일 검색
empty : 빈 디렉토리 혹은 크기가 0인 파일 검색
delete : 검색된 파일 혹은 디렉토리 삭제
exec : 검색된 파일에 대해 지정된 명령 실행
path : 지정된 문자열 패턴에 해당하는 경로에서 검색.
print : 검색 결과를 출력. 검색 항목은 newline으로 구분. (기본 값)
print0 : 검색 결과를 출력. 검색 항목은 null로 구분.
size : 파일 크기를 사용하여 파일 검색.
mindepth : 검색을 시작할 하위 디렉토리 최소 깊이 지정.
maxdepth : 검색할 하위 디렉토리의 최대 깊이 지정.
atime : n일 이내에 액세스된 파일을 찾음.
ctime : n일 이내에 만들어진 파일을 찾음.
mtime : n일 이내에 수정된 파일을 찾음.
cnewer file : 해당 파일보다 최근에 수정된 파일을 찾음.

<파일명으로 찾기>

$find . -name "*test*"
현재 디렉토리에서 test가 포함되는 파일 찾기
$find . -name "*.txt"
현재 디렉토리에서 .txt 확장자 모두 찾기
$find . -name "*.txt" -delete
현재 디렉토리에서 .txt확장자 파일 검색 후 모두 삭제
$find . -name "test*"
현재 디렉토리에서 test로 시작되는 파일 찾기
$find . -name "*test"
현재 디렉토리에서 test로 끝나는 파일 찾기

<type으로 찾기>

$find . -type d
현재 디렉토리에서 모든 디렉토리 찾기
$find . -name "*test*" -type d
현재 디렉토리에서 test가 들어가는 디렉토리 찾기
$find . -type f
현재 디렉토리에서 모든 파일 찾기

<파일 크기로 찾기 -empty,-size>

$find . -empty
현재 디렉토리에서 빈 디렉토리이거나 크기가 0인 파일 검색
$find . -name "*test*" -empty -delete
현재 디렉토리에서 test가 들어가는 빈 디렉토리이거나 크기가 0인 파일 검색하여 삭제 
$find . size 1024c
현재 디렉토리에서 1024byte인 파일 검색
$find . -size +1024c
현재 디렉토리에서 1024byte보다 큰 파일 검색
$find . -size -1024c
현재 디렉토리에서 1024byte보다 작은 파일 검색
$find . -size +lk -size -10k 
현재 디렉토리에서 1kb보다 크고 10kb보다 작은 파일 검색

<검색된 파일에서 추가 명령 실행하기 -exec>

$find . -name "*test*" -exec ls -l {} \;
현재 디렉토리에 "test"가 들어가는 파일을 찾아서 상세정보 출력
find . -type f -exec grep "test" {} \;
현재 디렉토리에 있는 파일에서 "test"가 들어가는 내용 찾기
find . -name "*.txt" -exec rm {} \;
현재 디렉토리에 ".txt" 확장자를 찾아서 모두 삭제

자주 쓰는 find 옵션

$find ./ type -f | wc -l
조건에 맞는 결과 값이 몇 개 존재하는지 알 수 있음
특정 조건에 해당하는 파일들의 내용을 전부 찾아서 바꿈
find ./ -name "*.txt" -exec sed -i 's/hi/hello/g' {} \;
확장자가 .txt인 파일 중 'hi'라는 문자열을 'hello'로 바꿈

which
명령어의 위치를 찾아주는 기능

which [명령어 이름]
$which ls
ls 명령어의 위치(path)를 반환

whereis
명령어의 위치를 찾아주는 기능

$whereis ls
ls 명령어의 바이너리(실행파일),소스,매뉴얼 파일의 위치 출력
<option>
-b : 바이너리(실행) 파일만 출력
-m : 매뉴얼 파일만 출력
-s : 소스 파일만 출력 (보통 소스파일은 없기 때문에 출력 X)

top
리눅스 시스템의 운용상황을 실시간으로 전반적인 상황을 모니터링 하거나 프로세스 관리를 할 수 있는 유틸리티
cpu, memory, process 상태 출력

<세부 정보 필드별 항목>
* PID : 프로세스 ID (PID)
* USER : 프로세스를 실행시킨 사용자 ID
* PRI : 프로세스의 우선순위 (priority)
* NI : NICE 값. 일의 nice value값이다. 마이너스를 가지는 nice value는 우선순위가 높음.
* VIRT : 가상 메모리의 사용량(SWAP+RES)
* RES : 현재 페이지가 상주하고 있는 크기(Resident Size)
* SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합.
* S : 프로세스의 상태 [ S(sleeping), R(running),W(swapped out process), Z(zombies) ]
* %CPU : 프로세스가 사용하는 CPU의 사용율
* %MEM : 프로세스가 사용하는 메모리의 사용율
* TIME+ : 프로세스 시작된 이후 경과된 총 시간
* COMMAND : 실행된 명령어
<top 실행  사용할  있는 옵션>
* shift + t	: 실행된 시간이 큰 순서로 정렬
* shift + m	: 메모리 사용량이 큰 순서로 정렬
* shift + p	: cpu 사용량이 큰 순서로 정렬
* k	: Process 종료
  o k 입력 후 종료할 PID를 입력한다
  o signal을 입력하라 표시되면 9를 넣어준다
* c : 명령 인자 표시 / 비표시
* l(소 문자엘) 	: uptime line(첫번째 행)을 표시 / 비표시
* space bar	: Refresh
* u	: 입력한 유저 소유의 Process만 표시
  o which user	: 와 같이 유저를 입력하라 표시될때 User를 입력
 o blank(공백) 입력시 모두 표시
 * shift + b	: 상단의 uptime 및 기타 정보값을 블락선택해 표시
* f : 화면에 표시될 프로세스 관련 항목 설정
* i	: idle 또는 좀비 상태의 프로세스는 표시 되지 않음
* z	: 출력 색상 변경
* d [sec] : 설정된 초단위로 Refresh
* c : command뒤에 인자값 표시
* q	: 명령어 종료
<option>
-b : 순간의 정보를 확인하려면(batch 모드)
-n : top 실행 주기 설정(반복 횟수)
-p : procee ID
<운영  실시간 CPU 사용률 측정 방법>
$ top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.f%n", prefix, 100 - v }'

w
사용자 로그인 정보와 현재 작업 내용을 출력하는 명령어
현재 기계에 있는 사용자와 그 프로세스에 대한 정보를 표시

헤더에는 현재 시간, 시스템 실행 시간, 현재 로그인한 사용자 수 및 지난 1,5,15분 동안의 시스템 로드 평균을 순서에 따라 표시한다
각 사용자들에 대해 로그인 이름, tty이름, 원격 호스트, 로그인 시간, 유휴 시간, JCPU,PCPU 및 현재 프로세스의 명령줄과 같은 항목들이 표시

<option>
-h : 헤더를 출력하지 않는다
-u : 현재 프로세스와 CPU시간을 파악하는 동안 사용자의 이름을 무시한다
-s : 로그인 시간, JCPU, PCPU 시간을 제외한 짧은 형식으로 출력
-f : FROM 필드의 값 (접속 IP주소 정보)을 생략하여 출력한다
-i : FROM 필드에 호스트 이름 대신 IP 주소를 표시
-V : w 버전 정보를 출력
-o : 1분 미만의 유휴 시간 동안 빈 공간을 출력

who
호스트에 로그인한 사용자의 정보를 출력하는 명령어 중 하나
현재 접속한 사용자 정보를 '/var/run/utmp' 파일에서 읽어옴
utmp 파일은 사용자가 원격으로 서버에 로그인 할 때 사용자의 정보를 저장하고 사용자가 원격 호스트에서 로그아웃 할 때 저장되어 있는 정보를 제거함

who 명령어는 현재 접속해 있는 사용자의 로그인명, 터미널, 로그인 시간, 원격 호스트 또는 X디스플레이를 출력함

ping (Packet Internet Groper)
네트워크 상태 모니터링
IP네트워크를 통해 특정 목적지까지 네트워크가 잘 동작하고 있는지 확인하는 명령어

ping [option] [목적지 ip 주소]
<option>
-c (count): 패킷을 몇 번 보낼지 설정, 기본 설정은 강제로 정지할 때까지 패킷을 보냄
-i (interval) : 패킷을 보내는 시간 간격, 기본 설정 값은 1초, 슈퍼 유저의 경우 0.2이하로 설정 가능
-i (interface) : 패킷을 보낼 때 출발지 주소를 지정
-s (packetsize) : 패킷 크기 지정, 기본 설정 값은 56byte
ping명령어를 사용해 구글 DNS로 패킷 보내기
$ping 8.8.8.8 -c 2

nslookup
네트워크 디버깅을 위해 자주 사용
DNS서버에 직접 DNS쿼리를 하고 그 결과를 출력해줌

<도메인의 ip조회하는 방법>
$nslookup [DOMAIN]

<ip주소로 도메인 조회하는 방법>
$nslookup [IP]
결과 값을 보고 하나의 IP에 다수의 도메인들이 연결된 것을 
확인할 수 있음

DNS서버를 지정하는 방법
특정한 DNS 서버에 쿼리를 하고 싶을 때
$nslookup [DOMAIN] [DNS_SERVER]

ps
현재 실행중인 프로세스 목록과 상태 출력

$ps [option]
<option>
-A : 모든 프로세스 출력
a : 터미널과 연관된 프로세스를 출력하는 옵션, 보통 x옵션과 연계하여 모든 프로세스를 출력할 때 사용
-a : 세션 리더(일반적으로 로그인 셸)을 제외하고 데몬 프로세스처럼 터미널에 종속되지 않은 모든 프로세스를 출력
-e : 커널 프로세스를 제외한 모든 프로세스를 출력
-f : 풀 포맷으로 보여줌, 유닉스 스타일로 출력해주는 옵셔느올 UID, PID, PPID등이 함께 표시됨
-l(sys V), l(BSD 계열) : 긴 포맷으로 보여줌
-o 값 : 출력 포맷을 지정하는 옵션, 값으로는 pid, tty,time, cmd등을 지정할 수 있음
-M : 64bit 프로세스들을 보여줌
-p : 특정 PID를 지정할 때 사용
-r : 현재 실행 중인 프로세서를 보여줌
u (BSD 계열) : 특정 사용자의 프로세스 정보를 확인할 때 사용, 사용자 지정하지 않으면 현재 사용자를 기준으로 정보 출력
x (BSD 계열) : 데몬 프로세스처럼 터미널에 종속되지 않는 프로세스를 출력, 보통 a옵션과 결합하여 모든 프로세스를 출력할 때 사용
-x : 로그인 상태에 있는 동안 아직 완료되지 않은 프로세서들을 보여줌. 유닉스 시스템은 사용자가 로그아웃 한 후에도 임의ㅡ이 프로세서가 계속 동작하게 할 수 있음. 그러면 그 프로세서는 자신을 실행시킨 셸 없이도 계쏙 자신의 일을 수행하는데 이러한 프로세스는 일반적은 ps명령으로 확인X, 이 때 -x옵션 사용시 자신의 터미널이 없는 프로세서들을 확인O
System V 계열
$ps -ef | grep '프로세스명'
BSD 계열
$ps aux | grep '프로세스명'

UID : 사용자 ID
PID : 프로세스 ID
PPID : 부모 프로세스 ID
STIME : 프로세스 시작 시간
TTY : 해당 프로세스의 입출력 담당 터미널
TIME : CPU 점유 시간
STAT : 프로세스 상태

kill
해당 프로세스 강제 종료

kill [options or signal(number or name)][PID]
ex)$kill -9 1234
   $kill -SIGKILL 1234
1(HUP) : 프로세스 다시 로드
9(KILL) : 프로세스 제거
15(TERM) : 프로세스 정상적으로 중지
$kill -l 
사용가능한 모든 신호 목록

<신호 지정 방법>
1. 숫자를 사용 EX) -1 또는 -s 1
2. "SIG"접두사 사용 EX) -SIGUP 또는 -s SIGUP
3. "SIG"접두사가 없다 EX) -HUP 또는 -s HUP
-> 다음 명령어는 서로 동일
kill -1 PID_NUMBER
kill -SIGHUP PID_NUMBER
kill -HUP PID_NUMBER

man (Manual pager utils)
리눅스에서는 man 명령어를 사용하여 각종 명령어, 프로그램의 사용법을 확인

man 라이브러리[함수명]

adduser,deluser
사용자 계정 생성, 삭제

$ sudo adduser[계정이름]
명령어 실행시 기본 계정정보를 같이 생성 :: 홈 디렉토리 생성
++ UID, GID 강제 지정
 $SUDO ADDUSER --uid <UID> [--ingroup <GROUP> | --gid    <GID>] <USER ID>
 --uid <UID>: 사용자 UID를 강제로 지정한다.
 --ingroup <GROUP>: 새로운 유저를 추가하며, 유저는 동일한 이름의 그룹에 포함된다. 하지만 이 옵션을 사용하면 <GROUP>그룹에 강제 포함된다. 
   아래 --gid 옵션과는 mutually exclusive option
 --gid <GID>: 강제로 GID에 포함 시킨다. 위 --ingroup 옵션과는 mutually exclusive option
$ sudo useradd[계정이름]
계정만 생성하며 기타 다른 정보를 수동으로 생성 및 설정
:: 홈 디렉토리 생성X
$sudo deluser[계정이름] [--remove-home] [--remove-all-files]
계정명으로 삭제
$sudo userdel [제거할 UID]
해당 유저 삭제

exit
로그아웃 후 재접속 권한을 부여 받는 명령어

halt
시스템을 종료하는 명령어

reboot
시스템을 재부팅하는 명령어

shutdown
시스템을 재부팅하는 명령어

<option>
  -h now : 시스템 바로 종료
  -h 10 : 10분 후 바로 종료
  -h 15:30 : 15시30분 시스템 종료
  -r : 즉시 시스템을 재부팅
  -r 15 : 15분 후 시스템 재부팅
  -r 15:30 : 15시30분 시스템 재부팅
  -c : 예약된 shutdown 명령을 취소

uname
시스템 정보 출력
주로 시스템과 리눅스 커널에 관련된 정보를 확인할 수 있음

$uname

<option>
-a, –all:
모든 시스템 정보를 출력합니다. 단, -p나 -i 정보가 없는 경우 생략합니다.
-s, –kernel-name:
s 옵션은 커널 이름을 출력합니다
-n, –nodename:
네트워크 호스트네임을 출력합니다.
-r, –kernel-release
r 옵션은 커널의 릴리스 버전을 출력합니다.
-v, –kernel-version
커널 버전을 출력합니다.
-m, –machine
m 옵션은 시스템의 하드웨어 아키텍처를 출력합니다.
-p, –processor
프로세서 타입을 출력합니다. 확인할 수 없는 경우 “unknown”을 출력합니다.
-i, –hardware-platform
하드웨어 플랫폼 정보를 출력합니다. 확인할 수 없는 경우 “unknown”을 출력합니다.
-o, –operating-system
o 옵션은 운영체제 이름을 출력합니다.
–help
도움말을 출력하고 종료합니다.
–version
버전 정보를 출력하고 종료합니다.

vi 편집기 명령어
vi 편집기는 명령모드, 입력모드, 마지막 행 모드로 총 3가지 모드로 구성됨

<명령모드 : command mode>
처음 vi 명령어로 vi를 시작하게 되면 들어가게 됨
방향키를 이용하여 커서 이동
엔터를 치지 않아도 명령이 들어감
--
i : 현재 커서 위치에 삽입(입력모드로 넘어감)
a : 현재 커서 바로 다음 위치에 삽입 (입력모드로 넘어감)
o : 현재 줄 다음 위치에 삽입 (입력모드로 넘어감)
x : 커서가 위치한 곳의 글자 1개 삭제 -> 5x : 문자 5개 삭제
dw : 커서가 위치한 곳에서 부터 단어 삭제 (커서가 위치한 곳 ~ 띄어쓰기) -> 3dw : 3단어 삭제
dd : 커서가 위치한 곳의 한 줄 삭제(p로 복구 가능) -> 5dd : 5줄 삭제
u : 방금 한 명령 취소
yy : 현재 줄을 버퍼로 복사(한 줄 ctrl C) -> 5yy : 5줄 복사
p : 현재 커서가 있는 줄 바로 아래에 버퍼 내용 붙이기 / x,dw,dd로 삭제한 것 붙여넣기
k : 위로 한 줄
j : 아래로 한 줄
l : 오른쪽
h : 왼쪽
0 : 커서가 있는 줄의 맨 앞 (home키라고 생각하면 됨)
$ : 커서가 있는 줄의 맨 뒤 (end키라고 생각하면 됨)
( : 현재 문장의 처음
) : 현재 문장의 끝
{ : 현재 문단의 처음
} : 현재 문단의 끝
숫자- : 숫자 만큼 윗 줄로 이동
숫자+ : 숫자 만큼 아래 줄로 이동
G : 파일의 끝으로 이동
r : 한 문자 변경
cc : 커서가 있는 그 줄의 내용 변경
<마지막  모드 : last line mode>
esc누르고, :을 누르면 나오는 상태
--
w : 현재 파일명으로 파일 저장 (저장 -> 꺼지지 X)
w [파일명] : 입력한 파일명으로 파일 저장 (저장 -> 꺼지지 X)
q : vi 종료 (저장X)
q! : vi 강제 종료 (! -> 강제 수행)
wq : 저장 후 종료
wq! : 강제 저장 후 종료
f [파일명] : 파일 이름을 [파일명]으로 변경
숫자 : 해당 라인으로 커서 이동
$ : 파일의 맨 끝 줄로 이동
e! : 마지막 저장 이후 모든 편집 취소
/문자열 : 현재 커서 위치에서부터 파일 앞 쪽으로 문자열 탐색
?문자열 : 현재 커서 위치에서부터 파일 뒤 쪽으로 문자열 탐색
set nu : vi 라인 번호 출력
set nonu : vi 라인 번호 출력 취소

https://wikidocs.net/33075

0개의 댓글