dd의 진행 상황을 어떻게 모니터링합니까?


654

dd놀랍습니다. 하드 드라이브를 다른 드라이브에 복제하고 하드 드라이브를 완전히 제로화하는 등의 작업을 dd수행 할 수 있습니다. 그러나 명령 을 실행하면 진행 상황을 알 수있는 것이 없습니다. 명령이 끝날 때까지 커서에 있습니다. 그렇다면 어떻게 dd의 진행 상황을 모니터링합니까?

답변:


728

2016 업데이트 : GNU coreutils> = 8.24 (Ubuntu Xenial 16.04 이상에서 기본값)를 사용하는 경우 진행률을 표시하는 다른 방법은 아래 방법 2를 참조하십시오.


방법 1 : 사용하여 pv

pv입 / 출력 전용 dd명령 사이에 설치 하고 배치하십시오 .

참고 : 이미 시작한 후에는 사용할 수 없습니다 dd.

에서 패키지 설명 :

pv-파이프 뷰어-파이프 라인을 통한 데이터 진행을 모니터링하기위한 터미널 기반 도구입니다. 두 프로세스 사이의 일반 파이프 라인에 삽입하여 데이터가 얼마나 빨리 전달되는지, 얼마나 오래 걸 렸는지, 완료까지 걸리는 시간 및 완료까지 소요되는 시간을 시각적으로 표시 할 수 있습니다.

설치

sudo apt-get install pv

예

dd if=/dev/urandom | pv | dd of=/dev/null

산출

1,74MB 0:00:09 [ 198kB/s] [      <=>                               ]

--size시간 추정을 원한다면 대략적인 크기를 지정할 수 있습니다.


예 / dev / sdb에서 2GB 디스크를 복사한다고 가정

없는 명령 pv은 다음과 같습니다.

sudo dd if=/dev/sdb of=DriveCopy1.dd bs=4096

명령 pv:

sudo dd if=/dev/sdb | pv -s 2G | dd of=DriveCopy1.dd bs=4096

산출:

440MB 0:00:38 [11.6MB/s] [======>                             ] 21% ETA 0:02:19

다른 용도

물론 pv출력을 stdout으로 파이프하는 데 직접 사용할 수 있습니다 .

pv /home/user/bigfile.iso | md5sum

산출

50,2MB 0:00:06 [8,66MB/s] [=======>         ] 49% ETA 0:00:06

이 경우 pv크기를 자동으로 인식합니다.


방법 2 : (GNU Coreutils 8.24+)에 새로운 status옵션 추가dd

ddGNU Coreutils 8.24 이상 (Ubuntu 16.04 이상) status에는 진행률을 표시 하는 새로운 옵션이 있습니다.

예

dd if=/dev/urandom of=/dev/null status=progress

산출

462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s

76
pv bigfile.iso | dd of = / dev / yourdevice
— Ion Br.

18
"dd"의 매개 변수는 전반 (파이프의 입력 부분)에 적합합니다 dd if=/dev/zero bs=1M count=35000 | pv | dd of=VirtualDisk.raw.
— Sopalajo de Arrierez 2014 년

6
pv bigfile.iso | dd of=VirtualDisk.raw bs=1M count=35000작동합니다. @SopalajodeArrierez, 매개 변수는 두 번째 dd에 제공 될 수 있습니다.
— SiddharthaRTRT

11
사용하는 pv < /dev/sda > /dev/sdb것 같습니다 더 나은 속도 (얻을 소스 )
— 니콜라 Feltrin

14
참고로 속도. Samsung 840 PRO SSD로 컴퓨터에서 테스트 : dd if=/dev/urandom | pv | of=/dev/sdb~ 18MB / s 쓰기, dd if=/dev/zero | pv | of=/dev/sdb~ 80MB / s, 보통 old dd if=/dev/zero of=/dev/sdb~ 550MB / s (SSD 최대 쓰기 속도에 근접). 모두와 함께 bs=4096000.
— Tedd Hansen 2016 년

461

에서 하우투 : DD의 진행 상황을 모니터

kill명령 을 사용하여 정지하지 않고 dd의 진행 상황을 모니터 할 수 있습니다 .

dd일단 실행중인 진행 상황을 보려면 다른 터미널을 열고 다음을 입력하십시오.

