시스템 관리자를 위한 20가지 Linux 명령

Linux는 시스템 관리 작업을 빠르고 효율적으로 수행하는 데 도움이 되는 수많은 명령과 유틸리티를 제공합니다.

시스템 관리자로서의 작업에는 소프트웨어 설치 및 실행, 액세스 제어, 모니터링, 가용성 보장, 백업, 백업 복원, 물론 소방이 포함됩니다. 😜

이 기사에서는 Linux 시스템 관리자가 일상 업무에서 자주 사용하는 몇 가지 명령을 검토합니다.

우나메

시스템 정보를 인쇄하려면 -a 플래그와 함께 uname 명령을 사용하십시오. 이 명령은 커널 이름, 커널 릴리스, 커널 버전, 호스트 이름, 프로세서 유형 및 하드웨어 플랫폼 정보를 표시합니다.

[email protected]:~$ uname -a
Linux ubuntu18 5.3.0-1028-azure #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

이것이 의미하는 바는 다음과 같습니다.

kernel name:Linux 
hostname: ubuntu18 
kernel release: 5.3.0-1028-azure 
kernel version: #29~18.04.1-Ubuntu SMP Fri Jun 5 14:32:34 UTC 2020 
machine hardware name: x86_64 
processor: x86_64 
hardware-platform: x86_64 
operating system: GNU/Linux

DF

df 명령을 사용하여 파일 시스템의 크기와 사용 가능한 공간을 확인합니다. 단독으로 사용되는 이 명령은 출력을 1K 블록으로 표시합니다.

[email protected]:~$ df 
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              437208       0    437208   0% /dev
tmpfs              91100     692     90408   1% /run
/dev/sda1       30309264 2383952  27908928   8% /
....

옵션 -h는 사람이 읽을 수 있는 형식(MB 및 GB)으로 출력을 표시합니다.

[email protected]:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            427M     0  427M   0% /dev
tmpfs            89M  692K   89M   1% /run
/dev/sda1        29G  2.3G   27G   8% /
tmpfs           445M     0  445M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           445M     0  445M   0% /sys/fs/cgroup
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdb1       3.9G   16M  3.7G   1% /mnt
tmpfs            89M     0   89M   0% /run/user/1001 

더 깨끗한 출력을 위한 파일 시스템(예: tmpfs)을 무시하려면 플래그 -x를 사용하십시오.

[email protected]:~$ df -h -x tmpfs
Filesystem      Size  Used Avail Use% Mounted on
udev            427M     0  427M   0% /dev
/dev/sda1        29G  2.3G   27G   8% /
/dev/sda15      105M  3.6M  101M   4% /boot/efi
/dev/sdb1       3.9G   16M  3.7G   1% /mnt

특정 파일 시스템 유형만 나열하려면 -t 플래그를 사용하십시오. 예를 들어, ext4 파일 시스템만 보려면:

[email protected]:~$ df -h -t ext4
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        29G  2.3G   27G   8% /
/dev/sdb1       3.9G   16M  3.7G   1% /mnt

total 플래그를 사용하면 총합계를 표시하는 줄이 추가됩니다.

[email protected]:~$ df -h -t ext4 --total
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        29G  2.3G   27G   8% /
/dev/sdb1       3.9G   16M  3.7G   1% /mnt
<b>total            33G  2.3G   31G   8% -</b>

디렉토리의 디스크 공간 사용량을 확인하려면 du 명령을 사용하십시오. 예를 들어 /var/log 디렉토리의 디스크 공간 사용량을 확인합니다. 사람이 읽을 수 있는 형식에는 -h 플래그를 사용하십시오.

[email protected]:~$ sudo du -h /var/log
24K	/var/log/Microsoft/Azure/NetworkWatcherAgent/Logs
28K	/var/log/Microsoft/Azure/NetworkWatcherAgent
32K	/var/log/Microsoft/Azure
36K	/var/log/Microsoft
60K	/var/log/apt
4.0K	/var/log/samba
177M	/var/log/journal/0f4f926f583b4691af7de11025b19ff6
177M	/var/log/journal
...
204M	/var/log

총 사용량만 보려면 -s(요약) 플래그를 사용하십시오.

[email protected]:~$ sudo du -hs /var/log
204M	/var/log

무료

free 명령을 사용하여 총, 사용 및 사용 가능한 시스템 메모리를 확인합니다. 사람이 읽을 수 있는 형식에는 -h 플래그를 사용하십시오.

