본문 바로가기

CentOS/Study

[Study16]Linux 알면 좋은 유용한 관리 명령어 - wc / awk / su

반응형

wc 명령어

파일 내의 문자 수, 단어 수 그리고 라인 수를 확인하고자 할 때는 wc 명령어를 사용합니다.

이 명령어를 사용하여 프로세스의 수, 시스템에 설치된 패치의 수 등을 확인 할 수 있습니다.

또한 wc 명령어의 -l 옵션은 쉘 스크립트나 파일에 대한 무결성 체크 등 많은 곳에서 활용이 가능합니다.

 

[명령어 형식]

# wc /etc/passwd
# wc –l /etc/passwd
# wc –w /etc/passwd
# wc –c /etc/passwd

 

[명령어 옵션]

옵션 설명
-c 문자 수만 출력
-l 라인 수만 출력
-w 단어 수만 출력
-L 가장 긴 줄 한 줄만 출력

 

wc 명령어 사용법

다음 코드 블록은 Bash에서 wc 명령어를 사용하는 방법을 보여줍니다.

구체적으로, wc와 함께 사용할 수 있는 네 가지 다른 옵션을 사용하여 파일에서 다른 유형의 정보를 얻는 방법을 보여줍니다.

 

# wc /etc/passwd
59    104   2902    /etc/passwd
# wc -l /etc/passwd
59       /etc/passwd
# wc -w /etc/passwd /* 단어수 */
104       /etc/passwd
# wc -c /etc/passwd /* 바이트 수 */
2902      /etc/passwd

첫 번째 옵션인 wc /etc/passwd은 파일의 라인 수, 단어 수 및 바이트 수를 반환합니다.

두 번째 옵션인 wc -l /etc/passwd은 파일의 라인 수만 반환합니다.

세 번째 옵션인 wc -w /etc/passwd은 파일의 단어 수만 반환합니다.

마지막으로, 네 번째 옵션인 wc -c /etc/passwd은 파일의 바이트 수만 반환합니다.

전반적으로, wc 명령어는 Linux 또는 Unix 환경에서 파일에 대한 정보를 얻는 데 유용한 강력한 도구입니다.

다양한 옵션을 통해 검색하는 정보의 유형에 대한 유연성을 제공하여 다양한 목적에 적합한 유용한 도구입니다.

 

시스템 사용자 수 확인

다음 명령어는 "/etc/passwd" 파일의 라인 수를 세는 데 사용됩니다

 

# cat /etc/passwd | wc -l
59

해당 명령은 "/etc/passwd" 파일의 내용을 "wc" 명령으로 파이핑하여 파일의 라인 수를 계산하고 결과를 반환합니다.

동일한 결과를 얻는 또 다른 방법은 다음 명령을 실행하는 것입니다:

 

# wc -l /etc/passwd
59 /etc/passwd

해당 명령은 "/etc/passwd" 파일의 라인 수를 직접 계산하고 파일 이름과 함께 결과를 표시합니다.

중요한 점은 "/etc/passwd" 파일이 시스템 사용자에 대한 정보를 포함하는 데이터베이스 파일이라는 것입니다.

이 파일은 시스템에서 사용자 인증 및 다양한 리소스에 대한 액세스 제어를 위해 사용됩니다.

이 파일의 라인 수는 시스템에 등록된 사용자 수의 지표가 될 수 있습니다.

 

실행중인 프로세스의 수 확인

# ps -ef | wc -l
98
해당 숫자에서 제일 상단위 헤더를 제외하고 읽는다.

ps -ef | wc -l 명령어는 현재 실행 중인 모든 프로세스의 개수를 의미합니다.

이 명령어는 시스템의 부하나 사용률을 파악하는 데 도움을 줍니다. 만약 이 숫자가 높다면, 시스템의 성능에 영향을 미칠 수 있기 때문에 조치가 필요합니다.

