노드js- 프로세스 및 운영 체제


개술


이 기사는 Node 사용을 단순화하는 데 도움이 되는 기사 시리즈의 7번째 부분입니다.js.본고에서 나는 절차와 운영체제 모듈을 소개할 것이다.

소개하다.


하나의 노드.jsprocess는 현재 저희 코드를 실행 중인 프로그램입니다.글로벌 프로세스 객체를 사용하여 프로세스에 대한 정보를 제어하고 수집할 수 있습니다.운영체제는 프로세스가 실행되는 호스트 시스템으로coreos 모듈을 사용하여 운영체제에 대한 정보를 찾을 수 있습니다.

프로세스


프로세스 객체는 현재 노드에 대한 정보를 제공하고 현재 노드를 제어하는 글로벌 객체입니다.js 프로세스.프로세스 객체는 Event Emitter의 인스턴스이므로 이벤트를 등록할 수 있습니다.두 가지 자주 사용하는 사건은 beforeExitexit이다.
process.once('beforeExit', (code) => {
  setTimeout(() => { console.log('Do some work') }, 200);
  console.log('Process beforeExit event with code: ', code);
});

process.on('exit', (code) => {
  console.log('Process exit event with code: ', code);
});

console.log('This message is displayed first.');
위의 코드 세션에서 Before Exit와 exit 이벤트를 등록합니다.beforeExit 이벤트는 노드가 시작될 때 발생합니다.js 이벤트 순환을 비웁니다. 추가 작업이 없습니다.beforeExit 이벤트는 once 방법으로 등록되어 있음을 주의하십시오.우리는 once 방법을 사용한다. 왜냐하면 이 방법에서 비동기적인 조작을 할 수 있기 때문이다.만약 우리가 이벤트를 사용 on 방법으로 바꾸면, 프로세스는 무한 순환에 들어갈 것입니다. setTimeout이 종료되기 전에 이벤트 순환을 되돌려주기 때문입니다.Try it out . 이제 종료 이벤트에서는 동기화 작업만 허용됩니다.종료 이벤트를 보낼 때, 이벤트 순환을 위한 추가 작업을 포기합니다.또 다른 상용 방법은uncaughtException이다.이 방법은 프로그램에서 고려하지 않은 이상에 사용되며 프로세스가 붕괴될 수 있습니다.그러나 이러한 방법은 응용 프로그램에서 의외와 위험한 상태를 초래할 수 있다는 것을 잘 알고 있기 때문에 피해야 합니다.해석되지 않은 이상을 처리하려면 PM2forever 등 도구를 사용하여 효과적인 리셋 정책을 세워야 합니다.

스테디오
프로세스 대상이 자주 사용하는 세 가지 속성은 stdin, stdout, stderr입니다.이러한 속성은 터미널 입력과 출력(stdio)과의 상호작용 능력을 제공한다.stdin은 읽을 수 있는 흐름입니다. 이것은 입력으로 사용할 수 있음을 의미합니다.stdout와 stderr는 모두 쓰기 가능한 흐름입니다. 이것은 출력을 충당하는 것을 의미합니다.모든 흐름이 실현되는 흔히 볼 수 있는 방법은 pipe 방법이다.우리 예를 하나 봅시다.나는 이 과정을 위해 약간의 정보를 제공할 것이다.stdin은 터미널을 통해 노드를 사용합니다.js 암호화 모듈.그리고, 나는 다른 index라는 파일에서 입력을 컨트롤러에 기록할 것이다.js 사용 pipe 방법.

단말기
node -p "crypto.randomBytes(10).toString('hex')" | node index.js

색인js
'use strict';
console.log('initialized');
process.stdin.pipe(process.stdout);
위의 코드 세션을 실행하고 초기화된 crypto.randomBytes 방법으로 생성된 무작위 바이트를 출력합니다.
앞에서 말한 바와 같이, 프로세스 대상은 프로세스에 대한 정보를 포함하고 있으며, 몇 가지 예시를 보겠습니다.
'use strict'
console.log('Current Directory', process.cwd());
console.log('Process Platform', process.platform);
console.log('Process ID', process.pid);
console.log('Process CPU usage', process.cpuUsage());
console.log('Process', process.memoryUsage());
위의 코드 세션에서 현재 작업 디렉터리는 프로세스가 실행하는 폴더입니다.process.platform는 호스트 운영 체제를 나타냅니다.process.pid 현재 프로세스의 id를 되돌려줍니다.process.cpuUsage() 현재 프로세스의 사용자 및 시스템 CPU 시간 사용량을 반환합니다.process.memoryUsage() 노드 메모리의 사용 상황을 설명하는 대상을 되돌려줍니다.js 프로세스는 바이트 단위입니다.

운영 체제 모듈


운영 체제(915)에서 현재 실행 중인 프로그램 기능을 가져옵니다.
'use strict'
const os = require('os');

console.log('Hostname', os.hostname());
console.log('Home dir', os.homedir());
console.log('Temp dir', os.tmpdir());
console.log('type', os.type());
위의 코드 세그먼트에서 os.hostname는 운영체제의 호스트 이름을 문자열로 되돌려줍니다.os.homedir 현재 사용자 홈 디렉터리의 문자열 경로를 되돌려줍니다.os.tmpdir 운영 체제 임시 파일의 기본 디렉토리를 문자열로 반환합니다.os.type uname이 반환한 운영체제 이름을 반환합니다.사용 가능한 방법의 전체 목록을 보려면 운영 체제 모듈의 os를 방문하십시오.
시간을 내서 본문을 읽어 주셔서 감사합니다.도움이 된다면 이 시리즈를 구독하고 주의하세요.

좋은 웹페이지 즐겨찾기