[email protected]:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           889M        272M        100M        712K        517M        443M
Swap:            0B          0B          0B
total - Total installed memory (memtotal + swaptotal)
used - used memory
free - unused memory (memfree + swapfree)
buffers - memory used by kernel buffers
cache - memory used by page caches
buff/cache - sum of buffers and cache
available - Estimated memory available for starting new applications, without swapping

추신

ps를 사용하여 시스템에서 실행 중인 프로세스에 대한 상태 정보를 표시합니다. 사용자 우분투가 소유한 모든 프로세스를 보려면 사용자 이름과 함께 -u 플래그를 사용하십시오.

[email protected]:~$ ps -u ubuntu
   PID TTY          TIME CMD
  7804 ?        00:00:00 systemd
  7805 ?        00:00:00 (sd-pam)
  7940 ?        00:00:00 sshd
  7941 pts/0    00:00:00 bash
  8111 ?        00:00:00 sshd
  8112 pts/1    00:00:00 bash
 13868 ?        00:00:00 sshd
 13869 pts/2    00:00:00 bash
 13885 pts/0    00:00:00 man
 13895 pts/0    00:00:00 pager
 18111 pts/2    00:00:00 man
 18121 pts/2    00:00:00 pager
 18485 pts/1    00:00:00 ps

모든 프로세스를 보려면 aux 플래그와 함께 ps를 실행하십시오.

[email protected]:~$ ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.7 160076  7020 ?        Ss   Jun29   0:34 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Jun29   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        I<   Jun29   0:00 [rcu_gp]
root          4  0.0  0.0      0     0 ?        I<   Jun29   0:00 [rcu_par_gp]
root          6  0.0  0.0      0     0 ?        I<   Jun29   0:00 [kworker/0:0H-kb]
....

어디

표제
의미
PID
프로세스 식별 번호
CPU %
프로세스가 사용하는 CPU 시간의 백분율
%MEM
RAM 프로세스가 사용 중인 비율
VSZ
사용 중인 가상 메모리(KB)
RSS
프로세스가 사용 중인 물리적 메모리(KB)
티티
프로세스와 관련된 터미널
통계
R – 실행 중 또는 실행할 준비가 됨, S – 대기 중, I – 유휴, T – 중지됨, Z – 좀비, D – 디스크 I/O 대기 중, X – 작동 불능, W – 교체됨, N – 낮은 우선 순위 프로세스, < – 우선순위가 높은 프로세스

맨 위

ps 명령은 어떤 순간의 프로세스 상태에 대한 스냅샷을 표시하지만 top은 프로세스 활동 순서대로 지속적으로 업데이트되는 시스템 프로세스 목록(기본적으로 3초마다)을 표시합니다.

  CDP를 사용하여 Linux 데스크탑에서 팟캐스트를 듣는 방법

top 명령 출력은 두 가지 주요 부분으로 구성됩니다. 상단의 시스템 요약과 CPU 활동별로 정렬된 프로세스 테이블입니다.

top - 14:25:32 up 44 days, 11:37,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 114 total,   1 running,  59 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   910992 total,   101208 free,   274712 used,   535072 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   458492 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND    
 50497 ubuntu    20   0   44528   3944   3368 R  0.7  0.4   0:00.15 top        
     1 root      20   0  160076   7020   4400 S  0.0  0.8   0:34.85 systemd    
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.08 kthreadd   
     3 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_gp     
     4 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_par_gp 
     6 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kworker/0:+
     9 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 mm_percpu_+

시스템 요약의 일부 필드는 다음과 같습니다.

위로
가동 시간. 시스템이 마지막으로 부팅된 이후의 시간입니다.
평균 부하
로드 평균은 실행 대기 중인 프로세스의 수를 나타내며 1.0보다 작은 값은 시스템이 사용 중이 아님을 의미합니다. 3개의 값이 있습니다. 첫 번째는 최근 60초 평균, 두 번째는 최근 5분 평균, 세 번째는 최근 15분 평균입니다.
%Cpu

