4.3 프로세스 제어    [gdoc]

쉘에서는 프로세스를 작업(job)이라는 단위로 관리하는데 작업은 포그라운드 (foreground)백그라운드 (background) 두 가지 방식으로 동작한다. 포그라운드는 작업이 시작되고 종료되는 시점까지 다른 쉘 명령어를 수행할 수 없고 대기하는 방식을 말한다. 반면 백그라운드로 작업을 수행하면 동시에 다른 명령어들을 실행시킬 수 있다. 이렇게 동시에 여러 명령어들을 실행시키는 것을 멀티태스킹(multi-tasking)이라고 한다.


쉘에서 작업을  제어하기 위한 명령어들을 다음 표에 정리하였다. 아래 표에서 JID는 jobs 명령으로 확인할 수 있는 작업의 고유 번호이다.


문법

동작

비고

실행명령 &

실행명령을 백그라운드에서 수행한다.


ps

프로세스의 리스트(전 절 참조)


jobs

백그라운드 프로세스 리스트


CTRL-Z

포그라운드 작업을 일시 중지한 후 백그라운드로 밀어 넣는다.


CTRL-C

포그라운드 작업을 정지(종료)


%JID

백그라운드 프로세스는 고유번호(JID)가 매겨지는데 (fg, bg, kill 명령에서) 그것을 참조하기 위해서 번호 앞에 %를 붙인다.


fg %JID

백그라운드 작업을 포그라운드로 올린다.


bg %JID

일시 정지된 백그라운드 작업을 재시작


kill PID / %JID

kill -KILL PID / %JID

kill -STOP PID / %JID

kill -CONT OID / %JID

프로세스를 종료.

프로세스 강제  종료 (kill -9 PID)

백그라운드 프로세스 실행 일시 정지

정지된 백그라운드 프로세스 재시작




bg %JID

pkill CMD

명령어(CMD)로 실행된 프로세스 종료



어떤 명령을 처음부터 백그라운드로 실행하고자 한다면 끝에 ‘&’를 붙이면 된다.


pi@raspberrypi:~ $ sleep 100&

이렇게 하면 ‘sleep 100’ 명령은 즉시 백그라운드  실행 모드로 들어가고 쉘에서 다른 일을 처리할 수 있다.

jobs는 백그라운드 프로세스 리스트를 표시하는 명령어이다.


pi@raspberrypi:~ $ jobs
[1]-  Running                 sleep 100 &
[2]+  Running                 sleep 200 &

리스트의 맨 앞의 숫자가 작업의 고유 번호(JID)이고 그 다음 실행여부(Running/Stopped)가 표시되며 실행한 명령어가 이어서 나타난다.

포그라운드 작업은 ctrl+c를 누르면 대부분 종료된다. ctrl+c는 인터럽트 신호를 포그라운드 작업에 전달한다. 프로세스는 기본적으로 인터럽트 신호를 받으면 종료하도록 되어있다.


만약 포그라운드에서 어떤 작업을 수행중에 ctrl-z를 누르면 중지되고 쉘로 빠져나오게 된다. 이럴 때 jobs 명령어로 확인하면 Stopped 로 표시되고 이 작업을 백그라운드에서 재시작하려면 bg 명령을 내리면 된다.


pi@raspberrypi:~ $ sleep 200
^Z
[1]+  Stopped                 sleep 200
pi@raspberrypi:~ $ jobs
[1]+  Stopped                 sleep 200
pi@raspberrypi:~ $ bg %1
[1]+ sleep 200 &
pi@raspberrypi:~ $ jobs
[1]+  Running                 sleep 200 &
pi@raspberrypi:~ $ kill -STOP %1
[1]+  Stopped                 sleep 200

위에서 보듯이 정지된 백그라운드 프로세스를 백그라운드 상태에서 다시 시작하려면
‘kill -STOP %N’명령을 주면 된다.

프로세스를 정상적으로 종료하기 위해서는 ‘kill’ 명령을 이용하면 된다. 그리고 좀비 프로세스를 강제로 종료하기 위해서는 ‘kill -KILL’ 을 이용하면 된다.

Posted by 살레시오
,

4.2 프로세스 목록 확인   [gdoc]

ps 명령어로 프로세스의 목록을 확인할 수 있다.


~$ ps


