CentOS 7 리눅스 명령어 정리

2014.09.27 07:34

gooddew 조회:4121

* CentOS 버전 확인 방법

# cat /etc/redhat-release 



* 디렉토리 리스트 출력

# ls

# ls /etc   // 특정 폴더 리스트 출력

# ls -a     // 숨김파일도 보임

# ls -al    // 숨김파일출력 자세한 정보 출력



* 디렉토리 리스트 출력

# ll



* 파일,폴더,시스템파일 정보확인

# stat file(또는 /folder)



* 파일 정보확인

# file 파일명




* 화면클리어

#clear




* 터미널에서 폰트 크게 보기

# setfont sun12x22




* 시스템 종료

# shutdown -h now    
 
# shutdown -h 0  
    
# poweroff     
      
# halt -p 
           
# telinit 0 


# shutdown -h 10   // 예약종료, 10분 후에 종료됨

# shutdown -r 10   // 예약재부팅, 10분 후에 재부팅됨

# shutdown -c      // 예약취소




* 재부팅

# reboot 



* 복사

# cp 파일명1 파일명2

# cp -rf 파일명1 파일명2  // 덮어쓰는것을 묻지않고 복사



* 삭제

# rm 파일(폴더)명

# rm -rf 파일(폴더)명     // 강제삭제




* 비어있는 폴더 삭제

# rmdir 폴더명




* 디렉토리 이동

# cd 폴더명  // 현재 위치 이동

# cd ..      // 상위

# cd .       // 현재폴더

# cd ~       // 자신의 홈 디렉토리로 이동

# cd          // 자신의 홈 디렉토리로 이동

# cd  ~test  // test 계정의 홈디렉토리로 이동

# cd /etc/sysconfig  // 절대 경로 이동

# cd ../../etc  // 현재 폴더 경로를 기준으로 상대 경로도 이동 가능




* 현재 경로 확인

# pwd



* 용량이 0 인 파일을 생성

# touch 파일명




* 파일(폴더) 이동 및 이름변경

mv test1 test2       // 이름변경

mv test1 /etc/test1  // 이동

mv test1 /etc/test2  // 이동후 이름변경

mv directory1 directory2 directoryn -t /path/of/Destination-Directory // -t 옵셥으로 여러개를 한곳으로 이동




* 디렉토리 생성

# mkdir test

# mkdir dir-name1 dir-name2 dir-name4 dir-name5     // 여러개 디렉토리 한꺼번에 생성

# mkdir -p test/test1/test2                         // -p 옵션, 디렉토리와 서브 폴더를 한꺼번에 생성하기

# mkdir -m 700 directory-name                       // -m 옵션과 권한을 주고 디렉토리를 생성하기




* 텍스트 파일 보기

# cat /etc/passwd

# cat -n file       // 줄번 번호 출력하기


파일의 처음 또는 마직막을 내용 일부분을 출력하기


# head /etc/ssh/sshd_config      // 문서 처음부터 10 행까지 출력

# head -5 /etc/ssh/sshd_config   // 문서 처음부터 5 행까지 출력

# tail /etc/ssh/sshd_config      // 문서 마지마출 기준으로 상단 10 행까지 출력

# tail -5 /etc/ssh/sshd_config   // 문서 마지마출 기준으로 상단 5 행까지 출력

# more 파일                      // 한페이지씩 출력, 스페이스바 다음페이지, b 누르면 전페이지, q 종료

# less 파일                      // 한페이지씩 출력, 스페이스바 다음페이지, b 누르면 전페이지, q 종료

# less -N file-name              // 줄번호를 포함해서 택스트 문서를 출력하기



* cat 명령어로 파일 제작

# cat > file.txt

123
234
345

Ctrl + z


# kill %1



*디스크 사용량 확인

# df



* 소유자 변경

# chown -R gooddew.gooddew /user/local/mysql



* 권한 변경

# chmod 755 /var/www/html   

3자리 숫자는 소유자(7),그릅(5),다른사람(5) 의 설정값