이 행은 CPU의 활동을 설명합니다.
0.3 us, 사용자
0.3% CPU가 사용자 프로세스에 사용되고 있습니다.
0.0 sy, 시스템
0.0% CPU가 시스템 프로세스에 사용되고 있습니다.
0.0 ni, 좋은
0.0% CPU가 낮은 우선 순위(좋은) 프로세스에서 사용 중입니다.
99.7 ID, 유휴
99.7% CPU가 유휴 상태입니다.
0.0wa, IO 대기
0.0% CPU가 I/O를 기다리고 있습니다.
0.0 안녕
하드웨어 인터럽트에 소요된 시간
0.0시
소프트웨어 인터럽트에 소요된 시간
0.0st
하이퍼바이저에 의한 이 VM의 타임 스톤

프로세스 테이블 필드는 다음과 같습니다.

PID
프로세스 식별 번호
사용자
프로세스 소유자
홍보
우선 사항
NI
좋은 가치
가상
프로세스에서 사용하는 가상 메모리(KB)
해상도
프로세스에서 사용하는 물리적 메모리
SHR
프로세스에서 사용하는 공유 메모리
에스
프로세스 상태. R – 실행 중, S – 절전 모드, I – 유휴 상태, T – 중지됨, Z – 좀비, D – 디스크 I/O 대기 중, W- 스왑 아웃, X – 데드
CPU %
CPU 시간 프로세스가 백분율로 사용 중입니다.
%MEM
물리적 메모리 프로세스가 사용 중인
시각[+]
프로세스에서 사용한 총 CPU 시간
명령
프로그램 이름

top이 실행되는 동안 여러 명령을 실행할 수 있습니다. h 또는 ? top이 실행되는 동안 실행할 수 있는 명령을 확인합니다. k를 눌러 프로세스를 종료합니다. 상단을 종료하려면 q를 누르십시오.

파기

dig는 DNS 쿼리를 위한 훌륭한 도구입니다. 다음과 같이 사용됩니다.

dig <DNS server> <domain> <query-type>

어디

  • 는 쿼리하려는 DNS 서버 이름입니다.
  • 은 쿼리하려는 도메인 이름입니다.
  • 은 A, MX, NS SOA 등 알고자 하는 레코드의 이름입니다.

자세한 출력을 억제하려면 +short 플래그를 사용하십시오.

google.com에 대한 A 레코드를 보려면 다음을 사용하세요.

[email protected]:~$ dig google.com +short
172.217.164.174

google.com용 MX 레코드를 보려면 다음을 사용하세요.

[email protected]:~$ dig google.com MX  +short
50 alt4.aspmx.l.google.com.
10 aspmx.l.google.com.
20 alt1.aspmx.l.google.com.
40 alt3.aspmx.l.google.com.
30 alt2.aspmx.l.google.com.

인터넷에서 DNS 레코드를 쿼리해야 하는 경우 DNS 조회 도구를 사용할 수 있습니다.

누구와 w

누가 로그온한 사용자를 표시합니다.

[email protected]:~$ who
ubuntu   pts/0        2020-08-14 17:28 (183.83.211.129)
ubuntu   pts/1        2020-08-14 17:58 (183.83.211.129)

w는 현재 로그온한 사용자와 해당 프로세스를 보여줍니다. 헤더는 현재 시간, 시스템 가동 시간, 로그온한 사용자 수 및 시스템 로드 평균을 보여줍니다.

[email protected]:~$ w
 18:07:33 up 46 days, 15:19,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
ubuntu   pts/0    183.83.211.129   17:28    2.00s  0.10s  0.00s w
ubuntu   pts/1    183.83.211.129   17:58    9:07   0.05s  0.01s vi

다음 부분은 사용자 이름, 터미널 및 로그온한 원격 IP, 로그인 시간, 유휴 시간, JCPU, PCPU 및 실행 중인 프로그램을 보여줍니다. JCPU는 tty에 연결된 모든 프로세스가 사용하는 시간이고 PCPU는 현재 프로세스에서 사용하는 시간입니다.

타르

GNU tar를 사용하면 여러 파일을 단일 파일로 보관할 수 있습니다.

예를 들어 myfiles 디렉토리에 myfiles 디렉토리와 세 개의 파일 a.txt, b.txt, c.txt를 만듭니다.

[email protected]:~$ mkdir myfiles ; touch myfiles/{a.txt,b.txt,c.txt}

이제 myfiles 디렉토리의 모든 파일을 포함하는 allfiles.tar라는 아카이브를 생성하려면:

[email protected]:~$ tar -cvf allfiles.tar myfiles
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt

현재 디렉토리의 모든 파일을 나열합니다. myfiles 디렉토리와 allfiles.tar 아카이브를 볼 수 있습니다.

