본문 바로가기
Development(Web, Server, Cloud)/Cloud : 정리

CloudETC - 리눅스 기본적인 명령어들 pwd, cd, mkdir, rmdir, touch, mv, rm, ls, chown, chmod, cp, cat, more, less, head, tail, file, find, grep, locate, sed, vi, alias, poweroff, shutdown, halt, init, sudo

by tonyhan18 2022. 1. 3.
728x90

가장 기본적인 것들 - 내일부터는 리눅스 프로세스 부터 보면 됨

 

기본적인 명령어

 

디렉터리 관리 명령어
1 pwd 현재 작업 중인 디렉토리의 위치 pwd  
2 cd 디렉토리 이동 cd [상대|절대] [설정경로] cd - : 직전의 디렉토리 이동
cd / : root
cd ~ : home(Default)
3 mkdir 디렉토리 생성 mkdir [옵][이름] mkdir -p 디/렉/토/리 : 자식 디렉토리 만들기
4 rmdir 디렉토리 삭제 rmdir [이름]  
5 touch 크기 "0" 빈파일 생성. 파일의 내용 수정없이 파일 접근 시간 수정 touch [옵][이름] touch -t YYYYMMDDhhmm 파일명
6 mv 파일 이동, 이름 변경 mv [옵][원본][대상]  
7 rm 파일 또는 디렉토리 삭제 rm [옵][파일명|디렉토리명] rm -rf 파일명 : ㅈㄴ 주의
파일 관련 명령어
8 ls 파일 목록 ls [옵] [경로명] ls 이름* : 앞이 이름이고 뒤는 아무거나
ls -al
ls -tal
9 chown 파일의 소유권 변경(change the owner of a file) chown [옵][계정/그룹][파일] chown 계정:그룹 파일 : 계정과 그룹을 변경
chown -R 계정:그룹 디렉토리 : 디렉토리 하위 전체 계정과 그룹으로 바꿈
10 chmod 파일의 접근 권한 변경 chmod [ugo+rwx][파일/폴더]  
11 cp 파일 또는 디렉토리 복사 cp [옵] 원본 대상 cp -r 디렉터리 : 디렉터리 옮기기
파일 내용 확인하기
12 cat 파일 내용 확인 cat [파일명] cat > 파일명 <<EOF
cat << EOF > 파일명
13 more 한 화면씩 출력 more [파일명] space bar : 한페이지씩 이동
q : 빠져나옴
b : 한 페이지 뒤로
14 less 한 화면씩 출력 lsee [파일명] 얘를 더 많이 씀
Enter : 한줄씩 이동
space bar : 한페이지
page UP, DOWN
b : 한 페이지 뒤로
q : 빠져나옴
+숫자 : 시작위치 설정
15 head 처음부터 10번째 줄까지 출력 head [옵][파일명] head -n 5 파일명
16 tail 아래부터 10번째 줄까지 출력 tail [옵][파일명] tail -f /var/log/syslog : 실시간으로 로그를 모니터링. 내용이 바뀔때마다 계속 추가해줌
tail -f /var/log/httpd/access_log : 실시간 접속 로그 모니터링
17 file 파일의 종류 및 파일 속성값 나타냄 file [옵] 파일명  
검색하기
18 find 주어진 조건의 파일을 찾음 find [경로] [옵] [정규표현식] [파일명] find -name 파일명 : 현재디렉토리에서부터 검색
find / -name 파일명 : 루트에서부터 검색
19 grep 파일 내용을 검색 grep [옵션][표현식][파일명] grep -c 표현식 파일 : 포함된 행의 수 출력
grep -n 표현식 파일 : 해당 문자열이 포함된 행과 내용 함께 출력
grep -i 표현식 파일
grep -woe "^표현식" : 정확히 그 단어만 찾아낸다
20 locate 파일의 위치를 찾음 locate [파일명]  
텍스트 파일 관련 명령어
21 hostnamectl 데몬 없이 호스트명 변경 명령어 hostnamectl set-hostname [호스트명] hostnamectl set-hostname test1.test.com
22 sed 행단위 편집기 : 파일의 내용을 열지 않고 밖에서 한줄을 이용하여 편집하는 방법    
23 vi(m) 화면단위 편집기    
24 emacs      
25 alias 자주 사용하는 명령어를 축약하여 다른 명령어로 이용 재부팅 이후에 설정 유지 안됨. 유지하려면 root로 로그인할 때 자동으로 등록되도록 해야함
각자의 .bashrc라는 파일의 구성값에 alias를 추가하기
alias syst='systemctl'
26 poweroff      
27 shutdown     shutdown -P + 10 : 10분 후 종료
shutdown -r 22:00 10시에 재부팅
shutdown -c : 예약된 종료, 재부팅을 취소
shutdown -P now
28 halt -p      
29 init 0 run level    
30 nslookup 도메인 이름과 IP 주소 확인 nslookup 주소  
사용자 관리하기
31 shutdown 시스템 종료 shutdown [옵][시간] shutdown -h now : 전원 종료
shutdown -r now : 재시작
32 useradd 새로운 사용자 추가 sudo [옵][계정] useradd -m 계정
useradd -m -s /bin/bash : 홈디렉토리 생성 + shell 설정
useradd -m user1 && echo 'user1:user1' | chpasswd : 간단한 암호화
useradd -p $(openssl passwd user1) user1 : 간단한 암호화
useradd -D : 계정 초기설정
33 passwd 사용자 패스워드  설정 passwd [계정]  
34 userdel 사용자 삭제 userdel [계정] userdel -r 계정 : home에 있는 디렉토리도 함께 지우기
35 adduser useradd + passwd adduser [계정]  
36 sudo sudo(substitute user do) 타 사용자 권한 빌려오기 sudo [계정][명령] sudo -u 계정명 : 계정 사용하기
37 su switch user su [옵][계정] su : 그냥 루트로 전환됨
su - 계정 : 사용자 계정의 환경을 그대로 유지함
38 groups 사용자가 속해 있는 그룹 확인 groups  
  groupadd 그룹추가 groupadd [그룹명]  