예를 들어, 불필요한 프로세스를 종료하거나 시스템 자원을 추가할 수 있습니다.

이 명령어는 또한 시스템 성능 모니터링과 디버깅에도 유용합니다.

또한, ps -ef 명령어를 통해 현재 실행 중인 프로세스의 자세한 정보를 확인할 수 있습니다.

이 명령어는 프로세스 ID(PID), 부모 프로세스 ID(PPID), CPU 사용량, 메모리 사용량, 프로세스 상태 등을 제공합니다.

이 정보는 시스템의 문제를 해결하는 데 도움이 됩니다.

종종 ps -ef | grep 명령어를 사용하여 원하는 프로세스만 필터링합니다.

이를 통해 원하는 프로세스를 쉽게 찾을 수 있습니다.

최종적으로, 이 명령어는 Linux 또는 Unix 환경에서 가장 일반적으로 사용되는 명령어 중 하나입니다.

시스템 관리자나 개발자는 이 명령어를 잘 이해하고, 시스템의 성능을 최적화하는 데 활용할 수 있어야 합니다.

 

설치된 패키지 수 확인

# rpm -qa | wc –l
1451

rpm -qa | wc -l 명령을 사용하면 시스템에 설치된 패키지의 총 개수를 확인할 수 있습니다.

이는 설치된 패키지 수를 추적하는 데 유용한 측정 항목일 수 있지만, 패키지 수가 시스템의 전반적인 건강 상태나 성능을 반드시 나타내는 것은 아닙니다.

패키지의 품질, 패키지 간의 의존성, 구성 방식 등 다른 요인들이 모두 시스템의 안정성에 영향을 미칠 수 있습니다.

또 다른 중요한 것은 위의 명령은 설치된 패키지 수만 표시한다는 점입니다.

사용 가능한 패키지 수를 표시하지 않습니다.

사용자의 요구에 따라 다른 명령이나 도구를 사용하여 패키지를 관리할 수 있습니다.

yum이나 apt-get과 같은 명령을 사용할 수 있습니다.

rpm 명령 외에도, 시스템을 모니터링하고 관리하기 위해 사용할 수 있는 많은 유용한 명령이 있습니다.

예를 들어, ps 명령을 사용하면 시스템에서 실행 중인 프로세스에 대한 정보를 표시할 수 있습니다.

이 정보에는 프로세스 ID(PID), 부모 프로세스 ID(PPID), CPU 및 메모리 사용률 등이 포함됩니다.

또한, df 명령을 사용하여 디스크 사용량을 모니터링하고 디스크 공간 문제를 식별할 수 있습니다.

전반적으로 Linux 및 Unix 환경에서는 시스템을 모니터링하고 관리하기 위한 많은 강력한 도구와 명령이 제공됩니다.

이러한 도구와 명령을 익힘으로써 시스템의 성능을 깊이 이해하고 원활하고 효율적으로 작동되도록 보장할 수 있습니다.

 

시스템 성능/사용량 카운트 수집: Data Gathering

Apache Webserver
- apache 1.3.X(Process 방식)
- apache 2.X(Thread 방식)

Web Client ------------> Web Server(www.daum.net)
<http://www.daum.net>      httpd
# yum -y install httpd
# systemctl restart httpd
# systemctl status httpd
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)
   Active: active (running) since 월 2018-03-05 14:54:49 KST; 12s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 9019 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
....(중략)
# ps -ef | grep httpd
root       9019      1  0 14:54 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     9020   9019  0 14:54 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     9021   9019  0 14:54 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     9022   9019  0 14:54 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     9023   9019  0 14:54 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     9024   9019  0 14:54 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND

위 코드는 시스템에서 실행 중인 httpd 프로세스를 보여줍니다.

모든 프로세스는 -DFOREGROUND 플래그와 함께 실행 중이며, 이는 프로세스가 전면에서 실행되고 콘솔에 출력을 기록할 것임을 의미합니다.

 