/var/www/html 폴더는 소유자는 읽고 쓰고 실행이 가능하며

그릅과 다은 계정은 읽기와 실행만 가능하다는 의미

 

r = 4, w =2, x = 1

권한은 : rwx의 숫자 합계


0     ---
1     --x
2     -w-
3     -wx
4     r--
5     r-x
6     rw-
7     rwx


옵션 u(사용자),g(그릅),o(다른사람) 으로 가능

# chmod u+w test  // test 파일은 소유자는 쓰기 가능설정

# chmod og+r test  // test 파일은 소유자,그릅은 읽기 가능설정

# chmod o-w test  // test 파일은 다른사용자는 소유자는 쓰기 제한됨

# chmod ogw-w test  // test 파일은 소유자,그릅,다른사람은 쓰기 제한함




* 날짜확인

# date

# cal




* 날짜 시간 변경하기

날짜 형식은 : 월일시분년도

# date 122510302016    // 12월 25일 10시 30분 2016년 단위로 작성


* 시스템의 CMOS 시간 확인

# clock -r


* 네트워크로 표준시간 시스템에 적용하기

# rdate -s time.bora.net   // rdate 가 설치가 안되있으면 # yum -y install rdate 설치하세요


* 현재 시간을 시스템의 CMOS 시간으로 쓰기

# clock -w
 



* 메모리 사용량 확인

# free (바이트 단위)

# free -k (킬로바이트 단위)

# free -m (메가바이트 단위)




* 계정 관련

# useradd gooddew               // gooddew 라는 계정 추가

# passwd gooddew                // gooddew 계정 비번 설정

# useradd -M gooddew            // 홈페이지 없이 계정 생성하기

# userdel -r gooddew            // 계정 삭제

# chage -l gooddew              // 계정 만료기간 확인

# chage -E 2014-12-31 gooddew   // 계정 만료일 변경

# chage -E '' gooddew           // 계정 만료일 무제한

# passwd -l gooddew             // 계정 로그인 막기

# usermod -L username           // 계정 로그인 막기

# passwd -u gooddew             // 계정 로그인 풀기

# usermod -U username           // 계정 로그인 풀기

# id gooddew                    // 간단 계정 정보보기

# passwd -d gooddew             // gooddew 계정 비번 제거. 비번 없이도 로그인 가능함


계정 생성시 기본적으로 홈디렉토리가 생성되는데

홈디렉토리가 생성 안되게 기본으로 바꿀수 있습니다.


/etc/login.defs 이 파일 안에서

CREATE_HOME  yes

CREATE_HOME  no 로 바꾸면 useradd 명령어로 계정 생성하면 홈디렉토리가 생성이 안됨

만약 위 설정 된 상태에서 홈디렉토리를 생성되게 한다면 useradd -m test 이렇게 -m 옵션 사용하면 생성됩니다.




* 비밀번호 관리 파일

# cat /etc/shadow  

출력시 패스위드 입력 부분에 아무것도 없으면 정상 계정 사용

제일 앞에 !! 두개가 있으면 락걸린것이고 ! 이 있으면 비번을 설정 안된상태에서 락이 걸린것입니다. 




* 파일 찾기

# find / -name mysql            //  최상위 / 폴더부터 그이하 서브폴더 까지 mysql 이름이 들어간 파일 찾기

# fine / -size +100 -size -200  // 용량 (kb)단위로 찾기 가능. 예시 용량이 100kb 보다 크고 200kb 보다 작은 파일 찾기

# which httpd                   // 실행파일 절대 경로 찾기

# which -a httpd                // -a 옵션은 실행파일의 모든 경로 찾기







* tar 묶기 및 압축 하기


tar로 압축할때 압축 파일명 뒤에 압축파일을 구분하는 .gz .bz2 .xz 는 반듯이 추가 해야 됩니다.

옵션에서 압축 옵션을 추가할 경우 z 는 gzip, j 는 bz2, J는 xz 로 압축을 하게 됩니다.



