본문으로 바로가기

🍕 on/off 명령과 런타임


서버 종료
(같은 동작을 하는 명령어가 많다)
shutdon -P now

init 0
halt -p
poweroff

재시작
reboot
init6
shutdown -r now

유저 로그아웃(서버 종료가 아니다!)
logout
exit

 

위에서 init 0, init 6와 같이 init 뒤에 붙는 숫자를 '런레벨'이라고 부른다.

 

0 Poweroff

1 Rescue (시스템 복구 모드)

2 Multi-User

3 Multi-User (텍스트 모드의 다중 사용자 모드. Ubuntu Server의 기본값)

4 Multi-User

5 Graphical (그래픽 모드의 다중 사용자 모드. Ubuntu Desktop의 기본값)

6 Reboot

 

기본 런 레벨 모드를 확인하려면 /lib/systemd/system 디렉터리의 default.target 파일을 확인하면 된다.

graphical.target이므로 5번에 해당한다. 5번이기 때문에 가상 머신을 실행하면 그래픽 모드로 접근하는 것이다.

 

시험 삼아 접속할 시 Ubuntu Server를 설치한 것처럼 텍스트 모드로 처음 접근하도록 ln -sf 명령으로 default.target을 multi-user.target으로 변경했습니다. 이제 리부트하면 적용됩니다. 

 

 

🍔 가상 콘솔

VSCode에서 편의를 위해 터미널 여러개 키는 것과 똑같다. 

 

ctrl + alt + f1~f7 7개의 가상 콘솔.

f1~f6 까지는 터미널, f7(기본값)은 desktop Ubuntu의 경우 X 윈도가 나온다.

 

 

당연히 하나의 서버안에 존재하는 여러 콘솔이기 때문에 하나의 명령어를 입력하면 다른 콘솔에도 영향을 미친다. 

 

 

🛵 경로와 이동 및 생성 (ls, pwd, cd, mkdir, touch)

 

ls

현재 디렉토리의 파일 목록을 출력하는 명령어.

 

▫ ls -l

  권한, 생성일자, 용량 등을 list로 표시해준다. - 뒤에 오는 것을 '파라미터', '옵션'이라고 부른다.

 

 ls -al

  a는 숨김 폴더까지 보여준다. 따라서 ls -al은 숨김 폴더 까지 포함한 디렉토리 내의 모든 것을 list로 보여달라는 의미이다.

 

▫ ls -[폴더 명]

  ls -al Users와 같은 방식으로 굳이 경로를 이동하지 않고 폴더 명을 입력해서 내부를 볼 수도 있다. 

 

▫ ls -d [폴더 명]

  list가 너무 길어서 특정 폴더의 정보를 보고 싶음에도 찾기 힘들 때 사용한다. 파일의 내부가 아니라 파일 자체의 정보를 본다는 것에 주의하자!

 

 

cf) ls -l로 출력되는 결과물 중 앞의 문자에 대해서 유심히 봐두자. 나중에 파일시스템과 연계해서 공부할 것이다.

 

일반 파일 -
디렉토리 d
캐릭터 장치 파일 c
블록 장치 파일 b
소켓 s
파이프 p
심볼릭 링크 l

또, 파일 중 앞에 .이 붙으면 자동으로 숨김 파일이 된다.

 

 

 

pwd, 절대 경로와 상대 경로

현재 위치하고 있는 디렉토리를 알려주는 명령어

참고로 ~(틸드 tilde) 는 현재 사용자의 홈 디렉토리를 말한다. 현재 사용자가 이용하고 있는 홈 디렉토리를 ~로 표시됨. 대개 /Users/[사용자 이름]이 기본 경로임.

💻 /Users/martin 에서 맨 앞에 존재하는 /은 최상위 디렉토리(root)를 말한다.

💻 절대 경로와 상대 경로
- 절대 경로 : 루트 디렉토리를 기준으로 어떤 파일이나 디렉토리가 가지고 있는 고유한 경로 /Users/martin/Pictures

- 상대 경로 : 현재 위치를 기준으로 나타낸 경로
현재 위치가 /Users/martin이라면 ./Pictures와 같이 표시함.

상대 경로가 편한 것도 있지만 프로그램의 호환성을 위해서도 상대 경로가 유리하다. 특히, 프로그램의
소스 코드 내에서 경로를 표시할 때는 상대 경로로 써주는 게 좋다. 그래야 그 프로그램이 완성되고 나서 다른 환경으로 옮겨졌을 때에도 아무런 문제 없이 실행될 수 있기 때문이다.

 