# ps -ef | grep httpd | wc -l > apache.count
# cat apache.count
9

위 코드는 시스템에서 실행 중인 httpd 프로세스의 수를 apache.count라는 파일에 저장합니다.

wc -l 명령은 이전 명령의 출력 행 수를 세는 데 사용됩니다.

이전 명령에는 httpd 프로세스 수도 포함되어 있으므로, cat apache.count의 출력은 현재 시스템에서 실행 중인 httpd 프로세스의 수가 9임을 나타냅니다.

 

디스크 사용량을 모니터링

# df –k
파일시스템        1K-블록    사용가능   사용중   용량    마운트 위치
/dev/sda8       58223848 4624432  53599416   8% /
devtmpfs          926916       0    926916   0% /dev
tmpfs             935380      84    935296   1% /dev/shm
tmpfs             935380    9132    926248   1% /run
tmpfs             935380       0    935380   0% /sys/fs/cgroup
/dev/sda7         508588   25852    482736   6% /home
/dev/sda6         508588   25760    482828   6% /data4
/dev/sda5         508588   25760    482828   6% /data3
/dev/sda3         508588   25760    482828   6% /data2
/dev/sda2         508588   25760    482828   6% /data1

시스템의 디스크 사용량을 보여줍니다. df -k 명령어는 시스템의 모든 파일시스템의 사용량을 보여줍니다.

출력은 파일시스템의 이름, 사용중인 1KB 블록 수, 사용 가능한 1KB 블록 수, 사용 용량 및 마운트 위치를 보여줍니다.

 

# df –k /
파일시스템           1K-블록      사용가능   사용중   용량    마운트 위치
/dev/sda8       58223848 4624432  53599416   8% /

df -k / 명령어는 루트 파일시스템의 디스크 사용량을 보여줍니다.

출력은 df -k와 유사하지만 루트 파일시스템에 관련된 정보만 보여줍니다.

마지막 줄은 마운트 위치 및 사용 용량의 백분율을 보여줍니다.

 

# df -k / | tail -1
/dev/sda8       58223848 4624432  53599416   8% /

df -k / 명령어의 출력에서 마지막 줄만 추출하기 위해 tail -1을 사용합니다.

이 명령은 루트 파일 시스템의 디스크 사용량을 보여주는 마지막 줄을 추출합니다.

출력의 마지막 열에는 사용 용량의 백분율이 표시됩니다.

 

# df -k / | tail -1 | awk '{print $5}' > df.count
# cat df.count
8%

df -k / 명령어의 출력에서 사용 용량의 백분율만 추출하기 위해 tail -1을 사용한 다음 awk '{print $5}'를 사용합니다.

이 명령은 출력에서 다섯 번째 열만 표시합니다.

이 열은 사용 용량의 백분율을 보여줍니다.

출력은 df.count라는 파일로 리디렉션됩니다.

 

# df -k / | tail -1 | awk '{print $5}' | awk -F% '{print $1}' > df.count
# cat df.count
8

백분율 기호 없이 사용 용량의 백분율 숫자만 표시하기 위해 df -k / 명령어의 출력에서 사용 용량의 백분율만 추출합니다.

이 명령어는 tail -1 명령어를 사용하여 출력의 마지막 줄을 추출한 다음 awk '{print $5}' 명령어를 사용하여 출력의 다섯 번째 열만 표시합니다.

출력은 다시 awk -F% '{print $1}' 명령어로 전달되어 백분율 기호를 제거하고 사용 용량의 백분율 숫자만 표시됩니다.

출력은 df.count라는 파일로 리디렉션됩니다.

 

awk 명령어

awk는 라인을 받아와서 구분자를 통해 구분하고 print 명령으로 출력하게 된다.

awk 명령어를 사용하기 전에 꼭 알아두어야 할 것은 기본적으로 탭 또는 공백으로 구분되는 각각의 단어들을 하나의 변수로 처리한다는 것이다.