아무런 옵션을 주지 않으면 현재 터미널에 관련된 프로세스들의 간략한 정보를 보여준다.  좀 더 자세한 정보를 알고 싶다면 -f 를 붙인다.


~$ ps -f


시스템의 모든 프로세스 리스트를 보고 싶다면 -e 옵션을 주면 된다.

~$ ps -e

~$ ps -ef


여기에서 알아두어야 할 개념들은 다음과 같다.


[표] ps -f 명령으로 나타나는 항목들의 의미

항목

의미

UID

프로세스의 실행/소유자 아이디

PID

프로세스의 고유 번호(Process Identification Number)

PPID

부모 프로세스의 PID (Parent PID)

C

프로세스 우선순위

STIME

프로세스가 시작된 시간

TTY

프로세스와 연결된 터미널

TIME

실행에 걸린 시간

CMD

프로세스를 생성하는데 내린 명령


만약 모든 프로세스의 트리를 보고 싶다면 pstree 명령을 내리면 된다.


pi@raspberrypi:~ $ pstree
systemd─┬─ModemManager─┬─{gdbus}
       │              └─{gmain}
       ├─avahi-daemon───avahi-daemon
       ├─bluetoothd
       ├─

이것을 보면 systemd(PID:1)프로세스가 모든 프로세스의 부모(조상)이라는 것을 알 수 있다.

top 명령은 주기적을 현재 실행중인 프로세스의 목록을 보여준다. ps, pstree 명령과 달리 CPU나 메모리 점유율이 높은 프로세스이 순으로 정렬해서 보여주며 주기적으로 최신 정보로 갱신해 준다.


pi@raspberrypi:~ $ top
top - 21:59:46 up 44 min,  3 users,  load average: 0.00, 0.06, 0.14
Tasks: 170 total,   1 running, 169 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.1 us,  0.8 sy,  0.0 ni, 96.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:    947740 total,   662164 used,   285576 free,    23600 buffers
KiB Swap:   102396 total,        0 used,   102396 free.   362252 cached Mem

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 680 root      20   0  140504  50124  29596 S   1.7  5.3   0:48.91 Xorg
1091 pi        20   0    5740   2648   2180 S   1.0  0.3   0:23.97 top
1352 pi        20   0    5592   2488   2124 S   1.0  0.3   0:17.16 top

이 결과에서 보면 Xorg 프로세스가 시스템 자원을 가장 많이 사용하고 있다는 것을 알 수 있다.

Posted by 살레시오
,

리눅스 프로세스(process)란   [gdoc]

프로세스(prcess)란 현재 실행 중인 프로그램을 의미한다. 리눅스는 여러 개의 프로그램을 동시에 실행할 수 있으며 이것을 다중실행(multi-tasking)이라고 한다.


하나의 명령이 실행하기 위해서 하나 또는 여러 개의 프로세스가 생성되어 수행된다. 프로세스 간에는 부모-자식 관계가 있는데 부모가 자식을 생성하고 자식이 또 자신의 자식을 생성하는 등 프로세스들 사이에 트리(tree) 관계가 형성한다. 예를 들어 쉘이 실행되면 이 자체로 프로세스이고 쉘 안에서  명령이 실행되면 쉘-프로세스의 자식 프로세스가 생성된다.


프로세스들은 각기 고유한 번호가 있으며 이를 PID(Process Identification Number)라고 한다. 데비안 리눅스가 부팅될 때에는 모든 프로세스의 최상위 프로세스인 systemd (PID는 1)이 생성되고 모든 프로세스들은  이 1번 프로세스의 자식 프로세스들이다. 부모 프로세스의 PID를 줄여서 PPID라고 한다.


프로세스를 분류하면 데몬(daemon), 자동 프로세스, 상호작용 프로세스  등으로 분류할 수 있다.

4.1.1 데몬(daemon)

데몬은 항상 백그라운드로 실행되는 프로세스이며 대부분 부팅시에 자동으로 시작된다. 데몬은 평수에 대기 상태로 서비스 요청을 기다리다가 요청이 들어오면 해당 서비스를 제공한다. 프로세스이름 끝에 보통 ‘d’가 붙어있으며 예를 들면 네트워킹 데몬인 xinetd 이다. 이 프로세스는 부팅시에 실행되고 백그라운드에서 대기하다가 ftp 클라이언트 같은 네트워크 프로그램이 연결을 요구할 때까지 기다린다.

