如何杀死进程中运行时间最长的实例

时间:2015-05-24 02:37:27

标签: powershell

我先说昨天这是我第一次看到Powershell。

我正在尝试创建一个脚本,根据其运行时间来终止进程“pptview”。具体来说,我可以同时运行几个pptview实例,但我只想杀死那个运行时间最长的实例。

到目前为止,我已经创建了一个脚本,用于搜索是否存在重复的进程实例。如果它没有找到任何它进入睡眠状态60秒,那么再次检查。

我正在使用taskkill通过PID终止进程 - 效果很好。

我坚持的一点是如何确定哪个是运行时间最长的实例以及如何获取PID以便我可以将其反馈给taskkill。

1 个答案:

答案 0 :(得分:1)

您不必使用Stop-Process来终止进程。您可以改用StartTime PowerShell cmdlet。要查找运行时间最长的流程,您可以按Get-Process pptview| Sort-Object StartTime| Select-Object -First 1| Stop-Process 对流程进行排序,然后选择第一个流程:

Get-Process pptview|
Sort-Object StartTime -Descending|
Select-Object -Skip 1|
Stop-Process

但有些事情告诉我,你想要阻止除最年轻者之外的所有人:

 --Table  with list of string names 
    Create table strings (string_id  number,string_name varchar2(2000) );

    --Table to store new string names in random order
    Create table new_table (string_id  number,string_name varchar2(2000) );

--Function to generate random numbers
create or replace  function random(p_number in number)
    return number
    is
    a number;
    begin
   select dbms_random.value(1,10) into a
    from dual;
    a := floor(a);
   return a;
    end;
    /

delete from strings;
delete from new_table;

insert into strings values(1,'abc');
insert into strings values(2,'def');
insert into strings values(3,'ghi');

insert into strings values(4,'abc 1');
insert into strings values(5,'def 1');
insert into strings values(6,'ghi 1');

insert into strings values(7,'abc 2');
insert into strings values(8,'def 2');
insert into strings values(9,'ghi 2');

insert into strings values(10,'xyz 3');


--Procedure to  pick string names randomly from strings table and insert  into new_table
create or replace procedure proc_string(p_no in number)
as
s_id  number;
s_name varchar2(2000);
begin
select random(1) into s_id from dual;
select string_name into s_name from strings where string_id = s_id;
insert into New_table values(s_id,s_name);
dbms_output.put_line('insert successfully completed');
commit;
Exception when others
then dbms_output.put_line('ERROR:' || SQLCODE || ' ' || SQLERRM);
end;
/

commit;