mkdir(폴더 생성), touch(파일 생성)

 

mkdir [새로 생성할 디렉토리명]

mkdir [기존에 있는 디렉토리명]/[새로 생성할 디렉토리명] : 해당 디렉토리로 이동하지 않고 내부에 디렉토리 생성 가능

mkdir -p baseballteam/kbo : 디렉토리 안에 또 디렉토리를 만들고 싶은 경우 (p는 parents의 약자)

touch [새로 생성할 파일명]

 

cd (change directory)

cd [이동할 디렉토리의 경로명]

 - 문자를 다 입력하기 힘드므로 몇 개만 입력한 후 Tab을 누르면 자동 완성이 된다.

 - cd ~ (유저 디렉토리로 이동)

 - cd / (루트 경로로 이동)

 - cd - (이동 전에 있던 경로로 이동)

 

 

🚍 복사(cp), 이동(mv), 삭제(rm), 읽기(cat, less, head, tail)

 

cp

 

말 그대로 copy

cp (-i) (-r) [복사하고 싶은 파일, 폴더의 경로] [복사본의 이름]

 

 ▫ cp first second : 현재 경로에 있는 first를 second라는 이름으로 복사합니다. (동일 경로에 복사됨)

 ▫ cp /mnt/c/test third : /mnt/c 경로에 있는 test 파일은 현재 경로에 third라는 이름으로 복사합니다.

 ▫ cp -i /mnt/c/test third : /mnt/c 경로에 있는 test 파일은 현재 경로에 third라는 이름으로 복사하되 이미 같은 이름의 파일, 폴더가 존재한다면 덮어 쓰기 여부를 물어봅니다.

 ▫ cp -r kid baby : recursive(폴더내의 파일도 대상). 현재 경로에 있는 kid 폴더는 baby 폴더로 복사합니다.

 

복사할 때 주의할 점은 복사본의 이름이 이미 존재할 경우 기 존재하는 파일, 폴더를 확인도 없이 덮어쓸 것이라는 것입니다. 이를 방지하기 위해서 i (interactive) 옵션을 사용합니다. 또, 디렉토리를 복사할 때는 내부의 파일, 폴더도 복사해야 하므로 재귀적으로 r(recursive) 옵션을 사용해야 합니다.

 

 

mv

 

이동하기 (이름 바꾸기로 활용되기도)

 

mv [옮기고 싶은 파일, 폴더 이름] [이동할 디렉토리 경로] or [바꿀 이름]

 

my child /home/martin : child 파일을 /home/martin 경로로 이동합니다.

my child kids : child파일의 이름을 kids로 바꿉니다. (단, 바꿀 이름과 같은 경로가 있으면 해당 경로로 이동합니다)

 

 

rm 

 

remove 즉, 삭제입니다.

rm (-i) (-r) [삭제할 파일, 폴더 명]

 

cp와 마찬가지로 디렉토리를 대상으로 하는 명령어는 r (재귀) 옵션을 주어야 합니다.

 

또, 부주의하게 삭제하는 것을 입력하는 것을 방지하기 위해 i 옵션을 줄 수도 있다. i 옵션을 주게 되면 삭제해야 하는 파일, 폴더는 모두 삭제할 것이냐며 묻는다.

 

 

cat, less

 

cat [읽고자 하는 파일의 이름]

cat > [생성하고자 하는 파일의 이름] : 조금 독특하게 cat > 을 통해 텍스트 파일을 생성할 수 있다.

cat first second : first, second 파일을 연달아 읽습니다.

 

less [읽고자 하는 파일의 이름] * more도 있는데 less가 더 편리하고 유용하다고 하다. 

less는 g를 눌러 가장 첫 화면으로 이동할 수 있고, G(shift + g)를 눌러 마지막 화면으로 이동할 수도 있습니다.

 

less first : 파일을 좀 더 읽기 쉬운 인터페이스에서 first 파일을 읽습니다.

less first second : ':n'을 입력하면 다음 파일을 읽을 수 있고,  ':p'를 입력하면 전 파일을 읽을 수 있습니다.

 

less에서 나가기 위해서는 q를 입력해주면 됩니다.

 

head, tail

파일의 일부를 보고 싶을 때. 앞쪽, 뒷쪽만 보여주는 명령어

 