4.1.2 자동 프로세스

자동 혹은 배치(batch) 프로세스는 터미널과 연결되어 있지는 않고 스풀러(spooler)영역에 순서대로 저장되어 저장된 순서대로 실행을 기다리는 프로세스이다. 이 프로세스는 다음과 같이 두 경우에 실행된다.

  • 특정 날짜/시간에 at 명령을 이용하여 실행된다.

  • 시스템 자원이 실행하기에 충분한 경우 batch 명령에 의해 실행된다.

4.1.3 상호작용 프로세스

이것은 터미널에서 시작되고 제어되는 프로세스로서 시스템에 접속한 사용자가 상호작용 프로세스를 시작하게 된다. 즉, 자동으로 시스템에서 실행되지 않는 프로세스이다. 포그라운드에서 실행되는 동안은 다른 프로그램을 실행할 수 없다. 또한 백그라운드로 실행을 밀어 넣을 수도 있으며 백그라운드에서 실행되는 동안에 터미널에 다른 명령을 입력할 수 있다.  


less 명령을 실행한 경우 less가 시작된 이후에는 터미널의 입력은 less로 전달되며 정해진 명령만이 less에서 효과를 발휘하고 나머지는 무시된다. 하지만 백그라운드로 밀어 넣는다면 less명령이 여전히 수행되고 있는 동안에도 다른 작업을 수행할 입력이 가능해진다.


쉘은 ‘job control’ 기능을 제공하며 이것을 이용하면 사용자는 여러 개의 프로세스를 제어할 수 있다. 특정 프로세스를 포그라운드 혹은 백그라운드로 지정할 수 있으며 실행을 멈출 수도 있고 재시작할 수도 있다.


백그라운드에서 프로세스를 실행하는 경우는 사용자 입력이 필요치 않으면서 시간이 오래 걸리는 일을 수행할 때 유용하다. (GUI환경에서는 터미널을 얼마든지 더 열 수 있으므로 큰 의미가 없을 수 있다.) 백그라운드로 명령을 실행하고자 할 경우 명령어 끝에 ‘&’를 붙인다.


~$ sleep 100 &
~$ _

이 명령은 sleep 100을 백그라운드에서 수행하라는 것이다. 따라서 그 즉시로 다른 명령을 내릴 수 있다.

4.1.4 부모 프로세스 / 자식 프로세스

어떤 프로세스가 실행 도중에 자식 프로세스를 생성할 수 있다. 자식 프로세스는 작업이 끝나면 부모 프로세스에게 결과를 돌려주고 종료된다. 모든 프로세스의 조상 프로세스는 1번 (systemd) 프로세스이다.

4.1.5 고아 프로세스 /좀비 프로세스

고아프로세스는 자식 프로세스가 종료되지 않았는데 부모 프로세스가 종료된 경우 생성된다. 이경우 1번 프로세스가 그 자식프로세스를 승계하여 고아 프로세스를 종료할 수 있도록 해준다.

좀비 프로세스는 실제 동작이 종료되었는데도 동작 중인 프로세스 목록에 자리를 차지하고 있는 경우이다. 자식 프로세스의 종료 신호를 부모 프로세스가 제대로 처리하지 않은 경우에 발생한다. 잘못 작성된 프로그램으로 인해서 좀비 프로세스가 증가한다면 프로세스 테이블이 꽉 차게 되어 다른 정상 프로세스의 동작에 영향을 줄 수도 있다.

Posted by 살레시오
,

 요즘에는 저가의 초소형 리눅스 보드들이 많이 출시되고 있는데 nanopi 도 그 중 하나이다.

스펙은 라즈베리파이1에 비해서도 낮은 성능이지만 그 절반 크기에 와이파이와 블루투스 모듈이 내장되어 있다. 가격은 최소가 기준으로 $25 이다.


 업그레이드 버젼도 있는데 nanopi2 이다. 유사한 폼펙터에 1.4GHz, 램1G 으로 라즈베리파이2보다도 높은 성능을 가진다. 가격은 $32 이다.

이 보드들의 장점은 작은 사이즈(라즈베리파이의 절반 크기), 와이파이와 블루투스 모듈을 내장했음에도 가격은 다소 더 저렴하다는 것이다.



