https://github.com/yurzi/cirno
A "smartest" task scheduler
https://github.com/yurzi/cirno
Last synced: about 2 months ago
JSON representation
A "smartest" task scheduler
- Host: GitHub
- URL: https://github.com/yurzi/cirno
- Owner: Yurzi
- License: mit
- Created: 2024-03-11T06:23:09.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-04T20:37:33.000Z (almost 2 years ago)
- Last Synced: 2025-03-02T04:38:58.651Z (over 1 year ago)
- Language: Rust
- Size: 71.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Cirno, a "smartest" processes scheduler
Cirno will help you to run tasks and keep your system away from freezing.
## Usage
See `cirno --help` for details.
This `cirno` will send signal to control child process.
`SIGALRM` is used to notify child when the child timeout.
`SIGTERM` is used to terminate child when resources are insufficient.
`SIGKILL` is used to kill child when child refused to self stop.
When Cirno finds that the system load exceeds the set value,
it will use the signal `SIGTERM` to temporarily terminate the task process in preparation for the next scheduling.
When Cirno detects that a task has timed out,
it will use the signal `SIGALRM` to notify the process and wait for process to exit on its own.
When Cirno must terminate a process,
it will help the process escape from child process hell (sending the signal `SIGINT` to its child processes),
and check the child process status in the next scheduling loop.
If these do not work, then `SIGKILL` will be sent to all.
## Examples
Run with task list without task name.
```
cirno -w 2 examples.list
```
Run with task list which contains task name.
```
cirno -w 2 --with-task-name examples_with_taskname.list
```
See `cirno --help` for more info.