[email protected]:~$ ls
allfiles.tar  myfiles

-x 플래그를 사용하여 아카이브의 압축을 풀 수 있습니다. 따라서 allfiles.tar의 압축을 풀려면:

[email protected]:~$ tar -xvf allfiles.tar
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt

-z 플래그를 사용하여 이 아카이브를 압축할 수도 있습니다. 이렇게 하면 gzip으로 압축된 아카이브가 생성됩니다.

[email protected]:~$ tar -zcvf allfiles.tar.gz myfiles
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt
[email protected]:~$ ls
allfiles.tar.gz  myfiles

압축된 아카이브의 압축을 풀려면 -x 플래그와 함께 -z를 사용하십시오.

[email protected]:~$ tar -zxvf allfiles.tar.gz 
myfiles/
myfiles/c.txt
myfiles/a.txt
myfiles/b.txt

그렙

grep은 파일 또는 파일 집합에서 패턴을 검색하는 데 사용됩니다. 해당 패턴과 일치하는 모든 라인을 인쇄합니다. 예를 들어 /etc/apache2/apache2.conf에서 “ServerRoot”가 포함된 줄을 검색하려면 다음을 수행합니다.

[email protected]:~$ grep ServerRoot /etc/apache2/apache2.conf 
# ServerRoot: The top of the directory tree under which the server's
#ServerRoot "/etc/apache2"

디렉토리의 모든 파일을 검색하려면 *를 사용하십시오. 하위 디렉토리에 검색을 포함하려면 -r(재귀) 플래그를 사용하십시오. 따라서 /etc/apache2의 모든 파일에서 “VirtualHost” 패턴을 포함하는 모든 라인을 검색하려면:

[email protected]:~$ cd /etc/apache2
[email protected]:/etc/apache2$ grep -r VirtualHost *
apache2.conf:# If you do not specify an ErrorLog directive within a <VirtualHost>
apache2.conf:# logged here.  If you *do* define an error logfile for a <VirtualHost>
conf-available/localized-error-pages.conf:# even on a per-VirtualHost basis.  If you include the Alias in the global server
conf-available/other-vhosts-access-log.conf:# Define an access log for VirtualHosts that don't define their own logfile
ports.conf:# have to change the VirtualHost statement in
sites-available/000-default.conf:<VirtualHost *:80>
...

재동기화

rsync는 두 위치 간에 파일과 디렉토리를 동기화하기 위한 빠른 명령줄 도구입니다. 로컬 및 원격 복사 모두에 사용할 수 있으며 원본 파일과 대상에 있는 기존 파일 간의 차이점만 보내기 때문에 빠릅니다.

백업 및 일상적인 사용을 위한 향상된 복사 명령으로 널리 사용됩니다.

다음은 예입니다.

myfiles 디렉토리에서 backups 디렉토리로 모든 파일을 복사/재동기화하려면:

[email protected]:~$ rsync -avh myfiles/ /backups
sending incremental file list
./
a.txt
b.txt
c.txt

sent 218 bytes  received 76 bytes  588.00 bytes/sec
total size is 0  speedup is 0.00

myfiles 디렉토리의 모든 파일을 원격 호스트의 backups 디렉토리로 재동기화하려면 대상 이름에 remote_user @remote_host를 포함하십시오. 따라서 myfiles 폴더를 IP 10.0.0.50의 원격 호스트에 다시 동기화하려면:

[email protected]:~$ rsync -avh myfiles/ [email protected]:/home/vagrant
[email protected]'s password: 
sending incremental file list
./
a.txt
b.txt
c.txt

sent 230 bytes  received 76 bytes  47.08 bytes/sec
total size is 0  speedup is 0.00

봄 여름 시즌

ss 명령은 레거시 netstat 유틸리티와 유사하게 소켓 통계를 덤프하는 데 사용됩니다. TCP 소켓을 표시하려면 -t 플래그를 사용하십시오.

[email protected]:~$ ss -t 
State       Recv-Q        Send-Q                 Local Address:Port                     Peer Address:Port         
ESTAB       0             0                           10.0.0.4:53852                   168.63.129.16:8037         
ESTAB       0             0                           10.0.0.4:ssh                    183.83.211.129:64118        
ESTAB       0             0                           10.0.0.4:33256                 169.254.169.254:http         
ESTAB       0             1080                        10.0.0.4:ssh                     222.186.30.35:11527        
ESTAB       0             0                           10.0.0.4:ssh                    183.83.211.129:63049