head -n [몇 줄 출력?] [읽을 파일]

tail -n [몇 줄 출력?] [읽을 파일]

 

head frist : first 파일의 앞 10줄을 읽습니다. (n 옵션을 주지 않으면 기본 10줄을 출력합니다)

head -n 3 first : first 파일의 앞 3줄을 읽습니다.

tail -n 3 first : first 파일의 뒤 3줄을 읽습니다.

 

cat /etc/psswd | head -n 5 // 위에서 5줄을 출력
cat /etc/psswd | head -n -5 // 밑에서 5줄을 제외한 전체 출력

cat /etc/psswd | tail -n 5 // 끝에서부터 5줄을 출력
cat /etc/psswd | tail -n +5 // 위에서 5번째 줄부터(5째 줄 포함) 끝까지를 출력함
cat /etc/psswd | tail -f // 추가되는 내용 append하여 출력 (뒤에 추가되는 것을 기다림)
cat /etc/psswd | tail -F // 파일이 truncate 되는 경우 re-open하여 follow함(logrotate 되는 파일에 유용)

 

 

🥨 도움말과 재입력(help, man, history, ↑/↓)

 

--help

명령어 뒤에 --help를 붙이면 명령의 사용설명서가 출력됩니다. 

 

  • ls --help
  • rm --help
  • mkdir --help
  • pwd --help

man

 

명령어 앞에 man을 붙이면 명령의 사용설명서가 출력됩니다. (manual의 약자)

  • man rm
  • man mkdir

help와 차이점은 전용 페이지로 이동해서 help보다 상세하게 볼 수 있다는 점이 다르다.

무언가 검색하고 싶으면

/검색할 내용

한 다음 "n"키를 눌러 검색 결과를 이동할 수 있다.

 

↑/↓

 

전에 입력한 명령어를 재입력할 수 있습니다.

 

history

 

지금까지 입력한 명령어들의 목록이 순서대로 출력됩니다.

![번호] 입력을 통해 해당 명령어를 재입력할 수 있습니다.

 

 

그 외 꿀팁

 

ctrl + a : 커서가 맨 앞으로 이동

ctrl + e : 커서가 맨 뒤로 이동

 

 

🍠 마운트

aws EBS 뿐만 아니라 CD, USB도 마운트 과정을 거쳐야 우분투 운영 체제와 연결할 수 있습니다.

마운트/언마운트 관련 명령어와 마운트 과정은 아래에 정리했습니다.

 

 

Ubuntu DVD/USB 마운트 (AWS EBS 마운트와 동일)

AWS에서 EBS를 마운트하는 과정도 이와 같은 과정을 거쳐서 마운트합니다. 잘 알아둬야겠죠, EBS로 돈도 나가는데 ㅎ df 시스템에 마운트된 하드디스크의 남은 용량을 확인할 때 사용하는 명령어��

darrengwon.tistory.com

 

 

🍗 유저, 날짜

 

su, su -

su와 su - 는 유저를 바꾼다는 차이가 있지만 환경변수를 유지하느냐(su), 마느냐(su -) 의 차이가 존재함.

sudo su (root로 예정 바꿔!)
su - (유저명을 쓰지 않으면 root)
su - ec2-user

 

passwd

비밀번호를 변경합니다. sudo passwd [유저 이름]

sudo passwd root
sudo passwd ec2-user

 

그룹, 사용자 관련 명령어

 

사용자(/etc/passwd) 및 그룹(/etc/group) 관리

사용자, 그룹 확인 /etc/passwd 에는 정의된 유저를 확인할 수 있다. 사용자 이름 : 암호 :사용자 ID : 사용자가 소속된 그룹 ID : 추가정보 : 홈 디렉토리 : 기본쉘 모든 유저는 적어도 하나의 그룹에 ��

darrengwon.tistory.com

 

 

chkconfig

데몬 시작

chkconfig on

 

date, cal

date는 날짜를 출력하고 cal은 달력을 출력합니다. 쓸데 없지만 그냥...

cal 2030 : 2030년 달력 전부 출력
cal 3 2030 : 2030년 3월 달력 출력

 

 

🚀 텍스트 에디터

 

nano

 

사실 nano 말고도 다른 텍스트 편집기가 있다. vi 라든지. 솔직히 말해 이제는 vi가 더 편리하다.

 

nano

