/ man

RHCSA: Understand and use essential tools - Locate, read, and use system documentation including man, info, and files in /usr/share/doc.

man man 페이지 mandb locate 명령어 rpm command yum command rhcsa-new redhat-new whatis command apropos command info command /usr/share/info updatedb command yum whatprovides command rpm -ql command which command whereis command PATH variable MANPATH variable
https://4am.kr/rhcsa-understand-and-use-essential-tools-locate-read-and-use-system-documentation-including-man-info-and-files-in-usr-share-doc/

RHCSA : 기본적인 툴 이해 및 사용 – man, info 및 /usr/share/doc 내의 파일을 포함한 시스템 문서를 검색, 읽기 및 사용

RHCSA 주제입니다. 아래 참조된 사이트를 번역 및 내용 추가하였습니다.

man 페이지

1. 커맨드(여기서는 ps 커맨드라고 가정)에 대한 정보를 얻고 싶다면, 다음과 같이 입력한다.
[root@server2 ~]# man ps

rhcsa-doc-test1-man-ps

2. 가끔 커맨드(여기서는 ps 커맨드라고 가정)에 대한 여러개의 man 페이지가 있을 수 있다. 이들을 출력하려면 다음과 같이 입력한다.
[root@server2 ~]# whatis ps
ps (1)               - report a snapshot of the current processes.
ps (1p)              - report process status
[root@server2 ~]# 
3. 만약에 해당 커맨드 이름에 대해 확실하지 않다면, 키워드를 검색해 볼 수 있다(여기서는 zip 커맨드라고 가정). 다음과 같이 입력한다.
[root@server2 ~]# apropos zip
bunzip2 (1)          - a block-sorting file compressor, v1.0.6
bzcmp (1)            - compare bzip2 compressed files
bzdiff (1)           - compare bzip2 compressed files
bzgrep (1)           - search possibly bzip2 compressed files for a regular e...
bzip2 (1)            - a block-sorting file compressor, v1.0.6
bzip2recover (1)     - recovers data from damaged bzip2 files
bzless (1)           - file perusal filter for crt viewing of bzip2 compresse...
bzmore (1)           - file perusal filter for crt viewing of bzip2 compresse...
funzip (1)           - filter for extracting from a ZIP archive in a pipe
gpg-zip (1)          - Encrypt or sign files into an archive
grubby (8)           - command line tool for configuring grub, lilo, elilo, y...
gunzip (1)           - compress or expand files
gzip (1)             - compress or expand files
mzip (1)             - change protection mode and eject disk on Zip/Jaz drive
unzip (1)            - list, test and extract compressed files in a ZIP archive
unzipsfx (1)         - self-extracting stub for prepending to ZIP archives
zforce (1)           - force a '.gz' extension on all gzip files
zip (1)              - package and compress (archive) files
zipcloak (1)         - encrypt entries in a zipfile
zipgrep (1)          - search files in a ZIP archive for lines matching a pat...
zipinfo (1)          - list detailed information about a ZIP archive
zipnote (1)          - write the comments in zipfile to stdout, edit comments...
zipsplit (1)         - split a zipfile into smaller zipfiles
[root@server2 ~]# 
4. 새 패키지가 설치될 때마다, 관련된 man 페이지가 추가된다. 하지만, 색인 데이터베이스가 곧바로 업데이트되지는 않는다. 하루에 한번씩 cron 커맨드에 의해 이 작업이 실행되기 때문이다(관련된 내용은 /etc/cron.daily/man-db.cron파일을 확인할 것). whatisapropos커맨드 사용을 위해 바로 색인 데이터베이스 업데이트를 하고 싶다면, 다음과 같이 입력한다.
[root@server2 ~]# mandb
Purging old database entries in /usr/share/man...
mandb: warning: /usr/share/man/man8/fsck.fat.8.manpage-fix.gz: ignoring bogus filename
Processing manual pages under /usr/share/man...
Updating index cache for path `/usr/share/man/man5'. Wait...done.
Checking for stray cats under /usr/share/man...
Checking for stray cats under /var/cache/man...
...
Purging old database entries in /usr/share/man/ko...
Processing manual pages under /usr/share/man/ko...
...
Processing manual pages under /usr/share/man/overrides...
Purging old database entries in /usr/share/man/en...
Processing manual pages under /usr/share/man/en...
Purging old database entries in /usr/local/share/man...
Processing manual pages under /usr/local/share/man...
2 man subdirectories contained newer manual pages.
61 manual pages were added.
0 stray cats were added.
0 old database entries were purged.
[root@server2 ~]# 

노트: RHEL 4/5/6에서 사용가능했던 makewhatis커맨드가 mandb커맨드로 대체되었음.

info 커맨드

1. 어떤 커맨드(여기서는 ipc로 가정)는 아래 커맨드를 통해 추가적인 문서들을 제공하기도 한다.
[root@server2 ~]# info ipc

rhcsa-doc-test2-info-ipc

2. 이와 같은 커맨드들을 찾아보려면, 다음과 같이 입력한다.
[root@server2 ~]# ls /usr/share/info
accounting.info.gz  find-maint.info.gz  info-stnd.info.gz   parted.info.gz
as.info.gz          find.info.gz        info.info.gz        pinentry.info.gz
bash.info.gz        gawk.info.gz        ld.info.gz          pinfo.info.gz
bc.info.gz          gawkinet.info.gz    libcdio.info.gz     rluserman.info.gz
binutils.info.gz    gettext.info.gz     libchewing.info.gz  sed.info.gz
chrony.info.gz      gnupg.info-1.gz     libgomp.info.gz     standards.info.gz
configure.info.gz   gnupg.info-2.gz     libidn.info.gz      tar.info-1.gz
coreutils.info.gz   gnupg.info.gz       liblouis.info.gz    tar.info-2.gz
cpio.info.gz        gprof.info.gz       make.info-1.gz      tar.info.gz
dc.info.gz          grep.info.gz        make.info-2.gz      time.info.gz
diffutils.info.gz   grub2-dev.info.gz   make.info.gz        wget.info.gz
dir                 grub2.info.gz       mtools.info.gz      which.info.gz
ed.info.gz          gzip.info.gz        nano.info.gz
enscript.info.gz    history.info.gz     nettle.info.gz
[root@server2 ~]# 

locate 커맨드

추가로 locate 커맨드는 find / -name커맨드와 비슷한 결과를 제공한다. 이 커맨드는 mlocate.db라고 불리는 전용 색인 데이터베이스를 사용한다. 이 데이터베이스는 cron에 의해 하루에 한 번 업데이트된다(/etc/cron.daily/mlocate파일을 통해 확인할 수 있다).

1. 특정 파일(여기서는 sysctl.conf파일로 가정)을 검색하고 싶다면, 다음과 같이 입력한다.
[root@server2 ~]# locate sysctl.conf
/etc/sysctl.conf
/etc/sysctl.d/99-sysctl.conf
/usr/share/man/man5/sysctl.conf.5.gz
[root@server2 ~]# 
2. cron에 의한 업데이트를 기다리지 않고 색인 데이터베이스를 업데이트하려면, 다음과 같이 입력한다.
[root@server2 ~]# updatedb
[root@server2 ~]# 

패키지 문서

또한, 특정 커맨드를 제공하는 패지키명을 찾는 방법을 잊으면 안된다(여기서는 mandb). 다음과 같이 입력한다.

[root@server2 ~]# yum whatprovides */mandb
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
RHELREPO/filelists_db                                    | 5.8 MB     00:00     
man-db-2.6.3-9.el7.x86_64 : Tools for searching and reading man pages
Repo        : RHELREPO
Matched from:
Filename    : /usr/bin/mandb



man-db-2.6.3-9.el7.x86_64 : Tools for searching and reading man pages
Repo        : @anaconda
Matched from:
Filename    : /usr/bin/mandb



[root@server2 ~]# 

노트: 이 커맨드는 로컬 뿐 아니라 원격의 현재 설정된 저장소까지 검색한다.

2. 패키지(여기서는 initscripts) 내의 어떤 단어에 대해 검색하고자 한다면(여기서는 sysctl.conf), 다음과 같이 입력한다.
[root@server2 ~]# rpm -ql initscripts | grep sysctl.conf
/etc/sysctl.conf
/etc/sysctl.d/99-sysctl.conf
[root@server2 ~]#
  • 노트1: locate커맨드를 사용하는 것이 더 빠르다.
  • 노트2: 만약 패키지가 아직 설치되지 않았다면, -qpl옵션을 완전한 경로와 함께 사용하면 된다.
  • 노트3: 마지막으로, 대부분의 패키지들은 자신만의 문서들을 /user/share/doc디렉토리에 가진다.
  • 노트4: 대부분의 SELinux 문서들은 더이상 기본적으로 설치되지 않으므로, 스스로 설치할 수 있어야 한다. 다행히도, SELinux man 페이지 배포하기 튜토리얼을 통해 따라할 수 있다.

기타 유용한 커맨드들

또한, 다양한 커맨드들이 도움을 줄 수 있다.

1. which 커맨드는 PATH 환경 변수와 관련된 커맨드의 시스템 경로를 알려준다.
[root@server2 ~]# which mandb
/usr/bin/mandb
[root@server2 ~]# 
2. where 커맨드의 시스템 경로, 관련된 man 페이지 파일과 시스템에 이 이름으로 알려진 다른 파일들도 표시한다. 이 출력은 PATHMANPATH 환경 변수에 따라 달라질 수 있다.
[root@server2 ~]# whereis ssh
ssh: /usr/bin/ssh /etc/ssh /usr/share/man/man1/ssh.1.gz
[root@server2 ~]#