탭과 공백을 무시하고 특정문자 콜론(:)이나, 세미콜론(;) 콤마(,) 등을 구분문자로 사용하고자 한다면 -F 옵션을 사용하면 된다.

awk 명령어는 라인을 받아와서 구분자를 통해 구분하고 print 명령으로 출력합니다.

awk 명령어를 사용하기 전에 알아두어야 할 것은 기본적으로 탭 또는 공백으로 구분되는 각각의 단어들을 하나의 변수로 처리한다는 것입니다.

탭과 공백을 무시하고 특정문자 콜론(:)이나, 세미콜론(;) 콤마(,) 등을 구분문자로 사용하고자 한다면 -F 옵션을 사용하면 됩니다.

 

다음은 awk 명령어의 자주 사용하는 옵션입니다.

옵션 설명
-c 문자 수만 출력
-l 라인 수만 출력
-w 단어 수만 출력
-L 가장 긴 줄 한 줄만 출력

 

옵션 설명
-F 필드 구분자를 지정합니다.
-v 변수를 지정합니다.
-f 스크립트 파일을 지정합니다.

위 표는 선택한 텍스트에서 나열된 wc 명령어의 옵션과 설명을 나타냅니다.

awk 명령어는 다양한 용도로 사용됩니다. 예를 들어, 다음과 같은 경우에 사용됩니다.

  1. 특정 칼럼만 출력하기
  2. 특정 필드의 값으로 조건 처리하기
  3. 파일 내부에서 특정 패턴 찾기
  4. 특정 값의 빈도수를 계산하기
  5. 텍스트 파일에서 데이터 추출하기

다음은 awk 명령어를 사용하여 시스템에서 실행 중인 httpd 프로세스 수를 구하는 예시입니다.

 

# ps -ef | grep httpd | wc -l > apache.count
# cat apache.count
9

위 코드는 시스템에서 실행 중인 httpd 프로세스의 수를 apache.count라는 파일에 저장합니다.

wc -l 명령은 이전 명령의 출력 행 수를 세는데 사용됩니다.

이전 명령에는 httpd 프로세스 수도 포함되어 있으므로, cat apache.count의 출력은 현재 시스템에서 실행 중인 httpd 프로세스의 수가 9임을 나타냅니다.

다음은 awk 명령어를 사용하여 시스템의 디스크 사용량을 모니터링하는 예시입니다.

 

# df -k / | tail -1 | awk '{print $5}' | awk -F% '{print $1}' > df.count
# cat df.count
8

df -k / 명령어의 출력에서 사용 용량의 백분율 숫자만 표시하기 위해 tail -1 명령어를 사용한 다음 awk '{print $5}'를 사용하여 출력에서 다섯 번째 열만 표시합니다.

출력은 다시 awk -F% '{print $1}' 명령어로 전달되어 백분율 기호를 제거하고 사용 용량의 백분율 숫자만 표시됩니다.

출력은 df.count라는 파일로 리디렉션됩니다.

awk 명령어를 사용하면 다양한 작업을 수행할 수 있습니다.

awk 명령어의 자세한 사용법은 awk 매뉴얼을 참고하시기 바랍니다.

 

su 명령어

su 명령어는 리눅스 환경에서 매우 강력한 명령어 중 하나입니다.

이 명령어를 사용하면 하나의 사용자 계정에서 다른 사용자 계정으로 전환하여 그 사용자의 권한으로 작업할 수 있습니다. 이는 여러 사용자들이 하나의 시스템에서 작업을 수행하는 경우에 매우 유용합니다.

다른 사용자의 권한으로 작업할 때는, 해당 사용자의 권한으로 실행 가능한 명령어와 파일에만 접근할 수 있습니다.

이를 통해 보안성이 높아지고, 사용자 별로 권한을 지정하여 자원에 대한 접근을 제어할 수 있습니다.

su 명령어는 대부분의 리눅스 배포판에서 기본적으로 설치되어 있습니다.