Posted by 살레시오
,

 라즈베리파이 이후에 저가이면서도 초소형인 리눅스 보드들이 몇몇 출시되었는데 그중 OpenWRT 리눅스를 사용하는 것들도 있다. 출시 준비 중인 것들을 포함해서 소개해 보고자 한다.

C.H.I.P

 라즈베리파이1 정도의 성능에 4G 플래시 메모리 와이파이, 블루투스 모듈까지 포함되었으면서도 가격이 $9에 불과해 큰 화제를 낳은 리늑스 보드이다. 킥스타터에서 성공적으로 펀딩이 된 후 출시 준비 중이다.


ONION OMEGA

 400MHz processor를 사용하고 OpenWRT 리눅스가 구동된다. 와이파이모듈이 포함되었으며 모듈가격은 $19이다.


Domino PI

onion omega와 비슷한 스펙이다. 코어 모듈의 가격은 $14이다.


VoCore

onion omega와 비슷한 스펙이다. 코어 모듈의 가격은 $19.99이다.


Arietta G25

Atmel AT91SAM9G25 SoC (ARM9 @ 400MHz) 을 사용한 OpenWRT 리눅스보드이다. 와이파이는 외부 모듈로 별도 올리게 되어있다. 가격은 $30.



WRTNode

seeed studio 의 제품이다. 가격은 $29.



Posted by 살레시오
,

 GUI환경에서는 gedit 와 같은 편리한 텍스트 에디터들이 있으므로 텍스트 파일을 만들거나 편집할 경우에 이런 툴을 이용할 수 있다. 그리고 프로그래밍할 때는 IDE를 이용하면 된다. 하지만 쉘 기반의 텍스트 에디터를 사용할 수밖에 없는 경우도 발생하게 되는데 예를 들어서 원격으로 접속한 경우이다. 이런 경우 리눅스에는 vi (혹은 vim) 라는 텍스트 편집기가 많이 사용되지만 처음에는 그 사용법을 익히기가 어려운 편이다.


 간단한 작업을 할 경우에는  nano를 사용하면 CLI 환경에서 더욱 간단하게 텍스트 파일이나 프로그램 파일을 작성하고 편집할 수 있다. 기본적으로 설치되어 있으므로 터미널에서 nano라고 입력하거나 nano filename 을 입력하면 실행된다.


[표 1] nano 실행 명령어 예제들

실행 명령

동작

nano memo.txt
memo.txt를 편집하기 위해 open한다.
nano -B memo.txt
save 직전에 이전 파일을 ~.filename으로 백업한다.
nano -m memo.txt
cursor 이동을 위해 mouse를 사용한다. (지원시)
nano +83 memo.txt
83 번째 줄부터 편집한다.


나노가 실행되면 바로 편집할 수 있는 상태로 진입하게 된다.


[그림 1] 터미널에서 nano의 실행 화면


편집 모드에서는 기본적으로 상하좌우 방향키로 caret을 이동시킬 수 있으며, del, backspace, enter 키 사용이 가능하다. ctrl+g를 눌러 도움말을 볼 수 있다.


다음은 단축키 목록이다. 이 중 잘라내기/복사/붙이기 키는 잘 알아두어야 편집할 때 매우 유용하다.


[표 2] 기본 명령(단축키)들

단축키

동작

ctrl+g (F1)
도움말 표시
ctrl+x (F2)
nano 종료 (혹은 현재의 file buffer를 닫음)
ctrl+o (F3)
현재 편집 중인 파일 저장
ctrl+j (F4)
문단을 justify(행의 끝을 나란히 맞추다)한다. 즉, 한 문단을 한 줄로 붙인다.
ctrl+r (F5)
현재 file에 다른 file의 내용을 추가한다.
ctrl+w (F6)
text 검색
ctrl+c (F11)
현재의 cursor 위치 표시하기
ctrl+t (F12)
spell check 시작
ctrl+\
search and replace


다음 표는 편집에 관련된 단축키들이다.


[표 3] 잘라내기/복사/붙여넣기에 관련된 단축키들

단축키

동장

ctrl+k (F9)
현재의 line 혹은 선택된 text 삭제(그리고 저장(copy))
ctrl+u (F10)
붙여넣기 (paste)
ctrl+6
현재 cursor 위치부터 text 선택 시작. 이후 alt+6로 복사 후 선택 종료. 아니면 다시 ctrl+6를 입력하면 (복사 없이)단순 종료.
alt+6
선택 구간 복사. 선택 구간이 없다면 현재 caret 이 있는 한 줄을 복사. 이후 ctrl+u 로 붙여넣기 할 수 있음,


