다음을 수행하려면 어떤 명령줄을 사용해야 합니까? [폐쇄]

다음을 수행하려면 어떤 명령줄을 사용해야 합니까? [폐쇄]

어떤 명령줄을 사용해야 할까요?

  1. 이제 bash를 실행하는 사용자 목록을 알파벳 순서로 인쇄합니다.
  2. 현재 bash를 실행 중인 사용자 수를 인쇄합니다.
  3. 현재 bash를 실행 중인 사용자 목록을 저장하고 개수를 인쇄합니다.

답변1

나는 여러분이 아직 Unix에 익숙하지 않거나 이 질문을 하지 않을 것이라고 가정하고 있으므로 이와 같은 명령에 도달하기 위한 여러분의 사고 과정을 포함하겠습니다. 그러면 다음 것을 직접 찾을 수 있습니다.

먼저 실행 중인 프로세스 목록을 가져와야 합니다. 실행 중인 프로세스를 나열하려면 를 사용할 수 있습니다 ps. 이미 알고 있을 수도 있지만 시작하는 것이 좋습니다. 유사한 명령을 본 적이 있습니다 . 즉 , 연관된 tty가 없는 명령 ps ax( )도 모두 나열( )하는 것을 의미합니다.ax

a이제 모든 프로세스를 선택 하고( ) 실행 파일 이름을 표시하도록 지시해야 합니다 ( c). 포함할 수도 x있고 포함하지 않을 수도 있습니다. 모든 상호 작용에는 bash확실히 연관된 tty가 있지만 쉘 스크립트는 그렇지 않을 수 있으므로 포함 여부는 필요에 따라 다릅니다. 출력을 더 쉽게 구문 분석할 수 있도록 출력을 우리가 관심 있는 값, 즉 사용자 및 명령( o user,command)으로 제한하는 것도 편리합니다.

이는 다음을 제공합니다:

$ ps aco user,command
root   login
root   bash
user   bash
root   bash
user   lynx
...

bash이제 이를 필터링하여 각 사용자에 대한 인스턴스를 찾아야 합니다 . 이렇게 하려면 awk스크립트를 사용하여 로 파이프하면 됩니다 $2=="bash" { print $1 }. 이는 "두 번째 열이 "bash"인 경우 첫 번째 열을 인쇄합니다"를 의미합니다.

$ ps aco user,command | awk '$2=="bash" {print $1}'
root
user
root

sort마지막으로 및 출력을 정렬하고 중복 항목을 제거하려고 합니다 uniq.

$ ps aco user,command | awk '$2=="bash" {print $1}' | sort | uniq
root
user

네가 원한다면수량"bash"를 실행하는 사용자 수는 출력의 줄 수를 계산할 수 있습니다.

$ ps aco user,command | awk '$2=="bash" {print $1}' | sort | uniq | wc -l
2

그런 다음 출력 리디렉션을 사용하여 이러한 출력을 파일(예: command > file.

관련 정보