이 명령어는 root 권한으로 실행해야 하며, 일반적으로 root 암호를 입력하여 실행합니다.

그러나 root 계정이 아닌 다른 계정으로 전환하고자 할 경우, 전환할 사용자 계정명을 명령어 뒤에 입력하면 해당 계정으로 전환됩니다.

su 명령어를 이해하고 사용하는 데에는 몇 가지 중요한 사항이 있습니다.

먼저, 전환하고자 하는 사용자 계정의 암호가 필요합니다.

이는 전환하려는 사용자 계정의 암호와 일치해야 합니다.

따라서 su 명령어를 사용하여 다른 사용자로 전환하려면 해당 사용자와 암호를 미리 알고 있어야 합니다.

또한 su 명령어를 사용하여 다른 사용자로 전환하면, 전환한 사용자의 환경 변수와 쉘 환경이 적용됩니다.

그러나 '-' 옵션을 함께 사용하면, 새로운 로그인 세션을 시작하여 전환한 사용자의 초기 쉘 환경 변수와 설정을 사용할 수 있습니다.

마지막으로, su 명령어는 보안상의 이유로 일반 사용자 계정에서는 사용할 수 없습니다.

대부분의 리눅스 배포판에서는 이 명령어를 사용할 수 있는 권한이 root 계정에게만 부여되어 있습니다.

su 명령어를 적절히 이해하고 사용하면, 리눅스 시스템에서 보안성을 높이고 작업 효율을 높일 수 있습니다.

이 명령어를 사용하여 여러 사용자 간에 작업을 공유하고, 보안을 강화하는 등의 다양한 용도로 활용할 수 있습니다.

 

[명령어 형식]

# su [fedora]
# su - [fedora]

 

su 명령어의 전환 형식 실습

Linux 환경에서 파일 시스템을 탐색하고 사용자 액세스 권한을 확인하는 데 일반적으로 사용되는 일련의 bash 명령어를 보여줍니다.

각 명령은 특정 목적을 위해 사용되며, 특정 순서로 실행되어 특정 목표를 달성합니다.

 

# cd /etc 
# pwd
/etc

첫 번째 명령은 cd /etc이며 파일 시스템의 루트 디렉터리로 전환하는 데 사용됩니다.

이 명령 다음에는 pwd가 실행되며 현재 작업 디렉토리를 출력하는 데 사용됩니다.

이 경우 현재 작업 디렉토리는 /etc입니다.

 

# su fedroa 
$ id
uid=1001(fedora) gid=1001(fedora) groups=1001(fedora)

다음으로 su fedroa 명령이 실행됩니다.

이 명령은 "fedroa" 사용자 계정으로 전환하는 데 사용됩니다.

사용자가 전환되면 id 명령이 사용되어 사용자 ID가 표시됩니다.

이 명령의 출력은 사용자 ID가 uid=1001(fedora) gid=1001(fedora) groups=1001(fedora)임을 보여줍니다.

 

$ pwd
/etc
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
$ exit 

# cd /etc 
# pwd
/etc

사용자 ID를 확인한 후 exit 명령을 사용하여 사용자가 다시 루트 디렉터리로 전환됩니다.

그런 다음 cd /etc 및 pwd 명령이 다시 실행되어 사용자가 루트 디렉터리로 전환되었는지 확인합니다.

 

# su – fedora 
$ id
uid=1001(fedora) gid=1001(fedora) groups=1001(fedora)

다음 명령 집합은 "fedora" 사용자 계정으로 전환하는 데 사용됩니다.

su – fedora 명령은 "fedora" 사용자 계정으로 전환하고 새 로그인 세션을 시작하는 데 사용됩니다.

그런 다음 id 명령이 실행되어 사용자 ID가 표시됩니다.

이 명령의 출력은 사용자 ID가 uid=1001(fedora) gid=1001(fedora) groups=1001(fedora)임을 보여줍니다.

 

