실무에서 사용하는 리눅스 명령어 모음, 리눅스 기초 교육자료

실무에서 사용하는 리눅스 명령어 모음, 리눅스 기초 교육자료

youtu.be/UcB4X8nN3uE

 

▶ 이 글의 목적: 개인적으로 실무에서 사용하는 명령어를 정리한 것입니다.

 

 

 

- 리눅스의 종류는 상당히 많으며 종류별로 명령어와 디렉토리 구조들이 상이하다. 

본 자료는 레드헷계열의 리눅스 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번 포트 패킷을 걸고

이런식으로 액션을 주면 

이런식으로 서비스가 정상인 것을 확인 할 수 있다.

 

 

 

이상입니다.  나머지는 독학하셈....

 

 

 

 

#리눅스 #리눅스 기초 #기초 #실무

 

'공감과 공유는 좀 더 양질의 콘텐츠 생성을 이끕니다.'