이것은 수신 대기 중인 소켓을 표시하지 않습니다. 수신 및 비 수신 소켓을 모두 포함하려면 -t 및 -a 플래그를 사용하십시오.

[email protected]:~$ ss -t -a 
State        Recv-Q        Send-Q                Local Address:Port                     Peer Address:Port         
LISTEN       0             128                         0.0.0.0:ssh                           0.0.0.0:*            
LISTEN       0             80                        127.0.0.1:mysql                         0.0.0.0:*            
LISTEN       0             128                   127.0.0.53%lo:domain                        0.0.0.0:*            
ESTAB        0             0                          10.0.0.4:53852                   168.63.129.16:8037         
ESTAB        0             0                          10.0.0.4:ssh                    183.83.211.129:64118        
ESTAB        0             0                          10.0.0.4:33256                 169.254.169.254:http         
ESTAB        0             1080                       10.0.0.4:ssh                     222.186.30.35:11527        
ESTAB        0             120                        10.0.0.4:ssh                    183.83.211.129:63049        
LISTEN       0             128                            [::]:ssh                              [::]:*            
LISTEN       0             128                               *:http                                *:*

위치하고 있다

위치 찾기 명령은 데이터베이스를 사용하여 파일을 검색하며 실제로는 찾기 명령보다 훨씬 빠를 수 있습니다. apache2.conf와 같이 파일을 검색하는 데 사용하기가 매우 간단합니다.

[email protected]:~$ locate apache2.conf
/etc/apache2/apache2.conf
/var/lib/dpkg/info/apache2.conffiles

검색 패턴과 일치하는 파일 수만 원하는 경우 -c 플래그를 사용할 수 있습니다.

[email protected]:~$ locate -c apache2.conf
2

때때로, mlocate인 위치 찾기에서 사용하는 데이터베이스를 새로 고쳐야 할 수도 있습니다. 데이터베이스를 업데이트하려면 updatedb 명령을 사용하십시오. 이를 위해서는 수퍼유저 권한이 필요합니다.

[email protected]:~$ sudo updatedb

찾기

Linux에서 가장 자주 사용되는 명령 중 하나입니다. 다른 기준 외에 파일 이름, 권한, 사용자 ID, 그룹 ID, 크기, 파일 유형을 기반으로 파일을 검색하는 데 사용합니다.

현재 디렉토리에서 이름으로 파일을 검색하려면 -name 플래그 다음에 검색할 파일 이름을 사용하십시오.:

[email protected]:~$ find . -name a.txt
./myfiles/a.txt

디렉토리를 검색하려면 -type d 플래그를 사용하십시오.

[email protected]:~$ find . -type d
.
./.ssh
./myfiles
./.cache
./.gnupg
./.gnupg/private-keys-v1.d
./docker

20MB보다 큰 파일을 크기별로 검색하려면 -size 플래그를 사용하십시오.

[email protected]:~$ find . -size +20M
./docker/docker-ce-cli_5%3a19.03.12~3-0~ubuntu-bionic_amd64.deb
./docker/docker-ce_5%3a19.03.12~3-0~ubuntu-bionic_amd64.deb

시스템 컨트롤

이제 대부분의 Linux 배포판에서 systemd가 SysV init 프로세스를 대체했으므로 systemctl 명령을 사용하여 systemd 서비스 및 장치를 관리하십시오.

서비스를 시작하려면(예: apache2):

[email protected]:~$ sudo systemctl start apache2.service

서비스 접미사를 남길 수 있습니다.

서비스를 중지하려면:

[email protected]:~$ sudo systemctl stop apache2

서비스 상태를 보려면 systemctl status 명령을 사용하십시오. 다음 예제는 실행 중인 apache2 상태를 보여줍니다.

[email protected]:~$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Wed 2020-08-19 11:34:04 UTC; 2s ago
  Process: 25346 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 18202 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
  Process: 25536 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 25555 (apache2)
    Tasks: 55 (limit: 1024)
   CGroup: /system.slice/apache2.service
           ├─25555 /usr/sbin/apache2 -k start
           ├─25558 /usr/sbin/apache2 -k start
           └─25559 /usr/sbin/apache2 -k start