$ pwd
/home/fedora
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/fedora/.local/bin:/home/fedora/bin

사용자 ID를 확인한 후 cd 명령을 사용하여 홈 디렉터리로 이동합니다.

그런 다음 pwd 명령이 실행되어 현재 작업 디렉토리인 /home/fedora가 표시됩니다.

마지막으로 echo $PATH 명령이 사용되어 시스템의 PATH 변수가 표시됩니다.

이 명령의 출력은 시스템의 PATH 변수에 /usr/local/bin, /bin, /usr/bin, /usr/local/sbin, /usr/sbin, /home/fedora/.local/bin 및 /home/fedora/bin 디렉터리가 포함되어 있음을 보여줍니다.

 

$ exit 
#

사용자는 exit 명령을 사용하여 터미널에서 종료합니다.

전반적으로 이러한 명령은 Linux 환경에서 다른 사용자 계정 간 전환하는 방법과 파일 시스템을 탐색하는 방법을 보여줍니다.

 

fedora 사용자가 다른 사용자로 전환하는 경우

이 문서에서는 su 명령어를 사용하여 리눅스 환경에서 다른 사용자로 전환하는 방법을 알아보겠습니다.

su 명령어는 root 계정이 아닌 다른 사용자로 전환하는 데 사용됩니다.

다른 사용자로 전환하고자 할 경우 해당 사용자 계정명을 명령어 뒤에 입력하면 됩니다.

이때, 해당 사용자의 암호가 필요합니다.

예를 들어, su fedora 명령어를 사용하면 "fedora" 사용자 계정으로 전환됩니다.

이때, "fedora" 사용자의 암호가 필요합니다.

su 명령어를 사용할 때, 전환한 사용자의 환경 변수와 쉘 환경이 적용됩니다.

그러나 '-' 옵션을 함께 사용하면, 새로운 로그인 세션을 시작하여 전환한 사용자의 초기 쉘 환경 변수와 설정을 사용할 수 있습니다.

다만, su 명령어는 root 계정에게만 부여된 권한으로, 일반 사용자 계정에서는 사용할 수 없습니다.

예제를 통해 su 명령어 사용 방법을 살펴보겠습니다.

 

# ssh fedora@localhost
fedora@localhost's password: (fedora)
Last login: Wed Jan  8 12:34:36 2014 from localhost.localdomain
-> 암호 입력

ssh 명령어를 사용하여 "fedora" 사용자로 로그인합니다.

 

$ cat /etc/shadow
cat: /etc/shadow: Permission denied

"fedora" 사용자로는 /etc/shadow 파일의 내용을 확인할 수 없습니다.

 

$ ls -l /etc/shadow
---------- 1 root root 1276  3월  5 14:54 /etc/shadow

ls 명령어로 /etc/shadow 파일의 권한을 확인해보면, 해당 파일에 대한 접근 권한이 root 계정에게만 부여되어 있음을 알 수 있습니다.

 

$ su –        ($ su - root)
Password: (redhat)
-> root 사용자의 암호 입력

su 명령어를 사용하여 root 계정으로 전환합니다.

 

# id
uid=0(root) gid=0(root) groups=0(root)

id 명령어를 사용하여 현재 사용자의 ID를 확인합니다.

이때, root 계정으로 전환되어 있음을 확인할 수 있습니다.

 

# cat /etc/shadow
-> 파일 내용 확인

root 계정으로 전환되어 /etc/shadow 파일을 확인할 수 있습니다.

 

# exit
$ exit
#

exit 명령어를 사용하여 root 계정에서 로그아웃하고, 다시 "fedora" 사용자로 전환합니다.

su 명령어를 적절히 이해하고 사용하면, 리눅스 시스템에서 보안성을 높이고 작업 효율을 높일 수 있습니다.

이 명령어를 사용하여 여러 사용자 간에 작업을 공유하고, 보안을 강화하는 등의 다양한 용도로 활용할 수 있습니다.

반응형