다음 표는 화면 이동과 관련된 키들이다. 선택 모드일 경우 이동한 만큼 선택이 추가/삭제된다.


[표 4] 화면 이동과 관련된 단축키들

단축키

동작

PageUP 또는 ctrl+y (F7)
PageDown 또는 ctrl+v (F8)
이전 화면
다음 화면
alt+(
alt+)
현재 문단의 시작으로
현재 문단의 끝으로
alt+=
alt+-
한 줄 밑으로 스크롤
한 줄 위로 스크롤
ctrl+space
alt+space
한 단어 앞으로
한 단어 뒤로 (GUI모드가 아닐 경우)
alt+\
alt+/
file의 첫 line으로
file의 마지막 line으로
alt+]
현재 괄호에 match되는 괄호 찾기
ctrl+-
줄 번호와  열을 입력한 후 그곳으로 이동




Posted by 살레시오
,

 기본적으로 리눅스의 표준 입력(standard input)은 키보드이고 표준 출력 (standard output)은 모니터 혹은 터미널윈도이다. 하지만 리눅스는 매우 유연한 운영 체제이므로 이러한 표준 입출력을 변경할 수 있다. 예를 들어 표준 출력을 모니터가 아니라 프린터로 바꿀 수 있다.


>과 |를 이용한 출력 재지정

 출력 재지정(output redirection)을 이용하면 명령어의 표준 출력 내용을 모니터에 출력하는 대신에 파일에 저장하거나 다른 명령어의 입력으로 인가할 수 있다. 이때 사용되는 기호가 >와 | 이다.


명령어 > 파일명


만약 파일이 있다면 덮어쓰게 되고 없다면 새로 생성한다. 예를 들어 다음 명령은 ls 의 결과를 모니터에 출력하지 않고 모두 파일 list.txt에 저장한다.


ls > list.txt


출력 재지정은 앞에서 cat 명령이나 echo 명령에서 사용한 바 있다. 만약  >을 이용하여 두 개의 파일을 연결하여 하나의 새로운 파일을 만들 수 있다.


cat file1 file2 > file3


이렇게 하면 file1 과 file2의 내용이 합해져서 file3 에 저장된다.


 덮어쓰기(overwrite)는 바람직하지 않으므로 만약 실수로 중요한 파일을 덮어쓰는 것을 방지하려면 .bashrc 파일에 set -o noclobber 라는 명령을 추가시켜주는 것이 좋다.


 만약 다음과 같이 ‘아무 것도 아닌 것을’ 존재하는 파일에 재지정하면 그 파일은 빈 파일이 되어버린다.


> list


list라는 파일의 크기는 0인 것을 확인할 수 있을 것이다. (이것을 truncating 이라고 한다.) 또는 존재하지 않는 파일에 같은 일을 하면 빈 파일이 새로 생성된다. touch 명령어와 동일한 동작을 수행한다.


 기호 | 는 좌측의 출력을 우측의 입력으로 인가한다. 만약 긴 리스트를 한 페이지씩 보고 싶다면 다음과 같이 한다.


ls -al | less


만약 파일명에 특정 문자열이 들어간 것만 보고 싶다면 다음과 같이 grep 명령과 조합하여 사용하면 된다.


ls -al | grep part_of_file_name


입력 재지정 (input redirection)

 입력 재지정을 이용하면 명령어의 표준 입력을 키보드 대신 파일에서 받을 수 있다. 이 때 < 연산자가 이용된다.


명령어 < 파일


예를 들어 wc (줄바꿈문자수, 단어수, 바이트수를 표시하는 명령)의 입력을 파일에서 받고 싶다면 다음과 같이 입력한다.


wc < list1.txt


입력과 출력 재지정을 조합해서 사용할 수도 있다


wc < list1.txt > result


이 명령은 list1.txt파일의 워드카운트 결과를 result 파일에 기록한다.

출력 추가(append)

 기호 >> 를 이용하면 명령어의 표준 출력을 기존 파일에 추가할 수 있다.


명령어 >> 파일


예를 들어 현재 로그인한 사용자들의 리스트를 list.txt에 추가하려면 다음과 같이 하면 된다.


who >> list.txt