Aug 19 11:34:04 ubuntu18 systemd[1]: Starting The Apache HTTP Server...
Aug 19 11:34:04 ubuntu18 systemd[1]: Started The Apache HTTP Server.

ufw 명령

UFW – 복잡하지 않은 방화벽은 iptables용 프론트엔드를 사용하기 쉽습니다. Ubuntu 기반 배포판에서 기본적으로 사용할 수 있습니다. CentOS에서는 EPEL 저장소에서 ufw를 설치할 수 있습니다.

ufw를 활성화하려면:

$ sudo ufw enable

ufw 상태로 방화벽 상태 확인:

$ sudo ufw status
Status: active

기본 UFW 정책은 모든 나가는 트래픽을 허용하고 들어오는 모든 트래픽을 차단합니다.

다음 명령은 HTTP 포트에서 들어오는 트래픽을 허용합니다.

$ sudo ufw allow http
Rule added
Rule added (v6)

모든 포트에서 트래픽을 거부할 수 있습니다. 다음은 포트 21에서 트래픽을 차단하는 예입니다.

$ sudo ufw deny 21
Rule added
Rule added (v6)

저널 컨트롤

journalctl을 사용하여 systemd에서 수집한 로그를 봅니다. systemd는 바이너리 형식으로 중앙 위치에서 로그를 수집합니다. 이러한 로그를 보려면 다음 단계를 따르세요.