sudo kill -USR1 $(pgrep ^dd)

프로세스를 중단하지 않고 터미널 창에 dd진행률 이 표시 dd됩니다. BSD 또는 OS X를 사용 INFO하는 경우 대신을 사용하십시오 USR1. USR1신호 DD를 종료한다.

dd진행 상황을 정기적으로 업데이트하려면 다음을 입력하십시오.

watch -n5 'sudo kill -USR1 $(pgrep ^dd)'

watchdd-n 초마다 프로세스 를 검사하고 ( -n5= 5 초) 중단하지 않고보고합니다.

위의 명령에서 올바른 작은 따옴표를 참고하십시오.


19
이것은 효과가 있었지만 몇 가지 의견이 있습니다. 우선, 왜 당신이 백틱을 이스케이프했는지 잘 모르겠습니다 (SO 편집기 인 경우 잘못했습니다). 둘째, 접두사 dd로 다른 것이 실행되는 경우를 대비하여 ^ dd $를 사용하는 것이 좋습니다. 마지막으로 USR1 신호를 보내기 위해 sudo가 필요하지 않습니다. 그렇지 않으면 좋은 대답, +1입니다.
— gsingh2011

22
NB! 이 방법은 OSX에서 dd 작동을 방해합니다.
— Maxim Kholyavkin

26
@Speakus kill -INFO $(pgrep ^dd$)OSX와 같은 BSD 시스템 에서 사용해야 합니다.
— Torben

20
sudo pkill -usr1 dd기억하기 쉽고, 적어도 우분투 14.04에서는 완벽하게 작동하며 입력하기가 쉽지 않습니다.
— Phizes

21
pvTeddHansen이 보여 주듯이 전송 속도가 느려질 것이므로 두려워 합니다. 또한 많은 사람들이 이미dd 작업을 시작 했기 때문에 이것을 검색 하고 있습니다.)
— sudo

104

pv타이핑이 적거나 진행률이 낮고 다른 답변보다 몇 가지 편리한 샘플 사용법 :

먼저 다음 pv명령을 사용하여 를 설치해야합니다 .

sudo apt-get install pv

그런 다음 몇 가지 예는 다음과 같습니다.

pv -n /dev/urandom | dd of=/dev/null
pv -tpreb source.iso | dd of=/dev/BLABLA bs=4096 conv=notrunc,noerror

참고 : 첫 번째 샘플은 5 자 미만의 타이핑 dd if=/dev/urandom | pv | dd of=/dev/null입니다.

그리고 디스크 드라이브를 복제하는 것을 좋아합니다 (X를 드라이브 문자로 바꿉니다).

(pv -n /dev/sdX | dd of=/dev/sdX bs=128M conv=notrunc,noerror) 2>&1 | dialog --gauge "Running dd command (cloning), please wait..." 10 70 0

스크린 샷

출처 : http://www.cyberciti.biz/faq/linux-unix-dd-command-show-progress-while-coping/

또한 나 자신을 보관합니다.


3
당신은 또한 설치해야합니다 dialog명령으로apt-get install dialog
— k7k0

7
dialog예를 좋아 하십시오 . 평온 지금 !
— alex grey

파이썬으로 만 대화 상자를 호출 할 수 있습니까?
— mikeymop

1
이 답변의 덕분에, 발견 dialogD :이 미친 듯이 쉘 스크립트 작성에 도움이 될 것입니다
— HOLMS을

2
brew install pv dialogMac 용. 또한이 신사는 스타일로 계산합니다. 브라보.
— evilSnobu

62

실행 중 Ctrl+ Shift+ T를 사용 dd하면 진행률 (바이트)이 출력됩니다.

load: 1.51  cmd: dd 31215 uninterruptible 0.28u 3.67s
321121+0 records in
321120+0 records out
164413440 bytes transferred in 112.708791 secs (1458745 bytes/sec)

5
Kubuntu Trusty에서 작동하지 않습니다. 충돌하는 키 바인딩일까요?
— jamadagni

14
좋은 방법. OSX에서는 작동하지만 우분투 14.04에서는 작동하지 않습니다.
— Maxim Kholyavkin

