카이도스의 Tech Blog
리눅스 개념 및 명령어 정리 본문
728x90
반응형
rename작성자: yangdh@hanbiro.com
|
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 의 이름을 가진 파일을 찾아 삭제
파일시스템마다 사용자나 그룹이 생성할 수 있는 파일의 용량 및 개수를 제한하는 것
쿼터 설치
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
압축하기
# 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 수정원본 URL: http://hanlinux.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-etcsysctlconf-%EC%88%98%EC%A0%95
작성자: 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는 로그 파일들을 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
시스템을 리부팅 하거나 갑자기 파일시스템 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 버전정보를 보여준다.
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
|
-
기본적인 트리구조
/ (root)
최상위 디렉토리로, 루트 디렉토리 라고 한다.
모든 디렉토리는 루트를 기준으로 생성되며 루트는 모든 디렉토리의 출발점이자 다른 파티션의 연결점이다.
/bin
시스템에서 사용되는 기본 명령어들이 위치하는 디렉토리로 리눅스 명령이 저장되어 있다.
'bin'이라는 이름은 이곳의 프로그램 대부분이 이진 파일이라는 것을 의미한다.
/var
내용이 자주 변경되는 가변 자료들이 저장되는 디렉토리로 기본적으로 시스템을 운영할 때 발생 되는 로그파일들이 저장
다음과 같은 서비스를 제공하는 서버로 리눅스를 운영할때 사용하면 바람직
-메일을 송/수신할 때 임시 저장 프린트 스풀 데이터
-레드햇 배포판에서 패키지로 제공하는 아파치 웹 서버 관련 자료
-MYSQL의 데이터베이스
-FTP 최상위 디렉토리
/boot
부팅에 필요한 지원 파일들이 위치하는 디렉토리, 시스템 부팅 시 부트로더가 커널 위치 참조
/dev
각 장치에 대한 장치 파일이 위치하는 디렉토리, 용량을 차지 안하는 가상의 디렉토리
/etc
리눅스에 사용되는 모든 어플리케이션 및 환경 설정에 필요한 설정 파일들이 존재
/home
일반 사용자들의 홈 디렉토리 위치 또는 별도의공간을 요구하는 서비스를 위한 디렉토리 사용
/lib
기본적인 라이브러리가 위치하는 디렉토리
# Log all kernel messages to the console.원본 URL: http://broko.tistory.com/31
작성자: 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
설정은 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