카이도스의 Tech Blog

리눅스 개념 및 명령어 정리 본문

지식

리눅스 개념 및 명령어 정리

카이도스 2022. 8. 4. 10:57
728x90
반응형
 
rename 명령
 
- 보통 파일 한개의 이름을 바꾸려면 mv 명령을 쓴다.
 
# mv test1 testrename1.txt
 
- 한꺼번에 많은 양의 파일의 이름을 바꾸려면 rename사용한다.
 
# rename [변경전 파일명] [변경후 파일명] [대상파일]
 
- rename 명령어는 파일패턴문자(?, *)를 인식하기 때문에 여러 개의 파일을 동시에 처리가능
 
- .htm 확장자를 .html로 일괄 수정하기
 
# rename .htm .html *.htm
 
- .php3 확장자를 .php로 일괄 수정하기
 
# rename .php3 .php *.php3
 
- test 파일을 일괄 수정하기
 
-test1 test2 test3을 test01 test02 test03 으로 바꾸기
 
#rename test test0 test?
 
-test01 test02 tset03을 test1 test2 test3 로 바꾸기
 
#rename test0 test test??
 
 
 

ssh 클라이언트 설정

작성자: yangdh@hanbiro.com
 
 
1.ssh 설치
#yum -y install openssh-clients
 
2.방화벽 22번 포트 허용
 
#iptables -I INPUT 1 -p tcp --dprot 22 -j ACCEPT
#iptables -I OUTPUT 1 -p tcp --dport 22 -j ACCEPT
#service iptables save
 
3.원격접속
 
root(또는 아이디)@호스트 주소 -p22 또는 root@ip 주소
 
 

xargs란

작성자: yangdh@hanbiro.com
 
- 명령어 출력을 다른 명령어의 인자값으로 전달
 
ex) find / -name *.mp3 | xargs rm
라고 명령을 사용하면 루트에 있는 모든 *.mp3가 검색되어 그 값을 받아서 rm 시켜버린다.
 
임의의 디렉토리 안에 많은 파일이 있을경우 rm 사용시 너무 긴 문자열이라는 에러메세지가 뜨지만 xargs 를 이용 할 시
에러 없이 처리한다.
 
즉 find 명령어를 사용하여 나온 값을 받아서 다음 사용할 명령인 rm에게 전달 해준다
 
명령 특성상 단독사용은 되지 않는다.
 
ex2) find /home/yangdh/ -name *.c | xargs rm
 
/home/yangdh/ 디렉토리에서 .c 의 이름을 가진 파일을 찾아 삭제
 
 

quota

작성자: yangdh@hanbiro.com
 
파일시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것
 
쿼터 설치
yum -y install quota
 
tcp_wrappers가 의존성 문제로 인해 같이 설치된다.
 
설치 확인
rpm -qa quota
 
파일 시스템에 제한여부 설정
 
vi /etc/fstab
 
UUID=216e88e1-ae53... /home ext4 defaults,usrquota 1 2
 
 
쿼터 옵션
옵션 적용대상 용도
usrquota 모든 유형 사용자 할당량 사용
usrjquota=filename vfsv0 저널 사용자 할당량 사용(jqfmt 옵션의 스펙 및 할당량 데이터베이스 파일 이름(일반적으로 aquota.user)이 필요함)
uquota xfs usrquota와 동등
grpquota 모든 유형 그룹 할당량 사용
grpjquota=filename vfsv0 저널 그룹 할당량 사용(jqfmt 옵션의 스펙 및 할당량 데이터베이스 파일 이름(일반적으로 aquota.group)이 필요함)
gquota xfs grpquota와 동등
prjquota xfs 프로젝트 할당량 사용
pquota xfs prjquota와 동등
jqfmt=format vfsv0 usrjquota 또는 grpjquota가 지정될 때 사용된 할당량의 형식(현재는 vfsv0가 유일하게 지원되는 형식임)
quota vfsold, vfsv0 usrquota와 동등
noquota vfsold, vfsv0 할당량을 사용하지 않음
uqnoenforce xfs 사용자 할당량 계산을 사용하지만 적용하지는 않음
gqnoenforce xfs 그룹 할당량 계산을 사용하지만 적용하지는 않음
pqnoenforce xfs
프로젝트 할당량 계산을 사용하지만 적용하지는 않음
 