1
첫 번째 줄은 OS X에 의해 생성되며 후자의 3 줄만입니다 dd.
— Itay Grudev

3
OS X와 ​​같은 BSD에서 kill -INFO를 사용할 수 있어야합니다.
— macshome

3
우분투에서는 작동하지 않습니다. Ctrl-T / Ctrl-Shift-T ^T는 터미널 로만 출력 됩니다 (많은 터미널 앱은 Ctrl-Shift-T를 가로 채서 새 탭을 엽니 다 제외). OSX / BSD에 많은 수색자는이 답변을 주셔서 감사합니다 수 있지만, 그것은 우분투 아니다 분명해야한다 (또는 일반적으로 GNU / 리눅스?)
— mwfearnley

60

완전성을 위해 :

버전 8.24 의 GNU의로 coreutils는 진행 상황을 인쇄하는 매개 변수를 도입 DD에 대한 패치가 포함되어 있습니다.

이 변경 사항을 도입 한 커밋 에는 다음과 같은 주석이 있습니다.

dd : 통계를 주기적으로 인쇄하기위한 새로운 상태 = 진행 수준

Ubuntu 16.04.2 LTS를 포함한 많은 배포판 에서이 버전을 사용합니다.


8.24 coreutils : apt install build-essential및을 컴파일 한 방법을 추가하고 apt-get build-dep coreutilscoreutils-8.25.tar.xz를 다운로드 tar xvf coreutils-8.25.tar.xz configure --prefix=$HOME/usr/local하고 실행하십시오 make. 새로 컴파일 dd된 src디렉토리 는 dir입니다. 당신은 / 빈에 복사 한 SRC / DD로 실행 나타나서 기존 대체 할 수있다
— HOLMS

2
시원한! 이 기능이 마음에 듭니다. 그리고 dd에게 인쇄 진행 출력을 가르치는 데 약 30 년이 걸렸습니다. :-)
— Johannes Overmann

어떤 구호! 이 인수를 dd 쉘 별명에 즉시 추가하겠습니다.
— 스테판 헤 닝센

상태는 때때로 SI 단위와 2 진 단위 (예 : 10MB, 9.5MiB)와 같은 두 개의 숫자로 인쇄됩니다.
— palswim

33

가장 좋은 방법은 http://dcfldd.sourceforge.net/ 을 사용 하는 것입니다. apt-get을 통해 쉽게 설치할 수 있습니다.


3
dcfldd에 대한 포인터 덕분에 dd와 매우 호환되지만 좋은 새로운 기능이 있습니다. 나는 특히 표준 진행을 좋아합니다.
— 플로이드

4
dcfldd가 더 잘 알려지지 않은 이유는 나에게 완전한 미스터리입니다.
— Freedom_Ben

28
아마도 그 이름 때문일 것입니다.
— Giovanni Toraldo

기본적으로 진행률 메시지, 메시지 업데이트 빈도 및 백분율 표시기 (N 블록)에 대한 dd옵션 및 옵션 이 있습니다 . 나는 그것을 별칭합니다 :)status=onstatusinterval=Nsizeprobe=[if|of]DD
— kavadias

25

기본 진행 상태가 dd에 추가되었습니다 !!!

새 버전의 Coreutils (8.24)는 dd도구에 진행 상태를 추가합니다 .

Xubuntu 15.10에서의 사용법 :

터미널을 열고 다음 명령을 입력하십시오.

wget ftp://ftp.gnu.org/pub/gnu/coreutils/coreutils-8.24.tar.xz
tar -xf coreutils-8.24.tar.xz
cd coreutils-8.24
./configure && make -j $(nproc)

dd루트로 실행하십시오 .

sudo su
cd src
./dd if=/dev/sdc of=/dev/sda conv=noerror status=progress

바이트, 초 및 속도 (바이트 / 초)가 표시됩니다.

버전을 확인하려면 다음을 수행하십시오 dd.

원주민:

dd --version

새로운:

cd coreutils-8.24/src
./dd --version

18

이미 dd를 시작했고 펜 드라이브를 디스크에 복사 할 때와 같은 파일을 작성하는 경우 watch 명령을 사용하여 출력 파일의 크기를 지속적으로 관찰하여 변경 사항을 확인하고 완료를 추정 할 수 있습니다.