39 exit 로그 아웃하기    
40 usermod 사용자 계정 정보 변경 usermode [옵][계정] usermode -a(정보추가) -G(그룹) 그룹 계정
usermode  -g(그룹) 그룹 계정 : primary group변경
  chage 계정 패스워드 설정 자세한건 아래에  
Others
  echo 출력
얘로 생성한 파일은 무조건 1부터의 크기를 가진다.
echo [내용] echo 내용 > 파일
echo > 파일 << EOF
  gedit 파일 수정 gedit [파일]  
  exec 쉘실행    
  crontab 특정 시간대에 동작 crontab  
패키지관련
  yum 의존성 고려 설치 yum [옵션][명령][패키지] yum -y install
  tar 압축 tar [옵][파일] tar -cvzf 파일
tar -xvzf 파일

 

파일권한

 

 

리눅스 디렉토리 구조

/ 최상위 디렉터리
/dev 주변 장치들
/etc 시스템 설정 파일들
/bin 가장 기본적인 명령어
/lib 공유 라이브러리. 시스템의 부팅과 응용 프로그램의 실행에 필요한 코드들
/home 사용자 계정의 home 디렉토리
/root 루트 계정 홈디렉토리
/proc 가상 파일 시스템 디렉터리. 시스템 상태 모니터링
/sbin 시스템 관리 명령
/tmp 임시 파일. 주로 입출력 파일
/var 시스템 운영시 생기는 임시 파일(시스템 로그, 스풀, 전자메일)
/usr 시스템, 응용 프로그램에서 필요한 파일

 

자주 사용하는 폴더, 파일

/etc/hosts : DNS놀이하는 폴더

/etc/hostname 확인가능

/etc/inittab : runlevel 기본값 변경

/etc/sysconfig/network-scripts/ifcfg-ens32 : 내 네트워크 정보 전체확인가능, 변경도 가능

/etc/sudoers : sudo 권한 수정, 확인

/etc/httpd/conf/httpd.conf : httpd 설정 파일

/etc/passwd : 사용자들 확인가능

/etc/shadow : 사용자들의 PW 확인가능

/etc/default/useradd : 사용자 생성 초기설정들 확인 가능

/etc/login.defs : useradd가 새로운 계정을 생성할때 참조하는 파일

/etc/yum.repos.d : yum에 등록된 저장소들

/var/log/syslog : 시스템 로그 확인

/var/www/html : httpd 파일들

 

쉘에서 여러 명령을 실행하는 방법

1. ; -> 앞의 명령어 실행 결과가 뒤 명령에 영향을 미치지 않는다.

2. && -> 앞 명령 실행 결과가 뒤 명령에 영향을 미친다.

계정 정보보기

"root" : 계정명

x : 패스워드 - root 꺼는 /etc/shadow에 암호화되어 있음

0 : 계정 uid, 루트는 보통 0

0 : 계정 gid

root  : 계정 이름

/root : 홈 디렉토리

/bin/zsh : 계정 기본 쉘

 

redirection

> : 덮어쓰기

>> : 덧쓰우기

응용

cat > 파일명 << EOF

끝낼때는 EOF 엔터

 

sudo 권한 부여하기