만약 파일이 없다면 생성한 후 기록하게 된다.



Posted by 살레시오
,

 아래 표에 기타 명령어들을 나열하였다.


[표 1] 기타 명령어들

명령어

기능

date
현재 날짜 및 시간을 확인한다.
hostname
현재 사용하고 있는 호스트 이름을 확인한다.
uname
현재 사용하고 있는 운영체제.
who
현재 접속 중인 사용자들의 리스트
clear
화면을 초기화함. ( [ctrl]+L 과 동일함)
passwd
비밀번호를 바꾼다.
touch filename
빈 파일을 생성한다.
history
이전에 내린 명령들을 보여준다.
echo "content" >> file
file 이라는 파일에 content 라는 내용을 기록한다.(file이 없다면 생성한 후 기록)
poweroff
halt
shutdown -h now
시스템 종료



Posted by 살레시오
,

 긴 명령어를 짧게 다시 정의하는 명령어로 alias 가 있다. 아무런 옵션 없이 그냥 alias라고 입력하면 현재 정의되어 있는 별칭의 목록을 보여준다.



만약 ‘ls -alh’를 ll로 새로 정의하고 싶다면 다음과 같이 하면 된다.


alias ll = ’ls -alh’


이후에는 ‘ll’ 이라고 입력할 때마다 자동으로 ‘ls -alh’가 실행되므로 편리하게 사용할 수 있다. 다른 예를 들어보면


alias rm = ‘rm -i’


이후로는 rm 명령이 실행될 때마다 ‘rm -i’ 가 실행되어 확인 과정을 거치게 된다.


alias lsd = ‘ls -al | grep “^d”’


이후에는 ‘lsd’ 명령을 입력하면 디렉토리의 리스트만 보여준다.


 정의된 별칭을 제가하려면 unalias 몀령을 이용하면 된다.


unalias ll


사용자 홈디렉토리에 보면 .bashrc 라는 숨김 파일이 있는데 (리눅스에서는 점으로 시작하는 파일은 숨김파일이다) 이 파일 안에 사용자의 alias가 설정되어 있다. 이 파일에 사용자가 alias를 더 설정해 놓으면 터미널을 실행시킬 때 로드되므로  일일이 다시 재정의할 필요가 없게 된다.



Posted by 살레시오
,

 텍스트 파일의 내용을 보여주는 쉘 명령어들을 다음 표에 정리하였다.


[표 1] 텍스트 파일의 내용을 보여주는 명령어들

cat file1 file2 file3

- file들의 내용을 모두 합해서 끝까지 한 번에 보여준다.(concatenation)

- 내용이 긴 경우 화면에 넘어간 내용을 확인할 수 없다.

- 인수가 없는 경우 키보드로 부터 입력을 받아 그 내용을 그대로 출력한다.(이후 ^D로 종료)

more  filename

파일의 내용을 한 페이지 단위로 끊어서 보여준다. 스페이스를 입력하면 다음 페이지로 이동한다. 종료하려면 ^z나  ‘q’를 입력

less filename

more와 같이 큰 파일의 내용을 끊어서 보여주지만 위아래로 이동할 수 있다는 점이 다르다. 한 줄씩 이동(커서키)과 페이지 업/다운 키를 지원한다. 종료하려면 ^z 혹은 ‘q’를 입력.

diff file1 file2

두 파일의 다른 점을 보여준다.

head

tail

파일의 앞 부분(10줄)을 출력한다.

파일의 뒷 부분(10줄)을 출력한다.


 ‘cat’ 명령을 인수 없이 입력할 경우 키보드 입력을  표준 출력(화면)에 표시한다. 따라서 키보드 입력을 파일에 저장하고 싶을 경우 다음과 같이 하면 된다.


cat > filename


그러면 ^D 가 입력될 때까지의 키보드 입력이 파일에 저장된다.


 ‘less’ 명령어를 이용하면 긴 도움말 전체를 살펴볼 수 있다. 예를 들어서 다음과 같이 하면 된다.


ls --help | less


여기에서 ‘|’ 기호는 좌측의 출력을 우측의 입력으로 인가하라는 지시이다. 따라서 less 뷰어의 입력으로 ls --help 명령의 출력내용이 인가되므로 커서키나 페이지 업/다운 키로 전체를 살펴볼 수 있다.



Posted by 살레시오
,