watch ls -l /pathtofile/filename

파일 크기 만 보려면 (인간보기) :

watch ls -sh /pathtofile/filename

또한 실행 가능한 방법 ...
— ζ--

3
dd 출력을 파일이 아닌 다른 파일로 파이핑 (예 : 디스크에 쓰기 전에 gzip ')하는 경우에는 반드시 유용하지는 않습니다.
— Ponkadoodle

특수 파일에서는 작동하지 않습니다.
— Johannes Overmann

13

dd | pv | dd트라이어드는 DD 사용 260초 반대로 내 50기가바이트의 VM 사본이 800 초가 소요했다. 이 파이프 라인을 사용하면 pv는 적어도 입력 파일의 크기를 알지 못하므로 얼마나 멀리 있는지 알 수 없으므로 다음과 같이 단점이 없으며 속도 이점이 뛰어납니다.

큰 것에 대해서는 pv를 피하고 (Bash를 사용하는 경우) :

Control-Z dd 프로세스

bg배경에 넣습니다. 그 관찰 bg과 같은 당신에게 줄 것이다 출력 [1] 6011후자의 수는 프로세스 ID입니다를. 따라서 다음을 수행하십시오.

while true; do kill -USR1 process_id ; sleep 5; done

여기서 process_id는 관찰 한 프로세스 ID입니다. 다음과 같이 보일 때 Control-C를 누르십시오.

[1]+  Done dd if=/path/file.qcow2 of=/dev/kvm/pxetest bs=4194304 conv=sparse
-bash: kill: (60111) - No such process

끝났습니다.

편집 : 바보 시스템 관리자! 당신의 인생을 자동화, 작동하지 않습니다! 내가 모니터링하고 싶은 긴 dd 프로세스가 있다면, 여기에 전체 enchilada를 처리 할 하나의 라이너가 있습니다; 이 모든 것을 한 줄에 넣으십시오.

 dd if=/path/to/bigimage of=/path/to/newimage conv=sparse bs=262144 & bgid=$!; while true; do sleep 1; kill -USR1 $bgid || break; sleep 4; done

물론 스크립트를 작성하여 $ 1을 입력 파일로 만들고 $ 2를 출력 파일로 만들 수 있습니다. 이것은 독자를위한 연습으로 남습니다. 죽이기 전에 약간의 잠이 필요합니다. 그렇지 않으면 아직 준비가되지 않았을 때 신호를 dd로 보내려고하면 죽을 수도 있습니다. 원하는대로 수면을 조정하십시오 (두 번째 수면을 완전히 제거 할 수도 있음).

배쉬-FTW! :-)


1
while루프를 압축하십시오 . 사용하십시오 watch.
— muru

1
@muru에 따라 다릅니다. 시스템에 대해서는 모르지만 CentOS7 *에서는 출력이 약간 깨집니다. 읽을 수는 있지만 질서 정연하게 보이지는 않습니다. 또한 그것은 당신의 dd 속도의 역사를 잃어 버리기 때문에 이전의 출력을 넘어 섭니다; 광산은 20MB / s와 300MB / s 사이에서 다릅니다. 숫자가 다양하고 유익한 것을 보는 것은 흥미 롭습니다. 큰 차이 중 일부는 내가 쓰는 LV에 대한 할당이 증가하는 LVM 씬 풀 때문이라고 생각합니다. * 예, 이것은 우분투 포럼이지만 "dd monitor progress"를 찾고 있습니다. Google의 첫 번째 결과입니다.
— Mike S

아, 다른 터미널이나 화면 창에서을 실행하십시오 sudo watch pkill dd. 그런 다음 dd통계를 편안하게 출력하는 것을보십시오 .
— muru

pkill은 기본적으로 SIGTERM을 보내지 않습니까? pgrep dd가 단일 dd를 실행할 때 3 개의 pid를 나타냅니다 : kthreadd, oddjob 및 dd. pkill이 무엇을 할까 두렵습니다. pkill을 사용하여 -USR1 신호를 보낼 수 있지만 다시 커널 스레드 또는 obbjob에 안전한지 알 수 없습니다. watch 명령은 더 깨끗해 보이지만 while 루프를 피하기위한 많은 추가 단계처럼 보입니다. 일반적으로 하나의 창에서 dd를 수행하는 경우 나중에 동일한 쉘에서 무언가를 수행합니다. while 루프는 안전합니다. 정확히 어떤 pid가 신호를 얻는 지 알고 있습니다.
— Mike S