/etc/sudoers를 수정하면 됨

사용자 관리하기

```

groups : 내가 속한 그룹이 나옴

# 일반적인 사용자 생성

useradd user1

passwd user1

# 보이는 패스워드 설정 + 사용자 생성

useradd user1 -p user1

# 암호화된 패스워드 설정 + 사용자 생성

useradd -m user1 && echo 'user1:user1' | chpasswd

useradd -p $(openssl passwd user1) user1

# 사용자 삭제시

userdel -r user1

```

계정 초기설정

useradd -D : 모든 초기설정을 볼 수 있다.

useradd -D -b 폴더 : 사용자 홈DIR을 바꿀 수 있다.

 

GROUP은 기본 소속 그룹이다. -> -g로 기본 그룹을 바꿀 수 있다.

HOME은 홈디렉토리가 생기는 위치 -> -d로 초기 디렉토리를 바꿀 수 있다.

INACTIVE는 -1이니 사용하겠다는 의미

EXPIRE은 만료기간으로 만약 만료 기간이 없으면 계속 사용한다는 의미이다.

SHELL은 초기 사용할 쉘 종류 -> -s로 쉘을 바꿀 수 있다.

SKEL은 디렉토리이다. 이 디렉토리에 있던것들이 /home 밑에 들어간다.

 

계정 세부설정

vi /etc/login.defs : 사용자 세부설정 확인가능

 

계정 패스워드 설정

사용자의 패스워드를 주기적으로 변경하기 위한 설정

```

chage -m 2 user2 (최소 사용일)

chage -l user2  #user2 사용자에 설정된 사항 확인

chage -m 2  #user2 최소 2일 동안은 기존 패스워드를 유지해야함

chage -M 30  #user2 패스워드 변경 후 최대 30일까지 사용가능

chage -E 2019/12/12  #user2 암호 사용 만료일자

chage -W 10 user2  #암호 만료전 경고 기간. 즉 만료 10일 전부터 경고 메시지 표기

```

 

계정 그룹 설정

usermod -g  [그룹] [사용자]  #Primary Group(기본 그룹 - 빠져나갈 수 없는)으로 지정하기

usermod -G  #추가적으로 소속될 그룹을 지정

usermod -a  #그룹 덧붙이기

 

```

groupadd devops1

groupadd shopgroup

usermod -g dev user11

usermod -g dev user12

usermod -G devops1 user11

usermod -G shopgroup user12

 

# 가장 많이 사용

usermod -aG [그룹] [사용]

```

 

파일 사용 권한 변경, 그룹 변경, 사용자 변경

파일 사용 권한 변경

```

chmod ugo+rwx 파일

chmod 777 파일

chmod 777 -R /test  # 하위 파일, 디렉토리까지 변경

```

 

그룹/사용자 변경

```

chown root.dev a.sh

```

 

RPM, YUM

```

rpm -qa  # RPM 설치 파일들 확인하기

rpm -e gedit  #패키지 파일 삭제

rpm -Uvh 파일명  #패키지 파일 설치

```

 

```

yum update -y  # 설치된 패키지와 저장소의 패키지 버전 비교 및 업데이트

yum -y install wget  # wget은 web에서 구해오겠다는 의미, 패키지 파일 삭제/설치하기

yum -y localinstall python--3.7-x86.rpm  # 파일을 구해왔다면 로컬 설치도 가능

yum remove 패키지이름

```

yum 저장소는 ls /etc/yum.repos.d

 

단, yum의 단점은 두개가 있는데

1. 문제가 되는 놈은 yum remove이다. 의존성에 묶인 놈들을 삭제가 안된다. 그래서 나온게 dnf이다.

2. 무조건 인터넷이 있어야만 설치할 수 있다.

 

 

YUM으로 페도라 설치하기

```

yum -y install epel-release  # fedora 프로젝트의 저장소 설치

yum -y install centos-release-openstack-rocky  #패키지 설치를 위한 저장소를 /etc/repos.d 아래에 설치한다.

yum -y install epel-release  #이제 설치된다.

```

 

cron : 특정 시간대에 동작, 업무

 

 

find 옵션들

alias 고정 = .bashrc 건들이기

vi ~/.bashrc

대충 위와같이 정의해주면 재부팅시 실행된다.

혹은 그냥 source ~/.bashrc 해주자

 

run level(중요)

run level 0 : 시스템 중지, poweroff

run level 1 : 단일 사용자 모드. 로그인 과정 없이 root 계정으로 로그온 -> 네트워크 서비스 제한. 시스템 점검/복구. 응급복구모드(CLI)

run level 2 : 네트워크 사용하지 않는 다중 사용자 모드(잘안씀)(CLI)

