Nushell
문서
쿡북
블로그
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
  • 한국어
GitHub
문서
쿡북
블로그
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
  • 한국어
GitHub
  • 소개
  • 설치하기
    • 기본 셸
  • 시작하기
    • 빠른 둘러보기
    • 시스템 이동
    • 누셸 방식으로 생각하기
    • 누셸 치트 시트
  • Nu 기본
    • 데이터 유형
    • 데이터 로드
    • 파이프라인
    • 문자열 작업
    • 목록 작업
    • 레코드 작업
    • 테이블 작업
    • 구조화된 데이터 탐색 및 액세스
    • 특수 변수
  • Nu에서 프로그래밍하기
    • 사용자 지정 명령
    • 별칭
    • 연산자
    • 변수
    • 제어 흐름
    • 스크립트
    • 모듈
      • 모듈 사용하기
      • 모듈 만들기
    • 오버레이
    • 정렬
    • 누셸 코드 테스트
    • 모범 사례
  • 셸로서의 Nu
    • 구성
    • 환경
    • 표준 출력, 표준 오류 및 종료 코드
    • 시스템(외부) 명령 실행
    • 타사 프롬프트 구성 방법
    • 디렉터리 스택
    • Reedline, Nu의 줄 편집기
    • 사용자 지정 완성
    • 외부 명령
    • Nu의 색상 지정 및 테마 설정
    • 후크
    • 백그라운드 작업
  • Nu로 전환하기
    • Bash에서 오신 분들을 위해
    • CMD.EXE에서 오신 분들을 위해
    • 다른 셸 및 도메인 특정 언어의 Nu 맵
    • 명령형 언어의 Nu 맵
    • 함수형 언어의 Nu 맵
    • 누셸 연산자 맵
  • 디자인 노트
    • 누셸 코드가 실행되는 방법
  • (약간)고급 사용법
    • 표준 라이브러리 (미리보기)
    • 데이터프레임
    • 메타데이터
    • 나만의 오류 만들기
    • 병렬 처리
    • 플러그인
    • explore

백그라운드 작업

누셸은 현재 스레드 기반 백그라운드 작업에 대한 실험적 지원을 제공합니다.

작업 생성

작업은 클로저를 수신하고 백그라운드 스레드에서 실행을 시작하는 job spawn을 사용하여 생성할 수 있으며, 생성된 작업에 대한 고유한 정수 ID를 반환합니다.

'나는' | save status.txt

job spawn { sleep 10sec; ' 필연적이다' | save --append status.txt }
# => 1

open status.txt
# => 나는

# 10초 기다림
sleep 10sec

open status.txt
# => 나는 필연적이다

작업 나열 및 종료

활성 작업은 현재 실행 중인 작업의 정보가 포함된 테이블을 반환하는 job list 명령으로 쿼리할 수 있습니다. 작업은 작업의 스레드를 중단하고 작업의 모든 자식 프로세스를 종료하는 job kill 명령을 사용하여 종료/중단할 수도 있습니다.

let id = job spawn { sleep 1day }

job list
# => ┏━━━┳━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━┓
# => ┃ # ┃ id ┃  type  ┃      pids      ┃
# => ┣━━━╋━━━━╋━━━━━━━━╋━━━━━━━━━━━━━━━━┫
# => ┃ 0 ┃  1 ┃ thread ┃ [list 0 items] ┃
# => ┗━━━┻━━━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━┛

job kill $id

job list
# => ╭────────────╮
# => │ empty list │
# => ╰────────────╯

작업 일시 중단

Linux 및 macOS와 같은 Unix 대상에서 누셸은 Ctrl+Z를 사용하여 외부 명령을 일시 중단하는 것도 지원합니다. 실행 중인 프로세스가 일시 중단되면 "정지된" 백그라운드 작업으로 전환됩니다.

long_running_process # 이것은 실행을 시작한 다음 Ctrl+Z를 누릅니다.
# => 작업 1이 정지되었습니다.

job list
# => ┏━━━┳━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━┓
# => ┃ # ┃ id ┃  type  ┃      pids      ┃
# => ┣━━━╋━━━━╋━━━━━━━━╋━━━━━━━━━━━━━━━━┫
# => ┃ 0 ┃  1 ┃ frozen ┃ [list 1 items] ┃
# => ┗━━━┻━━━━┻━━━━━━━━┻━━━━━━━━━━━━━━━━┛

정지된 작업은 job unfreeze 명령으로 포그라운드로 다시 가져올 수 있습니다.

job unfreeze
# 프로세스가 중지된 위치로 다시 가져옵니다.

팁

다른 Unix 셸에 익숙한 사람들을 위해 fg 명령의 동작을 에뮬레이트하는 별칭을 만들 수 있습니다.

alias fg = job unfreeze

기본적으로 job unfreeze는 가장 최근에 정지된 작업을 정지 해제합니다. 그러나 정지 해제할 특정 작업의 ID를 지정할 수도 있습니다.

vim
# => 작업 1이 정지되었습니다.

long_running_process
# => 작업 2가 정지되었습니다.

job unfreeze 1
# vim으로 돌아왔습니다.

종료 동작

다른 많은 셸과 달리 누셸 작업은 별도의 프로세스가 아니며 대신 백그라운드 스레드로 구현됩니다.

이것의 중요한 부작용은 셸 프로세스가 종료되면 모든 백그라운드 작업이 종료된다는 것입니다. 이러한 이유로 누셸에는 셸이 종료될 때 작업이 종료되는 것을 방지하는 UNIX와 유사한 disown 명령이 없습니다. 이를 고려하여 향후 독립적인 백그라운드 프로세스를 생성하기 위한 job dispatch 구현 계획이 있습니다(진행 상황은 #15201 참조).

또한 사용자가 대화형 누셸 세션을 실행하고 백그라운드 작업이 실행되는 동안 exit를 실행하면 셸은 사용자에게 exit를 확인하라는 메시지를 표시하기 전에 이에 대해 경고합니다.

GitHub에서 수정하기
Contributors: Taeyoon Kim, ImgBotApp, google-labs-jules[bot], deepthought
Prev
후크
Next
누셸 시작하기