단일 명령을 사용하여 여러 프로세스를 시작하는 방법은 무엇입니까?

단일 명령을 사용하여 여러 프로세스를 시작하는 방법은 무엇입니까?

저는 pianobar플레이어를 사용합니다. 하지만 시작하기 전에 tor및 를 실행해야 합니다 polipo. 둘 다 연속적입니다(중단될 때까지 실행). 기본적으로 내가 찾고 있는 것은 (출력 필요 없이) 생성 tor및 처리한 다음 전경에서 피아노 바를 여는 단일 명령입니다.polipo

편집: 결과가 tor시작되는 데 몇 초가 걸리므로 제안된 솔루션이 처음에는 작동하지 않습니다. 혹시 같은 문제가 있으신 분 계실까봐 이렇게 글을 남깁니다.

function piano {
    tor &
    polipo &
    sleep 3
    pianobar &&
    killall tor
    killall polipo
}

답변1

이것이 쉘 스크립트의 목적입니다; 여러 명령을 실행하려면 하나의 명령만 입력하면 됩니다. 다음은 귀하가 찾고 있는 작업을 수행한다고 생각되는 짧은 스크립트입니다.

#!/bin/sh

tor    & tor_pid=$!
polipo & polipo_pid=$!

sleep 5
pianobar

kill $tor_pid
kill $polipo_pid

파일에 넣고 를 $HOME/local/bin/startpiano사용하여 실행 가능하게 만들고 변수 끝에 chmod +x $HOME/local/bin/startpiano추가하십시오 .$HOME/local/binPATH

이는 쉘 함수의 목적이기도 합니다.;논리적으로 구별되는 작업을 수행합니다. 다음과 같은 쉘 함수를 만들 수 있습니다.

startpiano () {
  tor    & tor_pid=$!
  polipo & polipo_pid=$!

  sleep 5
  pianobar

  kill $tor_pid
  kill $polipo_pid
}

이는 특정 쉘의 시작 파일 중 하나로 이동됩니다.

편집하다: 편집된 질문의 경우 작업이 이제 너무 복잡해지기 때문에 별칭을 사용하지 않는 것이 좋습니다. 하지만 별칭에 대한 원문은 그대로 두겠습니다.

이것은 별칭의 목적이기도 합니다.; 반복해서 입력하고 싶지 않은 간단한 작업을 수행합니다. 별칭을 설정하는 방법은 다음과 같습니다.

alias startpiano="polipo &; tor &; pianobar"

이는 쉘의 초기화 스크립트 중 하나에도 나타납니다.

이 세 가지 솔루션 중 하나를 사용하면 다음을 입력할 수 있습니다.

$ startpiano

필요한 프로그램을 시작하세요.

  • 쉘 함수 및 별명에 비해 쉘 스크립트의 장점은 쉘 초기화 파일에 더 이상 가중치를 추가하지 않는다는 것입니다(해당 위치를 변수 끝에 추가하는 것 제외 PATH).

  • 쉘 함수는 별칭에 비해 나중에 명령줄 인수를 추가할 수 있고(스크립트에서도 작동) 읽을 수 있다는 장점이 있습니다(그리고 여러 면에서 자체 "스크립트"처럼 동작합니다).

  • 별칭은 작동하지만 실제로 별칭의 유일한 용도는 명령줄 플래그 등과 같이 매우 간단한 것을 손끝에 더 편리한 짧은 것으로 바꾸는 것입니다 ls( alias ls="ls -F"이것이 제가 가진 유일한 별칭입니다).

답변2

이것을 사용하는 쉘 .profile.bashrc넣으 십시오..zshrc

function mycommand {
    tor &
    polipo &
    planobar
}

이제 그냥 달리세요mycommand

관련 정보