2017-04-19 1 views
0

이봐 좋은 코딩 여러분, 먼저 미안에서배쉬 DD 병렬 및 mkfs를

총 초보자 떠들썩한 파티에서 만 자바의 어떤 경험이 있습니다. 리눅스 머신에서 가능한 한 빨리 그리고 자동으로 수백 USB 드라이브를 플래쉬 할 수있게하는 스크립트를 만드는 것이 나의 임무이다. 아니요 더 많은 패키지를 설치합니다.

오케이 이제 질문 : 두 개의 스케치로 작업을 분할했습니다.

필터 하나는 lsusb를 사용하여 올바른 장치를 greps하고 장치 ID로 백그라운드 프로세스를 시작하여 이미지를 복사하고 일부 partentioning 작업을 수행합니다.

메인 스크립트는 새로운 장치를 필터링하고 새로운 장치를 복사하기위한 새로운 백그라운드 프로세스를 만듭니다. 더 이상 적합한 장치가 없을 때 주 스크립트는 모든 백그라운드 프로세스가 완료 될 때까지 기다린 다음 사용자에게 모든 장치를 꺼내 다음 묶음을 넣으라고 요청합니다.

현재로서는 별개로 작동합니다 한 백그라운드 프로세스의 dd가 다른 프로세스가 완료 될 때까지 대기합니다. 그들이 평행하게 달려야하고 dd를 시작하는 프로세스가 다른 pid를 가지고 있기 때문에 기다리는 이유를 알 수 없습니다. 여기

스크립트의 일부입니다

첫 번째 매개 변수는 일련 번호이고, 두 번째는 복사 할 이미지 파일의 이름입니다

+0

코드 앞에 4 개의 공백을 붙입니다. [editing-help] (http://stackoverflow.com/editing-help)를보십시오. – Cyrus

+1

게시 된 스크립트의 여러 인스턴스를 백그라운드에서 시작하지만 연속적으로 실행 중입니까? 그것은이 스크립트에 달려 있지 않습니다. backgrounding을 수행하는 스크립트를 (추가로) 게시해야합니다. –

+0

게시 된 전체 스크립트가 직렬로 실행되는 것은 아니며 dd 부분 일뿐입니다. ps aux를 사용하면 내가 시작한 모든 백그라운드 프로세스가 실행되고 있음을 알 수 있습니다. 단 하나의 dd 프로세스 만 있고 완료되면 새로운 프로세스가 시작됩니다. ./flash.sh $ temp_serial $ Image & –

답변

0

당신은 줄에서 sync 이동을 시도 할 수 있습니다 8을 완료하면 모든 작업을 완료하기 위해 기다린 후 (wait $i) echo "all connected devices are flashed, please change devices" 이상의 줄 또는 다른 줄로 넘어갑니다.