ctrl + O로 파일명을 지정하고 ctrl + X로 저장 후 나갈 수 있다. cut, uncut, where is(찾기 기능)도 자주 쓰는 기능이니 이것저것 이용해볼 것. ctrl + 6(숫자키)를 누르면 Mark Set이 된다.

 

나가면 nano를 실행한 경로에 저장된다. 이후 수정하고 싶다면 (확장자까지 쳐야함을 잊지 말자)

nano 파일명

 

gedit

 

우분투 데스크탑에서 사용하는 메모장 같은 겁니다. 기본 운영체제를 Ubuntu Desktop으로 사용하시는 분들은 사용하시는 것 같은데 저는 잘 안 씁니다. ㅎ

 

gedit [생성할 파일 이름]

vi

 

다른 게시물에 정리해두었다.

 

Vim 훑어보기

vi에 여러 기능을 추가한 개선판이 vim이다.

darrengwon.tistory.com

 

 

🍙 폴더, 파일 용량 확인 : ds

 

du는 disk usage의 약자이다.

물론 ls 명령어로 추력하면 파일을 권한을 비롯해 용량까지 정보를 확인할 수 있기는 하지만 단위가 바이트라 불편하다.

 

 

선택한 디렉토리만의 용량을 알고 싶으면 -s 옵션,

용량이 읽기 편한 단위로 나오게 하려면 -h 옵션을 붙이면 된다.

대개 프로세스 관리시 -aux, -ef 에 관용어처럼 사용되듯 -sh 도 보통 붙어 다닌다.

 

특정 폴더 전체의 크기 확인시

du -sh /home/next-cineps

특정 폴더 내의 모든 파일 확인시

du -sh /home/next-cineps/front/*

 

어쨌거나 확인해보면, 단위까지 잘 붙어서 확인하기 쉽게 나온다.

 

검색하기 : locate, find, whereis

 

locate

locate *.log

확장자가 log인 모든 파일의 위치를 출력합니다.

그런데 파일을 찾을 때는 디렉토리를 참고하는 것이 아니라 mlocate라고 하는 DB에서 찾습니다.

man locate 명령을 통해 좀 더 자세하게 살필 수 있습니다.

 

find

find는 locate보다 상세한 옵션을 통해 파일을 찾습니다.

옵션이 상당히 많은 편이라서 자주 사용하면서 익히자.

find [탐색 경로] [옵션] [표현식]
* 탐색 경로를 생략하면 현재 디렉토리부터 ㅓㅁ색함

// 루트 디렉토리부터 검색하기 시작합니다. 해당 리눅스 내 전체를 검색하기 때문에 오랜 시간이 소모됨.
find / -name *.log 
-perm : 파일 권한
-type : 파일 종류
-size : 파일 크기
-links : 링크 수
-user : 사용자 ID
-atime : 특정 기간 동안 접근하지 않은 파일
-mtime : 특정 기간 동안 수정되지 않은 파일

 

whereis 

whereis 또한 파일을 찾을 때 사용한다.

whereis rm

rm이라는 명령어가 어디에 있는지 출력한다

 

grep

텍스트 내용을 검색하는 명령입니다.

grep [옵션] [표현식] [파일명]

// test 파일에서 app 문자열을 포함한 행을 보여줍니다.
grep app test 

// -c 옵션은 문자열이 포함된 행의 갯수를 출력합니다.
grep -c app test 

// -n 옵션은 문자열이 포함된 행의 개수와 행을 보여줍니다.
grep -n app test 

// 대소문자 구분없이 (insensitive) 하게 찾습니다.
grep -i app test 

 

일반적으로는 파이프를 통해 같이 사용되는 경우가 많습니다.

아래는 ls -l의 결과 중에서 t라는 문자가 포함된 행을 출력하도록 만듭니다.

 

 

 

 

 

기타 Linux 관련 tips

 

blog.naver.com/PostView.nhn?blogId=n_cloudplatform&logNo=221684328224&parentCategoryNo=&categoryNo=11&viewDate=&isShowPopularPosts=false&from=postList

 

[네이버클라우드 기술&경험] 리눅스 환경에서 꼭 알아두면 좋을 4가지 꿀팁

​안녕하세요, 네이버 클라우드 플랫폼입니다.​오늘은 리눅스 환경에서 꼭 알아두면 좋을 네 가지 꿀팁을 ...

blog.naver.com

 

// 80 포트에 뭐 있나
sudo lsof -i tcp:80

darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체