설정 적용을 위해 재부팅 또는 리마운트
mount -o remount /home
 
 
쿼터 DB 생성
 
쿼터를 사용하기 위해서는 쿼터 DB가 필요한데 이를 위해 aquota.user(유저별 제한) 파일을 해당 파일시스템의 루트 디렉토리에 생성해야 한다. 그룹별 쿼터설정 파일은 aquota.group 이다.
 
cd /home && touch aquota.user
 
보안을 위해 소유자(root)외에는 접근하지 못하도록 한다.
 
chmod 600 aquota.user
 
쿼터의 적용을 위해 현재 상태를 체크한다.
 
quotacheck -avug
 
옵션은 아래와 같다.
 
- a : /etc/mtab에 있는 모든 마운트된 파일 시스템 검사(NFS 파일 시스템 제외)
- v : 상세 출력
- u : 사용자 할당량 검사(기본값 임)
- g : 그룹 할당량 검사
- c : 기존 할당량(ex.aquota.user) 파일 무시(새로운 스캔을 실행하여 결과를 디스크에 씀)
 
 
쿼터체크를 실행시 아래와 같은 에러 메세지가 나온다면 주의하자
quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
 
에러 해결) /dev/sda1에 있는 ext4 파일 시스템에 대해 /etc/fstab의 옵션을 defaults,usrquota에서 defaults,usrjquota=aquota.user,jqfmt=vfsv0로 변경하여 이를 수행한다. 그룹은 grpjquota=aquota.group로 추가
 
 
 
 

tar 압축명령

작성자: yangdh@hanbiro.com
 
tar
 
압축하기
# tar -cvf [압축파일명.tar] [압축할 파일/디렉토리] 
 
압축 풀기
# tar -xvf filename.tar
# tar -xvf filename.tar  -C  /folder/dest_folder_name/    #지정된 위치에 압축풀기
 
-c 파일을 tar로 묶음
 
 -p 파일 권한을 저장
 
 -v 묶거나 파일을 풀 때 과정을 화면으로 출력
 
 -f 파일 이름을 지정
 
 -C 경로를 지정
 
 -x tar 압축을 풂
 
 -z gzip으로 압축하거나 해제함
 
 

/etc/sysctl.conf 수정

작성자: yangdh@hanbiro.com
 
