실무에서 사용하는 리눅스 명령어 모음, 리눅스 기초 교육자료
- Operating System
- 2020. 11. 27.
실무에서 사용하는 리눅스 명령어 모음, 리눅스 기초 교육자료
▶ 이 글의 목적: 개인적으로 실무에서 사용하는 명령어를 정리한 것입니다.
- 리눅스의 종류는 상당히 많으며 종류별로 명령어와 디렉토리 구조들이 상이하다.
본 자료는 레드헷계열의 리눅스 6.* 버전 대의 명령어와 설정법들을 설명하고 있다.
핵심 키워드 : 리눅스는 모든 명령어 및 드라이버 설정들이 파일로 되어 있다.
그래서 파일이름을 대충 알면 경로를 정확하게 몰라도 찾아낼 수 있다. 자 찾아보자.
[root@ltm6-demo ~]# find / -name ifcfg*
[root@ltm6-demo ~]# find / -name *resol*
[root@ltm6-demo ~]# find / -name ssh*
find / -name <-- 이 명령어만 알면 노쇠하여 기억력이 떨어져도 관련 명령어나 파일을 찾아낼 수 있는 것이다.
풀이하면 --> 찾아라 /(루트) 하단의 특정키워드나 *으로 포함된 키워드를........
root 패스워드 변경 <-- 비밀번호 분실 시 모니터를 서버에 연결해서 아래 작업
GRUB화면에서 e 누름, 다시한번 e 누름
kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quitet로 이동
후 e 누름
kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quitet single 입력
esc 빠져 나오고 b 로 부팅
명령 프롬프트가 뜨며 passwd 라는 명령어로 비밀번호를 변경하면 된다.
현재 리눅스 버전 확인하는 방법 3가지
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@localhost ~]# cat /etc/issue
CentOS release 6.8 (Final)
Kernel \r on an \m
[root@localhost ~]#
사용자 변경
사용자 추가
#useradd vashchoi <-- 사용자 추가
#passwd vashchoi <-- 사용자 비밀번호 생성, 수정 시에도 동일
#userdel -r vahschoi <-- 삭제 시 r 옵션을 주어야 자동생성된 각종 환경변수 파일도 삭제된다.
작업스케쥴러 - root만 사용 가능
설정값은 이 파일에 저장된다.
[root@localhost ~]# crontab -l <-- 현재 설정값 확인
no crontab for root
[root@localhost ~]# crontab -e <-- 설정값 추가 및 수정
랜카드 상태 확인법
[root@localhost ~]# ifconfig eth0 <-- 기본 설치라면 eth0 이지만 현업에선 대부분 다르게 되어 있다.
eth0 Link encap:Ethernet HWaddr 00:50:56:36:74:E4
inet addr:192.168.0.131 Bcast:192.168.0.255 Mask:255.255.255.0 <-- 아이피 정보
inet6 addr: fe80::250:56ff:fe36:74e4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8004 errors:0 dropped:0 overruns:0 frame:0
TX packets:461 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 <-- 각종 에러가 없어야 정상이다. 상하 장비 속도가 안맞으면 에러 발생
RX bytes:944609 (922.4 KiB) TX bytes:74592 (72.8 KiB)
[root@localhost ~]# ifconfig <-- 이 명령어로 랜카드 이름들 확인 할 수 있다.
[root@localhost ~]# ifup eth0
[root@localhost ~]# ifdown eth0 <-- 이 명령어들은 랜카드를 임시로 다운시키는 것인데 모니터로 보는게 아니라면 사용하지 않는게 좋다.
리눅스에서 다른 리눅스로 접속 또는 파일 이동 및 복사방법
[root@localhost ~]# ssh 14.63.214.107 <-- 접속 시도했으나 접속이 안됨 상대방 포트가 22번이 아님
^C
[root@localhost ~]# ssh -p 2260 14.63.214.107
The authenticity of host '[14.63.214.107]:2260 ([14.63.214.107]:2260)' can't be established.
RSA key fingerprint is fe:ce:5d:5b:a8:b6:a5:b0:e9:6e:d7:77:44:36:f4:b7.
Are you sure you want to continue connecting (yes/no)? yes <-- 처음 접속하면 이렇게 물어봄
Warning: Permanently added '[14.63.214.107]:2260' (RSA) to the list of known hosts.
root@14.63.214.107's password:
Last login: Tue Mar 6 15:50:24 2018 from 1.222.237.106
[root@ltm6-demo ~]# <-- 다른 서버에 접속한 모습
#scp 20130820.tgz root@192.168.0.200:/root/backup/20130820 <-- 파일을 다른 서버에 옮길 때
#scp -P 2260 20130820.tgz root@192.168.0.200:/root/backup/20130820 <-- 다른 서버의 포트가 22번이 아닐 때
하드웨어 사양 파악하는 방법
[root@ltm6-demo ~]# cat /proc/meminfo
MemTotal: 8028488 kB
[root@ltm6-demo ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 45
model name : Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz
파일시스템 마운트상태 확인 방법
[root@ltm6-demo ~]# cat /etc/fstab <-- 이 설정파일에 부팅시 인식할 하드웨어를 설정해주어야 한다. 초기 설치시는 자동 입력되지만 추가로 하드디스크를 연결했다면 설정해주어야한다. 가령, usb메모리를 부팅 시 마다 자동으로 인식하게할려면 설정해주어야 한다. 하드를 연결하고 포멧하고 마운트하고 하는것은 번거롭고 복잡하니 이 교육에서 패스합니다. 요런게 있다는 것만 아시면 될 듯 합니다.
#
# /etc/fstab
# Created by anaconda on Tue Mar 11 13:46:23 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=2d482114-24d1-4d96-813f-4550d66209fb /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/xvdb1 /DATA ext4 defaults 0 0 <-- 추가로 단 하드이며 이 설정이 없으면 부팅 시 인식 못 한다.
[root@ltm6-demo ~]#
SELINUX 비활성화 <-- 리눅스의 자체보안기술이지만 활성화시 각종 설정 변경 시에러발생 할 수 있다.
[root@ltm6-demo ~]# cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@ltm6-demo ~]#
비활성화 후 # reboot 해주어야 실제 적용된다.
리눅스 각종 로그 확인 방법
[root@log]# pwd
/var/log <-- 여기서 각종 로그 확인이 가능하다.
[root@log]#
[root@log]# ll
total 3232
drwxr-x--- 2 root root 4096 May 19 2017 audit
-rw-r--r-- 1 root root 1353 Jan 2 2017 boot.log
-rw------- 1 root utmp 6912 Mar 6 16:41 btmp
-rw------- 1 root root 26038 Jul 12 2017 cron <-- 크론이라고 작업스케쥴러 실행 로그
-rw-r--r-- 1 root root 12522 Jan 2 2017 dmesg <-- 부팅 후 각종 하드웨어 에러로그
-rw-r--r-- 1 root root 1040279 Jan 16 11:56 dracut.log
-rw-r--r-- 1 root root 21316 Mar 6 16:51 lastlog
-rw------- 1 root root 268 Jul 12 2017 maillog
-rw------- 1 root root 6293 Jan 16 11:55 messages <-- 소프트웨어 에러 모든 로그
drwxr-xr-x. 2 ntp ntp 4096 Oct 26 19:57 ntpstats
-rw------- 1 root root 65368 Mar 6 16:51 secure <-- 원격 접속 로그
-rw------- 1 root root 0 Jul 9 2017 spooler <-- 프린터 관련 로그
-rw------- 1 root root 0 Sep 3 2015 tallylog
-rw-rw-r--. 1 root utmp 538752 Mar 6 16:51 wtmp
-rw------- 1 root root 10079 Jan 16 11:55 yum.log <-- 프로그램 업데이트 로그
리눅스 부팅 레벨 확인 및 수정방법 <-- 시꺼먼 화면으로만 사용할것이냐,, 윈도우처럼 사용할것이냐 결정하는것
--> 유닉스 베껴서 만든 운영체제라서 다중사용자 때문에 이런 것들이 존재함
[root@ltm6-demo log]# cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault: <-- 시커먼 콘솔화면으로 만 사용하겠다는 의미 5로 수정하면 윈도우처럼 사용가능 물론 설치시 엑스윈도우란 것을 설치해야함 대부분 설치함
[root@ltm6-demo log]#
SSH포트 변경 : 외부에 오픈된 공인 아이피라면 반드시 변경 필요, 미변경 시 중국애들이 많이 찾아 옴
[root@ log]# cat /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.
Port 2260
#AddressFamily any
[root@ log]# service sshd restart <-- 재시작해주어야 적용되며 반드시 방화벽정책에 변경한 2260 추가해주어야 함(방화벽 사용중이라면....)
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@ltm6-demo log]#
리눅스 자체 방화벽 사용방법
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:apc-2260
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost ~]#
사용 중일 때 모습
[root@ltm6-demo log]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@ltm6-demo log]#
사용 중이지 않을 때 모습
[root@ltm6-demo log]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT <-- 허용하고자하면 대충 보고 따라서 다른 포트 추가하면됨
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
[root@ltm6-demo log]#
[root@ltm6-demo log]# service iptables restart <-- 반드시 재시작해주어야 변경된 정책이 먹힘.. 조심조심....
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
[root@ltm6-demo log]#
신규 프로그램 설치 및 시간 동기화 방법
[root@log]# yum -y install rdate <-- rdate 라는 시간동기화 프로그램을 설치하되 일일이 물어보지 말아라
--> yum 은 무료리눅스라면 사용이 가능하나 레드헷의 유료 리눅스라면 라이센스가 있어야만 사용가능함
Loaded plugins: fastestmirror
Setting up Install Process
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Repository contrib is listed more than once in the configuration
Determining fastest mirrors
* base: ftp.daumkakao.com
* extras: ftp.daumkakao.com
* updates: ftp.daumkakao.com
base | 3.7 kB 00:00
extras | 3.4 kB 00:00
extras/primary_db | 30 kB 00:00
updates | 3.4 kB 00:00
updates/primary_db | 6.4 MB 00:00
Package rdate-1.4-16.el6.x86_64 already installed and latest version <-- 이미 설치되어 있다네용
Nothing to do
[root@ log]#
[root@log]# rdate -s zero.bora.net <-- 보라넷의 시간서버로 시간을 동기화 해라...
[root@log]# date <-- 잘 되었는지 확인
Tue Mar 6 17:28:25 KST 2018
[root@ log]#
서버의 메모리 상태 확인
[root@log]# free -m -t
total used free shared buffers cached
Mem: 7840 7743 96 0 361 1386
-/+ buffers/cache: 5996 1844
Swap: 3999 4 3995 <-- 스왑이라고 일종의 가상메모리인데 사용흔적이 있으면 그 시스템은 성능이 안 좋은 시스템임
Total: 11840 7747 4092
[root@log]#
하드디스크 가용량 확인 방법
[root@ log]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 16G 11G 4.4G 70% /
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/xvda1 ext4 477M 137M 315M 31% /boot
/dev/xvdb1 ext4 79G 44G 32G 59% /DATA
각종 서비스 상태 확인 방법
[root@ log]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 2017 ? 00:00:00 /sbin/init
root 2 0 0 2017 ? 00:00:00 [kthreadd]
root 3 2 0 2017 ? 00:01:05 [migration/0]
root 4 2 0 2017 ? 00:01:39 [ksoftirqd/0]
[root@log]# ps -ef | grep mysql
root 1204 31616 0 17:32 pts/2 00:00:00 grep mysql
root 7291 1 0 Jan19 ? 00:00:00 /bin/sh /mariadb-10.1.14-linux-x86_64/bin/mysqld_safe --datadir=/DATA/mysqldata10 --pid-file=/DATA/mysqldata10/ltm6-demo.pid
[root@ltm6-demo log]# ps -ef | grep engine
root 1206 31616 0 17:33 pts/2 00:00:00 grep engine
root 27501 1 0 Jan29 ? 00:29:52 java com..engine.automail.stat.main
씨피유 상태 확인 방법
[root@ log]# vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 4596 99424 369724 1419952 0 0 3 77 0 0 0 0 99 0 0
0 0 4596 99424 369724 1419972 0 0 0 32 353 854 0 0 100 0 0
0 0 4596 99424 369724 1419972 0 0 0 0 326 826 0 0 100 0 0
0 0 4596 99424 369724 1419972 0 0 0 60 355 858 0 0 100 0 0
0 0 4596 99424 369724 1419972 0 0 0 24 315 842 1 0 99 0 0
아이들이 100에 가까워야 씨피유가 놀고 있는 상태임
[root@ltm6-demo log]# top
top - 17:34:38 up 428 days, 4:02, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 108 total, 1 running, 107 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.5%us, 0.1%sy, 0.0%ni, 98.9%id, 0.5%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8028488k total, 7929436k used, 99052k free, 369764k buffers
Swap: 4095996k total, 4596k used, 4091400k free, 1419988k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27671 root 20 0 3297m 289m 5840 S 4.0 3.7 29:55.40 java
7444 mysql 20 0 2005m 666m 7076 S 2.0 8.5 355:12.76 mysqld
1 root 20 0 19232 356 196 S 0.0 0.0 0:00.54 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 1:05.85 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 1:39.22 ksoftirqd/0
서버 DNS 아이피 확인 및 수정 방법
[root@ltm6-demo ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search cs63c2cloud.internal
nameserver 172.27.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4
[root@ltm6-demo ~]#
watch 명령어로 특정 로그 변화 실시간으로 모니터링하는 방법
[root@~]# watch
Usage: watch [-dhntv] [--differences[=cumulative]] [--help] [--interval=<n>] [--no-title] [--version] <command>
[root@~]#
[root@~]# watch --interval=1 'ps -ef | grep tomcat'
1초 간격으로 ps -ef | grep tomcat 명령어 값은 계속 노출 시키라는 의미
패킷 검사로 서비스 상태나 방화벽 상태 확인하는 방법 , tcpdump & wireshark
설치
- tcpdump : 리눅스용 - [root@localhost ~]# yum -y install tcpdump
#ifconfig eth0 promisc <무차별 모드> : 모든 패킷이 캡쳐된다.
#ifconfig eth0 -promisc <무차별 모드 해제 >
- 랜카드 속성을 변경해서 모든 패킷이 캡쳐되는 모드르 일시 변경해주는게 좋음
- 모르겠음 안해도 됨
#tcpdump -i eth0 port 80 -s 0 -w /root/eth0_20161026.pcap -v
- 80포트로 왔다갔다한 패킷을 저장하라는 의미
#tcpdump -lnni eth0 host 192.168.0.100 and port 80 -s 0 -w /root/eth0_20161026.pcap -v
- 특정아이피와 80포트로 왔다갔다한 패킷을 저장하라는 의미
실습예제
[root@localhost ~]# tcpdump -lnni eth1 port 53
이렇게 53번 포트 패킷을 걸고
이런식으로 액션을 주면
이런식으로 서비스가 정상인 것을 확인 할 수 있다.
이상입니다. 나머지는 독학하셈....
#리눅스 #리눅스 기초 #기초 #실무
'공감과 공유는 좀 더 양질의 콘텐츠 생성을 이끕니다.'