내가 사용하기 때문에 대부분 어떤 pid가 신호를 얻는 지 신경 쓰지 않습니다 watch pkill -USR1 -x dd. watch다른 유사한 작업 에도 사용 하기 때문에 자연스럽게 발생합니다.
— muru


7

가장 쉬운 방법은 다음과 같습니다.

 dd if=... of=... bs=4M status=progress oflag=dsync

oflag=dsync글을 동기화 상태로 유지하므로 정보 status=progress가 더 정확합니다. 그러나 조금 느려질 수 있습니다.


1
gnu.org/software/coreutils/manual/html_node/dd-invocation.html 에 따르면 사용하는 conv=fsync것이 좋습니다
— Chen Deng-Ta

감사합니다! 나는 원격 lvm2에 dd를하고 있으며 bs = 4M은 20의 인수만큼 전송을 증가 시켰으며 진행 표시는 훌륭합니다.
— Lonnie Best

6

우분투 16.04에서

Ubuntu 16.04는 dd (coreutils) 버전 8.25 와 함께 제공됩니다 . 따라서 옵션 status=progress 은 지원됩니다 :-)

사용하려면 명령 status=progress과 함께 추가 하십시오 dd.

예 :

dd bs=4M if=/media/severus/tools-soft/OperatingSystems/ubuntu-16.04-desktop-amd64.iso of=/dev/null status=progress && sync

상태를 다음과 같이 제공합니다

1282846183 bytes (1.2 GiB, 1.1 GiB) copied, 14.03 s, 101.9 MB/s

여기에 이미지 설명을 입력하십시오


5

status=progress전송 중에 진행 상황을 확인 하려면 옵션 을 사용하십시오 .

또한 conv=fsyncI / O 오류가 표시됩니다.

예:

sudo dd if=mydistrib.iso of=/dev/sdb status=progress conv=fsync


3

진행률을 표시 dd하는 pv데 사용할 bash 래퍼를 만들었습니다 . 그것을 넣고 평소처럼 .bashrc사용 하십시오 dd.

# dd if=/dev/vvg0/root of=/dev/vvg1/root bs=4M
    2GB 0:00:17 [ 120MB/s] [===========================================================>] 100%            
0+16384 records in
0+16384 records out
2147483648 bytes (2.1 GB) copied, 18.3353 s, 117 MB/s

출처:

dd()
{
    local dd=$(which dd); [ "$dd" ] || {
        echo "'dd' is not installed!" >&2
        return 1
    }

    local pv=$(which pv); [ "$pv" ] || {
        echo "'pv' is not installed!" >&2
        "$dd" "$@"
        return $?
    }

    local arg arg2 infile
    local -a args
    for arg in "$@"
    do
        arg2=${arg#if=}
        if [ "$arg2" != "$arg" ]
        then
            infile=$arg2
        else
            args[${#args[@]}]=$arg
        fi
    done

    "$pv" -tpreb "$infile" | "$dd" "${args[@]}"
}

좋은 방법이지만 sudo 또는 time과 같은 명령에서는 작동하지 않습니다.
— Maxim Kholyavkin

1
이것을 맨 위에 / usr / local / bin / dd에 넣으십시오 #!/bin/bash. 하단 : tmp=":${PATH}:"; tmp=${tmp/:/usr/local/bin:/:}; tmp=${tmp%:}; PATH=${tmp#:}; dd "$@"또는 dd위치 를 하드 코딩하고 싶을 수도 있습니다. 그런 다음을 사용하십시오 local dd=/usr/bin/dd. 실행 비트를 추가하는 것을 잊지 마십시오 : chmod +x /usr/local/dd.
— midenok '11

2

그래서 오늘 나는 달리는 kill동안 루프에서 실행하려고하는 것에 약간 좌절했으며 dd, 병렬로 쉽게 실행할 수있는이 방법을 생각해 냈습니다.

function vdd {
    sudo dd "$@" &
    sudo sh -c "while pkill -10 ^dd$; do sleep 5; done"
}

이제 vdd일반적으로 사용 하는 모든 곳에서 사용하십시오 dd(모든 인수를 직접 전달 함) 5 초마다 진행 보고서가 인쇄됩니다.

유일한 단점은 dd가 완료 될 때 명령이 즉시 반환되지 않는다는 것입니다. 따라서이 명령을 사용하면 dd가 통지하고 종료하기 전에 리턴 한 후 추가 5 초 동안 대기 할 수 있습니다.


2

이것은 dd가 2 초마다 통계를 제공하도록 강제합니다.

watch killall -USR1 dd

2 초마다 5 초마다 변경하려면 다음과 같이 -n 5 옵션을 추가하십시오.

watch -n 5 killall -USR1 dd

2

CentOS 토지의 누군가 가이 스레드를 발견하는 경우를 대비하여 ...

'status = progress'옵션은 CentOS 7.5 및 7.6에서 작동합니다.

@davidDavidson의 위 답변은 Coreutils 8.24에 기능이 새로 추가되었음을 나타냅니다.

GNU coreutils 버전 8.24에는 진행률을 인쇄하기위한 매개 변수를 소개하는 dd 패치가 포함되어 있습니다.

이러한 경우가있을 수 있지만 CentOS는 동일한 버전 관리 체계를 따르지 않을 수 있습니다.

CentOS 7.6.1810과 함께 제공되는 Coreutils 버전은 다음과 같습니다.

coreutils-8.22-23.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts

그리고 설치된 dd 버전은 다음과 같습니다.

[root@hostname /]# dd --version
dd (coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, and Stuart Kemp.

버전 8.22가 표시됩니다 .

그러나 CentOS 7.5 및 CentOS 7.6 (Coreutils 버전 8.22 모두)에서 dd로 'status = progress'를 테스트했으며 제대로 작동합니다.

RedHat이 이전 버전의 Coreutils를 사용하기로 선택한 이유는 모르겠지만 기능은 8.22와 함께 존재합니다.


1

위에서 언급했듯이 적어도 GNU coreutils 또는 busybox의 'dd'를 사용하면 진행 정보를 stderr에 인쇄하여 USR1 신호에 응답합니다.

나는 dd를위한 작은 래퍼 스크립트를 작성하여 멋진 퍼센트 완료 표시기를 보여 주며 어떤 식 으로든 dd의 프로세스 또는 작동 방식을 방해하지 않습니다. github에서 찾을 수 있습니다 :

http://github.com/delt01/dd_printpercent

불행히도,이 SIGUSR1 트릭은 컴파일 타임에 특정 기능이 활성화 된 GNU dd (coreutils 패키지의) 또는 busybox의 'dd'모드에서만 작동합니다. FreeBSD 및 OS X를 포함하여 대부분의 BSD 시스템에 포함 된 재고 'dd'에서는 작동하지 않습니다 ... :(


연결이 끊어졌습니다.
— ishmael

1

을 사용하여 coreutils 프로그램의 진행 상황을 볼 수 있습니다 progress - Coreutils Progress Viewer.

다음을 모니터링 할 수 있습니다.

cp mv dd tar cat rsync grep fgrep egrep cut sort md5sum sha1sum sha224sum sha256sum sha384sum sha512sum adb gzip gunzip bzip2 bunzip2 xz unxz lzma unlzma 7z 7za zcat bzcat lzcat split gpg

맨 페이지를 볼 수 있습니다

명령이 실행되는 동안 별도의 터미널 창에서 사용하거나 dd 명령으로 실행할 수 있습니다.

dd if=/dev/sda of=file.img & progress -mp $!

여기서 &첫 번째 명령을 분기하고 명령이 끝날 때까지 기다리지 않고 즉시 계속 진행합니다.

progress 명령은 다음과 같이 시작됩니다. -m따라서 모니터링되는 프로세스가 끝날 때까지 대기 -p하므로 지정된 pid를 모니터링 $!하고 마지막 명령 pid입니다.

sudo와 함께 dd를 발행하면 다음과 같이 진행해야합니다.

sudo dd if=/dev/sda of=file.img &
sudo progress -m
# with no -p, this will wait for all coreutil commands to finish
# but $! will give the sudo command's pid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.