
그것은 무엇입니까?
나는 나만의 작업 대기열 시스템을 구축했는데 훌륭하게 작동합니다. 사용자는 사용하려는 코어(스레드) 수와 프로그램이 종료되는 최대 시간을 입력할 수 있습니다. 대기열 시스템은 파일을 통해 통신합니다. 특히 다음과 같은 실행 파일과 파일이 존재합니다.
문서
root jobq 0 Jun 29 10:53 .commands
root jobq 45591 Jun 29 10:52 log.txt
root jobq 0 Jun 29 10:53 .queue
root jobq 48 Jun 29 10:52 .status
root jobq 30 Jun 28 08:40 .system_buffer
실행 가능 파일
root jobq 52 Jun 22 08:36 .jobq_exec
root jobq 1100896 Jun 22 08:36 jobq_server
root jobq 271 Jun 22 08:36 jobq_server_start
root jobq 364072 Jun 22 08:36 jobq_server_stop
root jobq 363928 Jun 22 08:36 jobq_status
root jobq 368112 Jun 22 08:36 jobq_stop
root jobq 372512 Jun 22 08:36 jobq_submit
작동 방식:
jobq_server_start
jobq_server라는 프로세스가 실행 중인지 확인하고 그렇지 않은 경우 시작을 시도하는 간단한 쉘 스크립트입니다.
jobq_server_stop
.commands
파일 에 기록됩니다 .
jobq_status
파일 에 쓰고 .commands
파일에서 읽습니다 .status
.
jobq_submit
.queue 파일에 기록됩니다.
.jobq_exec
taskset
명령줄 인수를 통해 작업을 전달하고 출력을 리디렉션하여 작업을 시작하는 쉘 스크립트입니다.
.jobq_stop
.commands
파일 에 쓸 것입니다
jobq_server
.commands
, 및 를 log.txt
읽고 쓰는 바이너리 파일입니다 ..queue
.status
.system_buffer
질문
현재 모든 것은 한 명의 사용자( jobq
)가 사용하고 있으며 여러 사람이 공유하고 있습니다. 파일 제한을 설정하고 싶습니다.
jobq_submit
각 사용자는 및 명령jobq_status
을 스스로 실행할 수만 있습니다. 따라서 예를 들어 as가 아닌 asjobq_stop
로 로그인해야 합니다 . 가능하다면 텍스트 파일을 직접 편집하는 것을 허용하지 마십시오( , ).johndoe
jobq
.commands
.queue
- 각 작업은 작업을 제출한 사용자로 시작됩니다. 따라서 해당 사용자가 시작한 작업만 중지할 수 있습니다. 이는
.job_exec
사용자로 전환하려면 스크립트(아래 참조)를 변경해야 함을 의미할 수 있습니다. 나는 이것이 또한 서버가 루트로만 시작될 수 있다는 것을 의미한다고 생각합니다. 이는 괜찮습니다.
스크립트 정보
.jobq_exec
#!/bin/bash
cd $1
$5 1> $2 2> $3 &
echo $! > $4 2>&1
사용법(서버 바이너리에 의해 수행됨)
.job_exec 1:working_directory 2:out_file 3:err_file 4:buffer_file 5:'taskset -ac 1,2,3,4 command cmd_args...'
(명확성을 위해 매개변수 번호가 추가됨)
추가 정보
저는 Linux Mint 20.3 Una를 실행하고 있습니다.
uname -r
5.4.0-105-generic