newtask - 创建新任务,还可以更改项目
newtask [-p project [–d]] [-v] [-c pid | [-Fl] [command...]]
newtask 命令执行用户的缺省 shell 或某个指定命令,从而将所执行的命令置于指定项目所拥有的某个新任务中。用户的缺省 shell 是在 passwd 数据库中指定的,并使用 getpwnam() 来确定。
此外,newtask 可用来使已在运行的进程进入新创建的任务。还可以此命令形式为新任务指定项目。对于任务关键型且不能重新启动的进程,要将它们放置到新项目中,可能需要以上述方式进行指定。
在扩展记帐处于活动状态时,newtask 命令还会创建一条任务记帐记录来标记前面的系统任务的完成。
支持以下选项:
使某个正在运行的进程进入新创建的任务。还可以使用 –p 选项为新任务指定项目。调用方用户必须拥有进程或者具有超级用户特权。
如果是要更改项目,则进程所有者必须是指定的项目的成员,或者调用方用户必须具有超级用户特权。
当为某个正在运行的进程更改项目时,将应用项目属性,这样可能会更新资源控制、资源池绑定和多 CPU 绑定 (multi-cpu binding, MCB)。setproject(3PROJECT) 手册页中提供了有关如何应用项目属性的详细信息。
此选项与 –F 和 –l 选项不兼容。
如果项目未指定 project.pool 属性,则绑定到区域的缺省池。需要 –p。这将严重破坏任何现有的池或 pset 绑定。如果已将目标进程手动绑定到池或 pset,项目未指定 project.pool 属性,并且管理员希望为区域恢复缺省的池绑定,则此选项非常有用。若不使用此选项,如果项目未指定 project.pool 或 project.mcb 属性,则现有的池或 pset 绑定将保持不变。
创建一个最终任务,在最终任务中,进一步的 newtask 或 settaskid(2) 调用将失败。在某些站点上,最终任务有助于简化查明资源消耗原因的步骤。
将环境更改为用户作为新项目的成员实际重新登录时预期使用的环境。
更改新任务的项目 ID,使其与给定项目名称相关联。调用方用户必须是所请求项目的有效成员或者必须具有超级用户特权,该命令才能成功。如果未指定项目名称,则新任务将在项目用户的当前项目中启动。如果使用 –c 选项,而不使用 –p 选项,则目标进程将在其当前项目中启动新任务。
需要与 –p 和 –c 选项一起使用。此选项可以在目标进程已位于项目中时避免创建新任务。仅应用项目属性。
详细:在新的系统任务开始时显示系统任务 ID。
支持下列操作数:
应当对所创建的任务使用的资源负责的项目。必须已在 nsswitch.conf(5) 中定义的项目数据库中定义了所请求的项目。
要作为新任务执行的命令。如果未指定命令,则调用用户的登录 shell。(如果登录 shell 不可用,则调用 /bin/sh)。
以下示例在 canada 项目中创建一个新 shell,并显示任务 ID:
example$ id -p uid=565(gh) gid=10(staff) projid=10(default) example$ newtask -v -p canada 38 example$ id -p uid=565(gh) gid=10(staff) projid=82(canada)示例 2 运行 date 命令
以下示例在 russia 项目中运行 date 命令:
example$ newtask -p russia date Tue Aug 31 11:12:10 PDT 1999示例 3 更改现有进程的项目
以下示例将 pid 为 9999 的现有进程的项目更改为 russia:
example$ newtask -c 9999 -p russia
将返回以下退出值:
成功执行。
执行过程中发生致命错误。
指定的命令行选项无效。
包含此计算机的有效项目定义的本地数据库。
进程信息和控制文件。
有关以下属性的说明,请参见 attributes(7):
|
proc(1)、execvp(2)、setrctl(2)、settaskid(2)、setproject(3PROJECT)、nsswitch.conf(5)、proc(5)、project(5)、attributes(7)、id(8)、poolbind(8)