#limit #operating-system #file #kernel #os

limits-rs

用于确定操作系统对特定进程施加的限制的实用程序

2个不稳定版本

0.2.0 2023年1月9日
0.1.0 2020年2月7日

#384 in Unix APIs

Download history 2607/week @ 2024-03-14 2448/week @ 2024-03-21 2429/week @ 2024-03-28 1343/week @ 2024-04-04 1458/week @ 2024-04-11 1642/week @ 2024-04-18 1674/week @ 2024-04-25 1328/week @ 2024-05-02 3075/week @ 2024-05-09 2217/week @ 2024-05-16 1989/week @ 2024-05-23 1993/week @ 2024-05-30 1822/week @ 2024-06-06 1298/week @ 2024-06-13 2146/week @ 2024-06-20 1779/week @ 2024-06-27

7,499 monthly downloads

MIT/Apache

16KB
208 lines

limits-rs

Build Status Crate Docs License

一个用于确定操作系统对特定进程施加的限制的Rust库。

操作系统支持

在其当前实现中,此crate允许方便地读取GNU/Linux上的/proc/<pid>/limits文件。在其他任何平台上,提供的方法将返回错误,以便用户可以在缺少限制信息的情况下决定如何操作。

可根据需求添加对其他操作系统和平台的支持。请随意提交问题或创建PR!

示例

检查特定PID的限制

use limits_rs::get_pid_limits;

// Let's check what the CPU time hard limit is for process `1`.
let limits = get_pid_limits(1).unwrap();
let max_cpu_time_hard_limit = limits.max_cpu_time.hard;

// This will print either:
// - "Some(x)" if there is a limit, where `x` is the limit itself.
// - "None" if it is "unlimited".
println!("{}", max_cpu_time_hard_limit);

检查我们自己的PID的限制

use limits_rs::get_pid_limits;

// Let's check what the open files soft limit is for our own process.
let limits = get_own_limits().unwrap();
let max_open_files_soft_limit = limits.max_open_files.soft;

// This will print either:
// - "Some(x)" if there is a limit, where `x` is the limit itself.
// - "None" if it is "unlimited".
println!("{}", max_open_files_soft_limit);

支持的“可限制”属性

GNU/Linux

limits-rs::linux::Limits跟踪的属性有

  • max_cpu_time
  • max_file_size
  • max_data_size
  • max_stack_size
  • max_core_file_size
  • max_resident_set
  • max_processes
  • max_open_files
  • max_locked_memory
  • max_address_space
  • max_file_locks
  • max_pending_signals
  • max_msgqueue_size
  • max_nice_priority
  • max_realtime_priority
  • max_realtime_timeout

其他操作系统

如前所述,可根据需求添加对其他操作系统和平台的支持。请随意提交问题或创建PR!

许可证

Scriptful在MIT许可证和Apache许可证(版本2.0)的条款下分发。

有关详细信息,请参阅LICENSE-APACHELICENSE-MITCOPYRIGHT

依赖项

~265–720KB
~17K SLoC