가장 기본적인 것들 - 내일부터는 리눅스 프로세스 부터 보면 됨
기본적인 명령어
디렉터리 관리 명령어 | ||||
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 "^표현식" : 정확히 그 단어만 찾아낸다