sysctl은 kernel parameter값들을 조절하기 위한 utility 이다.
sysctl이 조절할 수 있는 값들은 /proc/sys/* 아래에 있는 list들이다.
sysctl 을 이용하여 값을 변경할 경우에 시스템이 충돌할 위험요소가 많이 있다.
 
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.
 
# Controls IP packet forwarding  IP 패킷 포워딩 제어
net.ipv4.ip_forward = 0
 
# Controls source route verification  소스 경로 확인 제어
net.ipv4.conf.default.rp_filter = 1
 
# Do not accept source routing  소스 라우팅을 허용하지 않음
net.ipv4.conf.default.accept_source_route = 0
 
# Controls the System Request debugging functionality of the kernel  커널의 시스템 요청 디버깅 기능을 제어합니다.
kernel.sysrq = 0
 
# Controls whether core dumps will append the PID to the core filename.  코어 덤프가 코어 파일 이름에 PID를 추가할지 여부를 제어합니다.
# Useful for debugging multi-threaded applications.  멀티 스레드 응용 프로그램 디버깅에 유용합니다.
kernel.core_uses_pid = 1
 
# Controls the use of TCP syncookies  TCP 동기화 키의 사용을 제어합니다.
net.ipv4.tcp_syncookies = 1
 
# Disable netfilter on bridges.  브리지에서 netfilter를 비활성화합니다.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
 
# Controls the default maxmimum size of a mesage queue 하나의 프로세스에서 다른포로세스로 보내 질수 있는 메시지 최대크기
kernel.msgmnb = 65536
 
# Controls the maximum size of a message, in bytes 메시지 큐의 기본 최대 크기(바이트단위)
kernel.msgmax = 65536
 
# Controls the maximum shared segment size, in bytes  최대 공유 세그먼트 크기 (바이트)를 제어합니다.
kernel.shmmax = 68719476736
 
# Controls the maximum number of shared memory segments, in pages  공유 메모리 세그먼트의 최대 수를 페이지 단위로 조정합니다.
kernel.shmall = 4294967296
# Auto-enabled by xs-tools:install.sh   xs-tools가 자동으로 활성화 : install.sh
net.ipv4.conf.all.arp_notify = 1
 
 
 

logrotate

작성자: yangdh@hanbiro.com
 
logrotate는 로그 파일들을 logrotate.conf 설정 파일에 의해 자르거나 삭제 압축해 로그파일을 관리
 
rsyslogd 데몬에 의해 생성된 /var/log 파일들은 logrotate에 의해 자동 관리함 실행시만 구동되는 데몬
 
데몬 : /usr/sbin/logrotate
설정파일 : /etc/logrotate.conf
 
데몬 구동 확인 #ps -ef | grep syslogd
 
데몬 구동 정지, 시작
[root@www log]# /etc/init.d/rsyslog stop
Shutting down system logger:                               [  OK  ]
[root@www log]# /etc/init.d/rsyslog start
 
 
# see "man logrotate" for details
# rotate log files weekly
weekly - /var/log 파일들을 주단위로 자름
 
# keep 4 weeks worth of backlogs
rotate 4 4주간 로그파일을 보관 그 이상되면 삭제
 
# create new (empty) log files after rotating old ones
create 로그파일을 자르고 다음 빈 로그파일을 새로 생성
 
# use date as a suffix of the rotated file
dateext
 
# uncomment this if you want your log files compressed
#compress 로테이트한 로그 파일을 압축하여 저장
 
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d 로그 관리를 위해 /etc/logrotate.d안의 디렉토리의 개별 설정파일을 불러와 적용
 
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp { 개별 설정시 따로 작성
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}
 
/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
 
 
 
logrotate 주요 옵션 (/etc/logrotate.conf에 적용)
- compess : 로그파일을 gzip으로 압축하게 된다.
        - create [mode owner group] : 순환되어 생성 하는 로그파일의 퍼미션, 소유자, 그룹소유자를 지정
                                                     ex) create 600 root rootgroup
        - daily : 로그파일을 일 단위로 자른다.
        - weekly : 로그파일을 주 단위로 자른다.
        - monthly : 로그파일을 한달 주기로 자른다.
        - errors address : 로케이트 작업시 에러가 발생하면 지정된 주소로 메일을 보낸다.
        - extension [ext] : 로그파일의 뒤에 ext라는 확장자를 붙인다. 다른 확장자로 설정해도 관계없다
        - ifempty : 로그파일이 비어 있어도 로케이트 작업을 한다. 기본값이다.
        - notifempty : 로그파일이 비어 있으면 로케이트 작업을 하지 않는다.
        - mail [메일주소] : 로테이트 작업후에 이전 로그파일을 지정된 메일주소로 보낸다.
        - rotate [숫자] : 로테이트 작업파일이 순환되어지는 파일의 총 갯수
        - size [size] : 로테이트의 수행결과로 생성된 파일의 사이즈가 지정된 사이즈가 넘지 않도록 지정 ex) size 100k,  size 100M
 
 

fsck

작성자: yangdh@hanbiro.com
 
시스템을 리부팅 하거나 갑자기 파일시스템 I/O에러가 생길 때 보통은 너무 오랫동안 파일 시스템 점검을
안해 준 경우가 대부분이다. 
 
1. 싱글 유저 모드로 부팅
 
- 싱글모드 부팅은 OS 부팅 카운트 일때 아무키 눌러서 부트 시퀸스 선택화면 입장
E 눌러서 rhgb quiet 뒤에 single 또는 1 입력 엔터 (만약 싱글모드가 안되면 selinux=0 또는 setenforce 0 입력)
그후 부티할 시퀸스 선택 후 B 키 눌러서 싱글모드 부팅
 
2. 현재 마운트된 장치명 확인
#mount
 
3.체크 할 파티션을 umount 해준다 (하지 않을 경우 파티션 손실 가능성 높음)
#umount /dev/sda6 /home
 
5.fsck 명령으로 점검
 
#fsck -y /dev/sda6 : 복구 할지 물어보지 않고 자동 yes 처리 명령
 
6. fsck 주요옵션
 
-A 일반적으로 /etc/fstab에 나와 있는 파일 시스템들을 검사 /etc/rc 시스템 초기화 파일에서 일관적으로 점검한다.
-R -A옵션과 같이 사용하면 루트 파일 시스템을 제외한 모든 파일시스템을 점검한다.
-T 검사할때 제목을 보여주지 않는다.
-N 실제적으로 실행은 하지 않고 어떤 작업을 할것인가만 보여준다.
-P -A옵션과 같이 사용하면 다른 파일 시스템과 루트 파일 시스템을 병렬 처리하여 점검한다.
그러나 루트 파일 시스템에 에러가 있을 경우 바이너리 파일이 깨질수 있으니 좋지 않다.
-s fsck 동작을 시리얼화 한다. 대화형 모드에서 여러 파일 시스템을 점검할 때 유용
-V 실행되는 각 파일 시스템용 명령을 포함하여 자세한 출력을 수행한다.
-t 점검할 파일 시스템을 설정한다. 파일 시스템 앞에 no를 붙이면 지정한 파일 시스템을 제외한 나머지를 모두 점검 한다.
-a 사용자에게 질문하지 않고 자동적으로 복구한다. 권장하지 않음
-r 파일 시스템 복구 전에 복구 여부를 묻는다. 단 병렬로 작동할때는 권장하지 않음
--v 버전정보를 보여준다.
 
 

rsyslog 서버설정

작성자: yangdh@hanbiro.com
 
vi /etc/rsyslog.conf 설정
 
 
# Provides UDP syslog reception 아래
$ModLoad imudp.so
$UDPServerRun 514
 
의 앞 주석 해제
 
저장후 rsyslog 재시작
 
/etc/init.d/rsyslog restart
 
log 쌓이는 곳은
/var/log/rsyslog
 
방화벽 설정
 
syslog는 기본적으로 UDP 514 포트를 리스닝 하기 때문에 포트 허용필요
#iptables -I INPUT 1 -p udp --dport 514 -j ACCEPT 
#iptables -I OUTPUT 1 -p udp --dport 514 -j ACCEPT 
 
#service iptables save
 
 

1. 리눅스의 기본적인 트리구조와 각 폴더 역할 확인

작성자: yangdh@hanbiro.com
 
  1. 기본적인 트리구조
 
 
/ (root)
최상위 디렉토리로, 루트 디렉토리 라고 한다.
모든 디렉토리는 루트를 기준으로 생성되며 루트는 모든 디렉토리의 출발점이자 다른 파티션의 연결점이다.
 
/bin
시스템에서 사용되는 기본 명령어들이 위치하는 디렉토리로 리눅스 명령이 저장되어 있다.
'bin'이라는 이름은 이곳의 프로그램 대부분이 이진 파일이라는 것을 의미한다.
 
/var
내용이 자주 변경되는 가변 자료들이 저장되는 디렉토리로 기본적으로 시스템을 운영할 때 발생 되는 로그파일들이 저장
다음과 같은 서비스를 제공하는 서버로 리눅스를 운영할때 사용하면 바람직
 
-메일을 송/수신할 때 임시 저장 프린트 스풀 데이터
-레드햇 배포판에서 패키지로 제공하는 아파치 웹 서버 관련 자료
-MYSQL의 데이터베이스
-FTP 최상위 디렉토리
 
/boot
부팅에 필요한 지원 파일들이 위치하는 디렉토리, 시스템 부팅 시 부트로더가 커널 위치 참조
 
/dev
각 장치에 대한 장치 파일이 위치하는 디렉토리, 용량을 차지 안하는 가상의 디렉토리
 
/etc
리눅스에 사용되는 모든 어플리케이션 및 환경 설정에 필요한 설정 파일들이 존재
 
/home
일반 사용자들의 홈 디렉토리 위치 또는 별도의공간을 요구하는 서비스를 위한 디렉토리 사용
 
/lib
기본적인 라이브러리가 위치하는 디렉토리
 
 

# Log all kernel messages to the console.

작성자: yangdh@hanbiro.com
 
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure
# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog
 
# Log cron stuff
cron.*                                                  /var/log/cron
# Everybody gets emergency messages
*.emerg                                                 *
# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
 
 
/etc/syslog.conf 설정형식
 
facility.priority;facility.priority                  logfile-location
    A        B        A        B                              C
 
 A 서비스(데몬)에 대하여 B의 경우에 해당하는 상황이 발생하였을 때에 C 로그파일에 그 기록을 남겨라 "
 
 
- facility : 서비스이름 ( 메시지의 종류 )
 
facility
설 명
*
모든 서비스를 의미함.
auth
로그인과 같이 사용자 인증에 관한 메시지
authpriv
보안 및 승인에 관한 메시지
cron
crond 데몬과 atd 데몬에 의해 발생하는 메시지
daemon
telnet, ftp 등과 같은 데몬에 의한 메시지
kern
kernel에 의한 메시지로서 커널메시지라고 함.
lpr
프린터 데몬인 lpd에 의해 발생되는 메시지
mail
sendmail 또는 qmail 등의 메일에 의해 발생되는 메시지
news
innd 등과 같은 뉴스시스템에 의해 발생되는 메시지
uucp
uucp에 의한 시스템에 의한 메시지
user
사용자에 의해 생성된 프로세스
syslog
syslogd에 의해 발생되는 메시지
local0~local7
시스템부팅 메시지 기록, 기타 여분서비스에 사용하기 위함.
 
- priority : 메시지의 우선순위를 의미함. (또는 level)
priority
설 명 (저장되는 해당 메시지)
*
발생하는 모든 상황에 대한 메시지
debug
최하위, 디버깅(debugging)관련 메시지(가장낮은 단계)
info
단순한 프로그램에 대한 정보 및 통계관련 메시지
notice
에러가 아닌 알림에 관한 메시지
warning
주의를 요하는 메시지
err
에러가 발생한 상황의 메시지
crit
급한상황은 아니지만 치면적인 시스템 문제발생 상황의 메시지
alert
즉각적인 조치를 취해야하는 상황의 메시지
emerg
최상위, 매우 위험한 상황의 메시지, 전체공지가 요구되는 메시지
none
어떠한 경우라도 메시지를 저장하지 않음.
 
 
/etc/syslog.conf 파일의 각행에 대한 설명
 
#kern.*        /dev/console
 
위의 설정은 kernel에 관련된 로그(klogd) 기록을 /dev/console (모니터)에 뿌려주라는 의미이다.
 
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
시스템 로그파일로써, *.info는 모든 서비스에 대한 info 레벨의 메시지를 의미하고, mail.none 은 메일에 관한 none 레벨의 메시지를 각각 의미한다. 그리고 세미콜론(;)으로 구분되어 있는 것은 각각의 A.B에 해당하는 설정을 동시에 여러개 지정하기 위함이다.
 
authpriv.*                   /var/log/secure
 
authpriv에 해당하는 데몬들에 대한 모든 상황에 대한 기록을 /var/log/secure 파일에 하라는 의미.
즉, authpriv 에 속하는 서비스들은 xinetd(tcp_wrapper), telnet, ftp, finger 등이므로 이 데몬들에 대한 모든 상황발생에 대하여
/var/log/secure 로그파일에 기록한다. 즉 이경우 xinetd에 관련된 데몬들은 /etc/xinetd.d/* 파일에 설정되어 있으며, 해당되는 데몬들은 telnet, ftp, finger 등이다.
 
mail.*               /var/log/maillog
 
메일에 관련된 모든로그(*)를 /var/log/maillog 에 남기라는 의미이다. 즉 mail 이라는 서비스에 해당하는 것은 sendmail 과 qmail, 그리고
ipop, imap 등이다. 이들에 관한 모든기록(*)을 /var/log/maillog파일에 한다는 의미이다.
 
cron.*           /var/log/cron
시스템 크론데몬(crond)에 관련된 모든로그(*)를 /var/log/cron 에 남기도록 한 설정이다.cron 이라는 서비스에 해당하는 것은 crond 라는 데몬뿐 아니라, atd 라는 예약작업 데몬도 이에 해당한다. 따라서 crond 데몬과 atd 데몬등에 의해 발생되는 모든 메시지를 /var/log/cron 파일에 기록한다.
 
local7.*       /var/log/boot/log
 
시스템이 부팅될 때의 로그메시지로서 /var/log/boot.log 파일에 그 기록을 남기게 된다.
시스템 부팅 메시지는 dmesg 란 명령어로 볼수도 있으며, /var/log/dmesg 란 파일을 직접 열어봐도 알수있다.
 
 
 

- fstab

작성자: yangdh@hanbiro.com
 
  1. 설정 및 사용 방법이 어떻게 되는지 알아보고 적용해볼 것
- fstab
설정은 vi /etc/fstab에서 설정
 
fstab은 디스크의 마운트를 관장하는 곳
 
첫번째 필드 -디바이스 명 지정 NFS 나 SBM 파일 시스템 사용, 디스크를 마운트시 호스트명을 지정
 
두번째필드 - 마운트포인트를 지정 스왑은 마운트 되지 않기때문에 "none" 이나 "swap"으로 기술
 
세번째필드 - 파일 시스템의 종류 ex) ext4,ext3등
 
네번째필드 - 파일 시스템 고유의 옵션을 지정
 
default : rw, nouser, auto, exec, suid 속성을 모두 가지는 속성, 가장 일반적인 파일시스템에서 사용
 
auto : 부팅시 자동마운트
 
exec : 실행파일이 실행되는 것을 허용하는 파일시스템
 
suid : SetUID와 SetGID의 사용을 허용하는 파일시스템
 
ro : 읽기전용 파일시스템(Read Only)
 
rw : 읽고쓰기 파일시스템(Read, Write)
 
user : 일반 계정사용자들도 마운트를 할 수 있는 파일시스템
 
nouser : 일반 계정사용자들은 마운트 할 수 없는 파일시스템. root 만 mount
 
noauto : 부팅시 자동마운트되지 않게 함.
 
noexec : 실행파일을 실행되지 못하게 하는 파일시스템
 
nosuid : SetUID와 SetGID의 사용을 허용하지 않는 파일시스템
 
usrquota : 개별 사용자의 쿼타(Quota)설정이 가능한 파일시스템
 
grpqquota : 그룹별 쿼타(Quota)설정이 가능한 파일시스템
 
(ex /dev/sdb5    /home    ext4   defaults,usrquota    1  1)
 
 
다섯번째 필드 - dump 명령어가 그 파일 시스템을 덤프할 필요가 있는지 지정
"0" 이면 덤프 하지 않는다는  뜻이기 때문에 하드디스크 파티션에는 '1' 그 이외에는 0를 지정
 
여섯번째 필드 - fsck 명령어로 무결성 체크 여부 지정
 
'0'을 지정하면 체크되지 않는다 '1' 이상의 정수를 써두면 숫자가 작은 순서대로 체크
 

 

728x90
반응형

'지식' 카테고리의 다른 글

Linux Software RAID  (0) 2022.08.04
Netmask  (0) 2022.08.04
Permisstion 정리  (0) 2022.08.04
init 런레벨  (0) 2022.08.04
rename  (0) 2022.08.03
Comments