GoGPT Best VPN GoSearch

OnWorks 网站图标

杀手 - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行杀手

这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令杀手,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


杀手 - 后台工作杀手

概要


杀手 [-h[-V[-n[-d]

商品描述


凶手 是一个摆脱后台作业的 perl 脚本。 后台作业定义为
属于当前未登录计算机的用户的进程。 工作可以
在后台运行(并且免于 凶手的动作)如果他们的日程安排
通过增加他们的优先级已经降低了 不错(1) 值或它们是否正在运行
通过 秃鹰. 有关更多详细信息,请参阅 本文件的部分。

以下部分描述了 perl的(1) 组成杀手程序的包。 一世
不要指望对我有用的版本对每个人都适用。 我认为
ProcessTable 和 Terminals 包提供了足够的灵活性,大多数修改都可以
在主包中完成。

命令行选项

-h 告诉我如何获得帮助

-V 显示版本号

-n 不杀,只打印会被杀的

-d 启用调试输出

工艺表


每个 ProcessTable 对象都包含映射各个方面的哈希(或关联数组)
作业的进程 ID (PID)。 提供了以下哈希值:

pid2user 与进程正在运行的有效 UID 关联的登录名。

pid2ruser 登录名与进程运行时的真实 UID 相关联。

pid2uid 进程正在运行的有效 UID。

pid2ruid 进程正在运行的真实 UID。

pid2tty 与进程关联的终端。

pid2ppid 进程的父进程

pid2nice 不错(1)过程的价值。

pid2comm 进程的命令名称。

此外,%remainingprocs 哈希提供将被杀死的进程列表。

这个包的预期用途要求 读取进程表 被要求填写所有
上面定义的哈希。 然后,删除满足特定要求的流程
来自 %remainingprocs 哈希。 那些没有被删除的被认为是背景
进程并可能被杀死。


这个函数创建一个新的 工艺表 目的。

计费示例:

我的 $ptable = 新 ProcessTable;

初始化
此函数(重新)初始化数组和外部命令的任何环境变量。
它通常不需要被调用,因为它被调用 新().

计费示例:

# 清空进程表以备重用
$ptable->初始化();

读取进程表
该函数执行 ps(1) 命令来确定哪些进程正在运行。 笔记
它需要 SYSV 风格 ps(1)。

计费示例:

# 从操作系统获取进程列表
$ptable->readProcessTable();

干净的叉子炸弹
该函数查找一个用户拥有的大量进程,并假设它
有人正在使用 叉子() 首次。 清理此类垃圾的有效方法
混乱是“kill -STOP”每个进程然后“kill -KILL”每个进程。

请注意,此功能会通过 root 忽略此类错误。 如果 root 正在运行 (2) 炸弹,这个
脚本不会运行,对吧? 此外,您应该确保进程数
下面提到的 (490) 小于(等于会更好,对吧?)
每个用户的进程数。 此外,操作系统应该有至少几百个进程限制
高于任何个人。 否则,你将不得不使用电源开关来摆脱
的叉形炸弹。

每次向进程发送信号时,都会通过 系统日志(3C)。

计费示例:

# 摆脱分叉炸弹。 在@idiots 中跟踪是谁做的。
我的@idiots = $ptable->cleanForkBombs();

获取用户进程 ID 用户
这将返回进程 ID 的列表,其中登录与实际 UID 相关联
process 匹配函数的参数。

计费示例:

# 查找所有属于httpd的进程
我的@webservers = $ptable->getUserProcessIds('httpd');

获取UniqueTtys
此函数返回正在使用的终端列表。 请注意,格式将相同
ps(1)、一般会缺少引导“/ dev /".

计费示例:

# 获取进程附加到的所有终端的列表
我的@ttylist = $ptable->getUniqueTtys();

删除进程ID PID
此函数从要杀死的进程列表中删除 pid。 也就是说,它摆脱了
应该允许运行的进程。 这很可能只会被其他人调用
此包中的功能。

计费示例:

# 出于某种原因,我知道应该允许 PID 1234 运行
$ptable->删除进程ID(1234);

删除进程 普斯菲尔德,
此函数删除具有某些特征的进程。 例如,如果你想
摆脱用户“lp”拥有的所有进程或所有具有 /dev/console 的进程
他们的控制终端,这是给你的功能。

psfield 可以是以下任何一项

pid 删除在第二个参数中给出的进程 ID。

user 删除具有与第二个给出的登录名关联的有效 UID 的进程
论据。

ruser 删除具有与第二个给出的登录名关联的真实 UID 的进程
论据。

uid 删除具有在第二个参数中给出的有效 UID 的进程。

ruid 删除具有在第二个参数中给出的真实 UID 的进程。

tty 删除具有在第二个参数中给出的控制终端的进程。 注意
它不应该以“/ dev /".

ppid 使用第二个参数中给出的 PID 删除进程的子进程。

nice 删除具有等于第二个参数的 nice 值的子项。

comm 删除命令名称与第二个参数相同的子项。

例子:

# 允许所有 imapd 进程运行
$ptable->removeProcesses('comm', 'imapd');

# 确保不要杀死打印作业
$ptable->removeProcesses('ruser', 'lp');

移除儿童 PID
此函数删除给定 pid 的所有后代。 也就是说,如果 pid 参数为 1,
它将确保没有任何东西被杀死。

计费示例:

# 确保不要终止任何邮件传递(假设你有
# 编写了 getSendmailPid())。 (Sendmail 更改 uid 时
#本地交付。)
$ptable->removeChildren(getSendmailPid);

移除CondorChildren
Condor 是一个批处理作业系统,允许在机器之间迁移作业(参见
http://www.cs.wisc.edu/condor/)。 这确保了秃鹰工作不受打扰。

计费示例:

# 善待那些通过 condor 管理工作的人。
$ptable->removeCondorChildren();

查找子进程 PID
此函数查找并返回所有进程的列表,这些进程是一个进程的后代
第一个参数中给出的PID。

计费示例:

# 找出 PID 1234 的后代进程
我的@procs = $ptable->查找子进程(1234);

获取Ttys 用户
此函数返回特定进程拥有的进程正在使用的 tty 列表
用户。

计费示例:

# 查找 gerdts 使用的所有 tty。
我的@ttylist = getTtys('gerdts');

获取用户
此函数列出所有具有活动进程的用户。

计费示例:

# 获取所有登录的用户
我的@luusers = $ptable->getUsers()

删除好工作
此函数删除所有 nice 值大于 9 的作业。也就是说,它们有
比默认值 (0) 更低的调度优先级。

计费示例:

# 允许人们运行后台作业,只要他们屈服
# 那些有“前台”工作的人
$ptable->removeNiceJobs();

打印过程 文件句柄, PID
此函数显示有关进程的信息,有点像“ps | grep”。

计费示例:

# 将有关init的信息打印到STDERR
$ptable->printProcess(\*STDERR, 1);

打印处理表
打印处理表 文件句柄
此函数打印有关由发现的所有进程的信息 读取进程表。 如果
给定参数,它应该是输出应该打印到的文件句柄。

例子:

# 将进程表打印到标准输出
$ptable->printProcessTable();

# 将进程表邮寄给某人
打开 MAIL '|/usr/bin/mail 某人';
$ptable->printProcessTable(\*MAIL);
关闭(邮件);

打印剩余进程
打印剩余进程 文件句柄
此函数打印有关由发现的所有进程的信息 读取进程表, 但不是
从 %remainingprocs 中删除。 如果给出一个参数,它应该是一个文件句柄
应该打印输出。

例子:

# 将要杀死的作业打印到标准输出
$ptable->printRemainingProcesses();

# 将要杀死的工作邮寄给某人
打开 MAIL '|/usr/bin/mail 某人';
$ptable->printRemainingProcesses(\*MAIL);
关闭(邮件);

获取剩余进程
返回可能是后台作业的进程列表。

计费示例:

# 获取我计划杀死的进程列表
我的@procsToKill = $ptable->getRemainingProcesses();

杀死所有 信号编号
将指定的信号发送到列出的所有进程。 系统日志条目是为每个
发送的信号。

计费示例:

# 向所有剩余的进程发送一个 TERM 信号,然后一个
# 杀死信号
$ptable->杀死所有(15);
睡觉(10); # 给他们一点清理的机会
$ptable->杀死所有(9);

刷卡机


Terminals 包提供了一种方法来确定各种用户已经使用了多长时间
闲置的。


此函数用于实例化一个新的 Terminals 对象。

计费示例:

# 获取一个新的终端对象。
我的 $term = 新终端;

初始化
这个函数计算出谁在系统上以及他们闲置了多长时间。 它
通常只会被调用 新().

计费示例:

# 刷新终端状态。
$term->initialize();

显示控制台用户
此函数返回实际坐在机器前的人的登录信息。

计费示例:

# 在控制台打印出此人的登录信息
printf "%s 在控制台上\n", $term->showConsoleUser();

初始化 终端 统计数据
这将初始化给定终端的内部结构。

获取X11空闲时间 用户
找出用户在 X11 中空闲的时间。 返回空闲时间的秒数。

空闲时间 用户
弄清楚用户空闲了多长时间。 这是通过检查所有终端来完成的
用户拥有并返回自最近一次访问以来的时间量
用过的。 此外,如果用户在控制台,他/她可能不在
打字,但使用鼠标或打字到不使用的应用程序中非常活跃
一个终端。

计费示例:

# 计算控制台上的用户空闲了多长时间
我的 $consoleIdle = $term-getIdleTime($term->showConsoleUser());

打印一切
打印到标准输出谁在哪个终端上以及他们闲置了多长时间。 只有有用
用于调试。

计费示例:

# 看看我的结构体的内容
# 终端对象
$term->printEverything();


主包是大学 Unix 工作站上使用的版本
Wisonsin 的计算机辅助工程中心 (CAE)。 我怀疑其他地方的人
与 CAE 想要做的事情略有不同。 随意将此作为
如何有效使用 processTable 和 Terminals 包的示例。

配置 选项
$forkadmin 用于通知分叉炸弹的电子邮件地址

$killadmin 通知普通杀戮的电子邮件地址

$fromaddr 电子邮件声称来自谁?

$顽固的管理员
用于通知作业何时不会消亡的电子邮件地址

@validusers 这些是你永远不应该杀死的人

$minuid 不要杀死 uid 低于此值的用户的进程。

$最大时间
用户不分类可空闲的最大秒数
因为有“背景”工作。

如果我是一个真正想避免后台工作杀手的用户,我可能会包含一个
将等待信号 15 的信号处理程序。当我看到它时,我会分叉导致
父母死了,孩子会继续做我的工作。

假设每个人都像我一样思考,我想我至少需要制作两个
完成通行证以清除不良用户。 第一遍比较好看(发个
信号 15,稍后是信号 9)。 一个编写好的程序将需要
信号 15 作为它应该清理然后关闭的标志。 当一个进程得到一个
信号9,它别无选择,只能死。

第二关不是那么好。 它找到所有后台进程,向它们发送信号 23
(SIGSTOP),然后是信号 9 (SIGKILL)。 这几乎(但不是绝对)保证
进程无法找到绕过后台工作杀手的方法。

收集信息
此函数从 Terminals 和 ProcessTable 包中收集信息,然后基于
根据该信息决定应允许运行哪些作业。 具体来说,它执行
在以下:

· 实例化新的 ProcessTable 和 Terminals 对象。 请注意 Terminals::new 填写
捕获在调用之间登录的用户的所有必要结构
收集信息.

· 读取进程表

· 从要杀死的进程列表中删除 condor 进程和 condor 作业。

· 从配置数组@validusers 中删除属于所有用户的所有作业
要杀死的进程列表。

· 删除所有 不错(1) 待杀作业列表中的作业。

· 删除属于用户空闲时间少于 $maxidletime 的所有作业
在至少一个终端上。 此外,与 ttys 相关的作业由
保留在至少一个终端上的空闲时间少于 $maxidletime 的用户。
这使得如果 luser 使用 su(1)获取boozer的权限,进程
布泽尔所拥有的不会被杀死。

· 删除 uid 低于 $minuid 值的用户的所有进程。

· 最后返回进程表和终端对象。

使用 onworks.net 服务在线使用杀手


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad




×
广告
❤️在这里购物、预订或购买——免费,有助于保持服务免费。