-cvf 옵션 확장명 tar 압축하지 않고 파일을 하나로 묶기

-cvfz 옵션 확장명 tar.gz로 압축, gzip 압축한것과 동일
 
-cvfj 옵션 확장명 tar.bz2로 압축, bzip2 압축한것과 동일

-cvfJ 옵션 확장명 tar.xz로 압축, xz 압축한것과 동일



압축하지 않고 tar 로 묶기

tar -cvf archive-file-name.tar /path/file


tar 이용해서 gzip 압축

tar -cvfz archive-file-name.tar.gz /path/file


tar 이용해서 bz2로 압축

tar -cvfj archive-file-name.tar.bzj2 /path/file


tar 이용해서 xz 로 압축

tar -cvfJ archive-file-name.tar.xz /path/file



tar 파일 풀기

tar -xvf archive-file-name.tar /path/of/fileORdir



gzip 풀기

tar -xvfz archive-file-name.tar.gz /path/of/fileORdir 



bz2 압축파일 풀기

tar -xvfj archive-file-name.tar.bz2 /path/of/fileORdir


xz 압축파일 풀기

tar -xvfJ archive-file-name.tar.xz /path/of/fileORdir


zip/unzip 사용해서 압축 및 풀기


압축하기, -r 옵션은 서브 디렉토리 까지 모두 압축됨, -F 옵션은 한글명  파일명 압축 가능

zip -r filename.zip folder


압축풀기

unzip filename.zip




* gz 확장명으로 압축된 파일을 풀지 않고 읽기

Command 1 : # zcat test.log.gz

Command 2 : # zless test.log.gz

Command 3 : # zmore test.log.gz




* 루트계정에서 일반 계정으로 로그인하기

su -l test




* 시스템 상황 점검

# top  // 상세 시스템 로드

# uptime  // 간단 시스템 로드

# tload // cmd 상에서 로드를 그래픽츠로 출력됨

# cat /proc/loadavg  // 간단 시스템 로드

# w  // 접속자 상황

# cat /proc/uptime   // 부팅후 켜있는 시간(초)



* 터미널창에서 많이 사용하는 단축키


TAB : 자동완성

위 방향키 : 이전명령어

아래 방형키 : 이후명령어

Ctrl-R : 스페링을 입력하면 이전에 사용했던 비슷한 명령어 출력

Ctrl-C : 포그라운드 작업을 끝냄.

Ctrl-D : 쉘에서 로그 아웃(exit와 비슷함). "EOF" (파일끝, end of file). 표준입력에서 들어오는 입력을 끝냄.

Ctrl-G : "벨(BEL)"(삑 소리).

Ctrl-H : 백스페이스(backspace).

Ctrl-J : 캐리지 리턴(carriage return).

Ctrl-L : 폼피드(formfeed, 터미널 화면을 청소). clear 명령어와 똑같은 효과.

Ctrl-M : 뉴라인(Newline).

Ctrl-U : 입력줄을 지움.

Ctrl-Z : 포그라운드 작업을 잠시 멈춤.

Shift-Pageup : 최근 전 페이지    // 최근 이전 화면 4페이지 정도는 볼수가 있습니다. 단, 이전에 출력했던 전체 내용은 볼수 없음

Shift-PageDown : 최근 후 페이지  // 최근 이전 화면 4페이지 정도는 볼수가 있습니다. 단, 이전에 출력했던 전체 내용은 볼수 없음




* 프로그램 설치

# yum -y install 설치파일명



* 자신이 설치하려는 프로그램이 어떤 패키지안에 포함되어 있는지 확인하기

# yum provides nslookup   //   nslookup 프로그램이 포함된 패키지 이름 찾기

32:bind-utils-9.9.4-29.el7.x86_64 : Utilities for querying DNS name servers
Repo        : base
Matched from:
Filename    : /usr/bin/nslookup


예를 들어서 nslookup 프로그램을 실행했는데 프로그램이 없는 상황
 