run level 3 : 네트워크 지원하는 다중 사용자 모드(CLI)

run level 4 : 안씀

run level 5 : 그래픽환경에서 리눅스 사용하기

run level 6 : 시스템 재기동

 

systemctl set-default multi-user.target   #CLI 다수 접근 가능

systemctl set-default graphical.target  #GUI 환경 실행
cat /etc/inittab

위쪽 문서에서 multi-user 부분 2줄이 중요하다. 짜피 3번 5번만 쓰는데

 

 

 

하고 재부팅해보자(reboot, init 6)

하니 위와같이 나온다. runlevel 3으로 동작중인 상태에서 "startx"를 입력하면 runlevel 5로 재기동한다.

 

ip 값 바꾸기

CentOS 7 네트워크 설정 및 ifconfig 사용방법 : 네이버 블로그 (naver.com)

 

CentOS 7 네트워크 설정 및 ifconfig 사용방법

안녕하세요. 오늘은 CentOS 7 에 대해서 기본적인 네트워크 설정부분을 다뤄보도록 하겠습니다. 기본적...

blog.naver.com

```

IPA = 1.1.1.1 #변수 생성됨

echo $IPA #변수 출력

sed -i "s/192.168.8.101/$IPA/g" /etc/sysconfig/network-scripts/ifcfg-ens32

systemctl restart httpd

systemctl restart network -> 이거 해야 바뀜

```

 

namespace, cgroup

resource를 사용자에게 부여

 

sed

우리가 sed를 배워야하는이유 : 모든 명령어의 태그를 모르기 때문

 

sed -i 's/root/TEST/g' anaconda-ks.cfg

-i : edit

s : src

g : global - 전체위치

 

파일의 root를 TEST로 모두 변경하라

g가 없으면 위에서부터 만나는 첫번째 root만 변경한다.

 

 

vi(m), vim

화면단위 편집기

참고로 vi랑 vim은 다르다.

 

암튼 필요한거 다 설치하자

yum -y install vim curl git wget

 

- CURL 이란? cURL = Client URL

클라이언트에서 커맨드 라인이나 소스코드로 손 쉽게 웹 브라우저 처럼 활동할 수 있도록 해주는 기술(커맨드라인 Tool 혹은 라이브러리)

 

- Wget이란?

GNU Wget은 HTTP 통신 또는 FTP 통신을 사용해 서버에서 파일 또는 콘텐츠를 다운로드할 때 사용하는 소프트웨어

 

vi랑 vim의 가장 큰 차이점중 하나는 vim은 auto color을 적용해준다는 점이다. 그래서 alias를 미리 등록해놓자.

vim ~/.bashrc

위와같이 vi를 vim으로 등록해놓자

 

대충 위와같이 명령모드에서 i, o를 입력해서 입력 모드로 들어가고 ESC로 나오고 :, /, ?로 마지막행 모드로 갈 수 있다.

 

명령 모드 커맨드

숫자 + dd (숫자)아랫줄 삭제 ? 위에서부터 검색 /
n/N
아래부터 검색
다음/이전
숫자 + yy (숫자)아랫줄 복사 p 복붙 u 이전으로 되돌리기
:숫자 라인으로 이동 gg/G
(숫자)+gg/G
첫줄/마지막줄로
숫자번째 줄로
ctrl+r undo 되돌리기
k
hl
j

좌우
o 다음 행 열어줌 ^/$ 행 처음/행 마지막으로 이동하기

 

 

 

vim 에디터 이쁘게 사용하기. .vimrc 편집을 통해 vim 에디터의 모습을 바꿔봅시다 | by 이선협 | Sunhyoup’s Story | Medium

 

vim ~/.vimrc 를 수정하자

자주쓰는 것만 정리해보자

set nu

 

nano

 

 

emacs

 

CURL

 

Wget

 

패키지 확인하기

rpm -qa | grep httpd

- 의미 : redhatPackageManager query all | grep httpd -> 내가 원하는 패키지 있는지 확인

 

tail 응용

tail -f /var/log/syslog : 실시간으로 로그를 모니터링. 내용이 바뀔때마다 계속 추가해줌
tail -f /var/log/httpd/access_log : 실시간 접속 로그 모니터링

 

firewalld

 

httpd

 

사용자확인

cat /etc/passwd

 

하면 마지막에 나오는 것들이다.

 

 

rc.local을 수정해 초기실행을 바꾸자

su pi -c startx를 /etc/rc.local에 입력해주자 -> 자동 GUI 실행

 

 

grep

grep -woe "^표현식" : 정확히 그 단어만 찾아낸다

gawk

728x90