[email protected]:~$ sudo journalctl
-- Logs begin at Mon 2020-06-29 02:48:31 UTC, end at Wed 2020-08-19 15:07:59 UTC. --
Jun 29 02:48:31 ubuntu kernel: Linux version 5.3.0-1028-azure ([email protected]) (gcc version 7.5.0 (Ubuntu
Jun 29 02:48:31 ubuntu kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-5.3.0-1028-azure root=UUID=b0dd9d06-536e-41
Jun 29 02:48:31 ubuntu kernel: KERNEL supported cpus:
Jun 29 02:48:31 ubuntu kernel:   Intel GenuineIntel
...

대부분의 경우 로그를 역순으로 표시하는 것을 선호합니다. 즉, 최신 로그가 먼저 표시됩니다.

[email protected]:~$ sudo journalctl -r
-- Logs begin at Mon 2020-06-29 02:48:31 UTC, end at Wed 2020-08-19 15:10:16 UTC. --
Aug 19 15:10:16 ubuntu18 sudo[31263]: pam_unix(sudo:session): session opened for user root by ubuntu(uid=0)
Aug 19 15:10:16 ubuntu18 sudo[31263]:   ubuntu : TTY=pts/1 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/bin/journalc
Aug 19 15:10:11 ubuntu18 sudo[31213]: pam_unix(sudo:session): session closed for user root
Aug 19 15:07:59 ubuntu18 sudo[31213]: pam_unix(sudo:session): session opened for user root by ubuntu(uid=0)
Aug 19 15:07:59 ubuntu18 sudo[31213]:   ubuntu : TTY=pts/1 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/bin/journalc
Aug 19 15:07:56 ubuntu18 sudo[31183]: pam_unix(sudo:session): session closed for user root
Aug 19 15:06:47 ubuntu18 sudo[31183]: pam_unix(sudo:session): session opened for user root by ubuntu(uid=0)
...

예를 들어 mysql은 -u 플래그를 사용하여 특정 서비스의 로그를 보려면 다음을 수행합니다.

[email protected]:~$ sudo journalctl -u mysql
-- Logs begin at Mon 2020-06-29 02:48:31 UTC, end at Wed 2020-08-19 15:11:34 UTC. --
Aug 16 12:30:02 ubuntu18 systemd[1]: Starting MySQL Community Server...
Aug 16 12:30:03 ubuntu18 systemd[1]: Started MySQL Community Server.
Aug 19 15:03:27 ubuntu18 systemd[1]: Stopping MySQL Community Server...
Aug 19 15:03:29 ubuntu18 systemd[1]: Stopped MySQL Community Server.

죽이고 죽이고

런어웨이 프로세스를 종료하거나 일부 시스템 리소스를 해제해야 할 때 필요할 수 있습니다. kill with -l 플래그는 프로세스에 보낼 수 있는 모든 신호를 보여줍니다.

[email protected]:~$ kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
....

가장 일반적으로 사용되는 두 가지 신호는 SIGTERM 및 SIGKILL입니다. SIGKILL에는 -9를, SIGTERM에는 -15를 사용할 수도 있습니다. SIGTERM은 프로세스가 종료되기 전에 완료되도록 허용하므로 소프트 킬(soft kill)이라고 합니다. SIGKILL은 프로세스를 즉시 종료합니다. 다음은 예입니다.

모든 apache2 프로세스 나열

[email protected]:~$ ps aux|grep apache2
root      45521  0.0  0.5  78188  4688 ?        Ss   Aug08   0:03 /usr/sbin/apache2 -k start
www-data  45524  0.0  0.5 830480  4816 ?        Sl   Aug08   0:00 /usr/sbin/apache2 -k start
www-data  45525  0.0  0.7 830480  6856 ?        Sl   Aug08   0:00 /usr/sbin/apache2 -k start
ubuntu    70374  0.0  0.1  14852  1040 pts/0    S+   07:45   0:00 grep --color=auto apache2

프로세스 ID가 45525인 apache2 프로세스를 종료하려면:

[email protected]:~$ sudo kill -9 45525

다시 apache2 프로세스 목록을 봅니다.

[email protected]:~$ ps aux|grep apache2
root      45521  0.0  0.5  78188  4688 ?        Ss   Aug08   0:03 /usr/sbin/apache2 -k start
www-data  45524  0.0  0.5 830480  4816 ?        Sl   Aug08   0:00 /usr/sbin/apache2 -k start
ubuntu    70525  0.0  0.1  14852  1052 pts/0    S+   07:52   0:00 grep --color=auto apache2

killall을 사용하여 이름으로 프로그램을 종료하십시오. 즉, killall은 제어(상위) 프로세스와 모든 하위 프로세스를 종료합니다. 위의 예에서 apache2 프로세스의 모든 인스턴스를 종료하려면:

[email protected]:~$ sudo killall apache2

kill 및 killall을 주의해서 사용하십시오. 이러한 명령은 시스템을 불안정한 상태로 만들 수 있습니다.

IP

ip 명령은 최신 Linux 배포판에서 ifconfig를 대체합니다. 이를 사용하여 네트워크 인터페이스를 구성하고 표시합니다. 또한 IP 주소, 경로 및 인접 개체를 표시하고 수정하는 데 사용됩니다.

모든 네트워크 인터페이스에 대한 정보 표시:

[email protected]:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0d:3a:9b:88:d6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.4/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20d:3aff:fe9b:88d6/64 scope link 
       valid_lft forever preferred_lft forever

인터페이스를 올리거나 내리려면 ip link set dev 다음에 장치 이름을 사용하십시오. 예를 들어, eth0 인터페이스를 온라인으로 가져오려면:

[email protected]:~$ ip link set eth0 up

그리고 그것을 낮추려면:

[email protected]:~$ ip link set eth0 down

데이트

매우 일반적으로 사용되는 명령입니다. 여기에서 이 명령을 사용하는 몇 가지 흥미로운 방법을 살펴보겠습니다.

[email protected]:~$ date
Tue Aug 11 07:42:49 UTC 2020

다음 일요일 날짜를 보려면:

[email protected]:~$ date -d 'next sunday'
Sun Aug 16 00:00:00 UTC 2020

지난 일요일 날짜를 보려면:

[email protected]:~$ date -d 'last sunday'
Sun Aug  9 00:00:00 UTC 2020

-d 플래그 대신 –date를 사용할 수도 있습니다.

[email protected]:~$ date --date="last sunday"
Sun Aug  9 00:00:00 UTC 2020

6일 전 날짜를 보려면:

[email protected]ntu18:~$ date --date="6 days ago"
Wed Aug  5 08:06:37 UTC 2020

지금부터 6일 후 날짜:

[email protected]:~$ date --date="6 days"
Mon Aug 17 08:08:37 UTC 2020

날짜 출력 형식을 쉽게 제어할 수 있습니다. 다음은 예입니다.

[email protected]:~$ date '+%d-%B-%Y'
11-August-2020

요약

시스템 관리자로서 전 세계의 컴퓨팅 인프라를 계속 실행하십시오. 보안을 유지하면서 문제를 해결하고 시스템을 최적의 상태로 유지 및 유지해야 합니다.

이 명령이 유용하고 작업을 더 잘 수행하는 데 도움이 되기를 바랍니다.

다음은 일부 FTP/SFTP 클라이언트와 개발자 및 시스템 관리자를 위한 최고의 Vim 치트 시트입니다.