nslookup 라는 프로그램이라는것은 단독으로 설치되것이 아니라 우리가 모르는 어떤 패키지를 설치해야 nslookup 이 설치되는 방식임

nslookup 라는 프로그램이 포함된 패키지 이름을 찾을때 사용함

위 예시에서 패키지 이름은 bind-utils-9.9.4-29.el7.x86_64 이라고 나옴

nslookup 설치하기 위해서는 # yum -y install bind-* 이렇게 하면 되겠네요




* RPM 설치 가능여부 확인 테스트


설치간에 의존성 라이브러리 때문에 설치중간에 멈추는 경우가 있는데요

설치간에 중간에 멈추면 삭제해도 제대로 삭제가 안되거나 시스템에 문제를 방생하는 경우가 있는데요

중요한 시스템에서 설치가 정상적으로 되는지 테스트할때 유용합니다.


# rpm -ivh --test PACKAGE-NAME.rpm




* 내 시스템에 프로그램 설치 여부 확인하기

예시 "nano" 이라는 것을 찾을때

# rpm -qa nano

# rpm qi nano // 설치된 nano 프로그램의 정보까지 나옵니다.




* 나만의 새로운 명령어 만들기


자주 사용하는 명령어가 옵션이 있고 길어서 타이핑 하는데 불편할 경우

나만의 단축명령를 정의해서 임의로 만들어 사용이 가능합니다.

/home/계정명 들어가서 .bash_porfile 안의 내용을 수정함

root 경우 경로는 /root/.bash_profile 와 같음

파일을 수정후 source .bash_profile 실행하거나 재부팅을 해줘야 됩니다.
 
ex > alias park="shutdown -h 0" 

이것은 park 엔터 치면 shutdown -h 0 와 동일한 명령어로 운영체제가 인식하게 됩니다.




* 백그라운드 작업 중지

# jobs    (백그라운드에 잠시 중지된 작업 보기)
[1]+  Running                 sleep 100 &

# kill %1  (실행 중지하기)





EPEL repo 추가하기 및 삭제


epel 이라는것은 Extra Packages for Enterprise Linux 약자로 엔터프라이즈 리눅스를 위한 추가 패키지를 말합니다.

CentOS 설치후 yum 으로 설치가 안되는 프로그램이 있을때 epel 추가 설치해서 yum 으로 설치 가능하게 할수도 있습니다. 


# yum -y install epel-release 


삭제할수도 있는데요


/etc/yum.repo.d/ 이곳에서 설치후 추가된 파일을 삭제 하시면 됩니다.



RPMForge Repository 추가 하기

이것도 위에 설명한 확장 패키지 사용 저장소입니다.


#cat /etc/redhat-release


#uname -a

자신의 버전을 확인후 자신이 운영체제에 맞게 설치 하시면 됩니다.


우선 웹브라우져로 http://pkgs.repoforge.org/rpmforge-release 접속해서 적당한 rpm 버전의 파일의 경로를 확인합니다.


다운받기

# wget rpm 다운 경로 입력 다운받기


설치하기

# rpm -Uvh 다운받은 rpm 파일명





* yum 다운시 빠른 서버 자동 선택하기


yum-fastestmirror 를 설치하면 다운로드 속도가 가장 잘 나오는 yum repository mirror 서버를 자동으로 찾아주게 된다.


# yum -y install yum-plugin-fastestmirror yum-fastestmirror





* SELINUX 기능 사용 및 중지하기


/etc/sysconfig/selinux

SELINUX=disable 수정 후 부팅


disabled - SELinux 보안 제어를 사용하지 않으려면 disalbed 옵션을 선택한다.

permissive - permissive 상태로 설정하면 자료와 프로그램에 이름을 할당한 후 로그를 기록하지만 보안 정책을 사용하지는 않는다.

enforcing - SELinux를 완전히 활성화하시려면 enforcing 옵션을 선택하자.


# sestatus // SELINUX 보안상태확인

# getenforce // SELINUX 보안상태확인

# setenforce 1  // 보안 상태를 enforcing 변경합니다.

# setenforce 0  // 보안 상태를 permissive 변경합니다.




* 멀티메뉴 수정하기

# nano /boot/grub2/grub.cfg 파일 수정

2페이지 정도에


terminal-output console 아래
.
set timeout=5  // 이 부분이 부팅부 메뉴 선택 시간입니다. 0 하면 기본메뉴로 자동 부팅됩니다.

menuentry 'CentOS Linux~ '}    // 이 부분이 메뉴 항목 부분인데 삭제하면 메뉴에서 없어 집니다.

메뉴항목 맨 밑에 if [ "x$default"='CentOS Linux~ ' 이부분이 기본 부팅 메뉴 값을 지정하는 부분입니다.
 

서버로 사용할 경우는 set timeout=0 으로 하고 기본메뉴 하나만 남기로 삭제하시면 됩니다.





* 데몬 시작 및 부팅후 데몬 자동 실행 설정하기

systemctl start httpd    // 아파치 데몬 시작

systemctl enable httpd   // 부팅후 아파치 데몬 자동실행




* 방화벽 설정

# firewall-cmd --permanent --zone=public --add-port=80/tcp (오픈)

# firewall-cmd --permanent --zone=public --remove-port=80/tcp (닫기)




* smtp 포트 변경

smtp 기본 포는 25번입니다.

근데 포트번호를 9267 변경한다면

# nano /etc/postfix/master.cf 설정 파일일 열어서

11 번째줄 근처에

smtp inet n – n – – smtpd 이부분을

9267  inet n – n – – smtpd 이렇게 변경


아래처럼 되겠지요

9267  inet n – n – – smtpd

systemclt restart postfix  // postfix 서비스를 재시작




* 리눅스 할당된 캐쉬 메모리 초기화 하기

시스템이 특별히 메모리 자원의 사용량이 없는데 캐쉬메모리가 많아 할당되어

여유메모리 할당이 적게 나올 경우 메모리를 초기화 하는 방법입니다.

# free -m 메모리 상태 확인하고

# echo 1 > /proc/sys/vm/drop_caches   // 페이지캐쉬 초기화

# echo 2 > /proc/sys/vm/drop_caches // 트리와 아이노드 초기화

# echo 3 > /proc/sys/vm/drop_caches  // 1번과 2번 모두 초기화



* 서비스중인 포트 확인

# netstat -antp



* dhcp 네트워크 ip 재 할당

우선 장치명 확인

# ifconfig -a

장치명이 eth0 라면

# dhclient -r eth0 // ip 중지

# dhclient eth0    // ip 재 할당




* 메일 서버 사용중지하기

# netstat -antp  // 메일 서비스 작동중 확인

systemcrl status postfix // 메일 서비스 상태 확인

systemcrl stop postfix  // 메일 서비스 중지

systemcrl disable postfix  // 메일 서비스 부팅후에 자동 실행 안되게 하기


netstat -antp  // 메일 서비스 중지 여부 확인







* 스왑파티션 관련 명령어

# swapon -s 스왑파티션 현황

# swapon -a 스왑파티션 활성

# swapoff -a 스왑파티션 중지





* sshd 설정 하기

root 권한으로 ssh 접속 금지하기

/etc/ssh/sshd_config 파일안에 PermitRootLogin 값을 no 로 변경 ( 기본값 yes )
 

ssh 기본 포트 변경

Port 2022 (기본값 22)





* 간단하게 서버 정보 확인

# curl -I daum.net  // 옵션에 들어가는 문자는 i 의 대문자




* mysql 기본 포트 번호 변경하기

기본은 3306 입니다.

/etc/my.cnf

# nano my.cnf
 
[mysqld]

port = 3337 <= 변경하려는 포트 번호입력




* 업로드 파일 용량  변경


/etc/php.ini 파일에서

file_uploads = On   // 최대 업로드 파일 사이즈

upload_max_filesize = 100M // 최대 용량 100메가

post_max_size = 100M //Post 방식으로 넘겨질 최대 데이터 사이즈

max_execution_time = 300s // 최대 실행시간. 파일 사이즈가 클수록 시간을 늘려주어야 함, 0은 무한대

memory_limit = 128M  // 메모리 사용량 제한




    
* php 버전 정보를 숨기기

# nano /etc/php.ini
 
expose_php = off



 
 

* 특정 계정 강제 로그 이웃 시키기

 
1.who 명령어로 해당 IP 및 세션 조회

# who
root lft0 Aug 08 11:34
root pts/0 Aug 08 11:34 (:0.0)
root pts/1 Aug 08 11:34 (:0.0)
root pts/2 Aug 19 09:04 (***.***.***.***)


2. ps 명령어로 해당 세션의 pid 조회

# ps -edf | grep pts/5
root 2973784 2416746 0 09:03:59 pts/2 0:00 -ksh


3. kill 명령어로 해당 프로세스 강제 종료

# kill -9 2973784




* 폴더를 iso 이미지로 압축하기

# mkisofs -o Give-filename.iso /path/of/directory



* 메일 설치하기


# yum -y install mailx


# mail  // 메일 확인하기


& q  // 종료하기


# mail 사용자계정명   // 사용자계정으로 메일 보내기

# mail gooddew  // gooddew 에게 보낼 메일을 작성한다.

Subject: hello~    // 제목을 입력하고 엔터

mail test    // 내용을 입력

EOT    // 메일의 종료는 Ctrl+D

Cc: tiffiny    // Cc는 같이 받을사람(참조자) 없으면 그냥 엔터


# mail test@daum.net  // test@daum.net 라는 외부로 메일 보내기



* 간단하게 메일 발송하기

echo 명령어로 메일 발송하기

echo "보낼내용" | mail -s "메일제목" 받을메일주소


# echo "System OK" | mail -s "SystemCheck" root@uzuro.com



* 메일 삭제

postsuper -d ALL



* cat 명령어로 메일 발송하기

cat 보낼파일명 | mail -s "메일제목" 받을메일주소

# cat result_system_check | mail -s "시스템체크 결과" root@uzuro.com

위와 같이 명령을 실행한 후에 아무런 에러메세지 없이 종료되었다면 메일은 성공적으로 발송된 것이다.



* cd/dvd 열고 닫기

# eject // 열기

# eject -t  // 닫기




* 터미널상 타이핑 기록하기

# script

기록할 명령어 치고 다 완료되면

# exit

같은 디렉토리에 타이핑한 테미널 화면이 typescript 라는 파일이 생성되어 있습니다.






nano 편집기

Ctrl + _ 행으로 이동

# nano -c filename // 하단에 행번호 보임




* 디렉토리를 iso 이미지로 합침

# mkisofs -o backup.iso boot




* 파일을 열지 않고 수정하기

# vi -c "%s/수정전 문장/수정후 문장/g|wq" 수정할 파일 경로

ex> # vi -c "%s/yes/no/g|wq" /etc/httpd/httpd.conf

# sed -i "s/test1/test2/" file   // test1 을 test2 로 수정
 



* 파일을 열지 않고 내용 하단에 텍스트  추가

echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf




* 파일안에 단어 검색하기

# awk '/찾을단어/' 파일경로

ex> # awk '/yes/' /etc/ssh/sshd_config

아래와 같은 방법으로 여러개 단어를 찾을수도 있습니다

# awk '/Keyword-1|Keyword-2|Keyword-3|Keyword-N/'  /path/file-name




* 명령 처리 결과 보고


어떤 명령어 실행 했을때 정상 처리가 됬는지 아닌지를 확인하는 방법이 있습니다.

우선 명령을 실행한 후에

# echo $? 엔터 하시면 숫자값이 나오는데

0 이면 이전에 명령을 내린 것이 정상적으로 처리가 된것이구요

근데 숫자값이가 127 이 출력되면 명령어에 대해서 처리를 못한것입니다.



* 파일안에 찾고자하는 단에 줄 표시

# grep -n keyword file