首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windows、mac(达尔文)和linux上的进程进程

windows、mac(达尔文)和linux上的进程进程
EN

Stack Overflow用户
提问于 2021-01-12 17:54:47
回答 2查看 1.1K关注 0票数 1

如何通过Windows、达尔文和Linux中的进程名来杀死进程?比如,假设我需要杀死的进程是'vlc.exe‘(基本上关闭应用程序)。

下面是我编写的函数,用于检查该进程是否正在运行。

代码语言:javascript
复制
const isRunning = (query, cb) => {
    let platform = process.platform;
    let cmd = '';
    switch (platform) {
        case 'win32': cmd = `tasklist`; break;
        case 'darwin': cmd = `ps -ax | grep ${query}`; break;
        case 'linux': cmd = `ps -A`; break;
        default: break;
    }
    exec(cmd, (err, stdout, stderr) => {
        stdout = stdout.toLowerCase().replace(/\s/g, '');

        cb({status: stdout.indexOf(query.toLowerCase()) > -1});
    });
}

我把这个函数称为

代码语言:javascript
复制
isRunning('vlc.exe', (vlc) => {
    console.log({ vlc }); // true|false
});

所以,我知道VLC是否在运行。现在如果它在运行,我想关闭它。对于windows,它的任务杀死,但是对于达尔文和Linux呢?或者还有其他方法来扼杀进程?

EN

回答 2

Stack Overflow用户

发布于 2021-01-12 19:12:53

PID在ps输出中。如果pidof可用,您可以执行kill $(pidof vlc)。与其编写自己的代码来计算PID并执行此操作,您还可以将经过良好测试的模块用于相同的目的。

票数 1
EN

Stack Overflow用户

发布于 2021-01-13 07:46:40

在macOS上,很可能也在linux上。进程名为VLC。系统区分大小写,因此查找vlc.exevlc不会发现任何正在运行的进程。

你可以通过做这样的事情来玩

代码语言:javascript
复制
kill $(ps aux | grep -i 'vlc' | awk '{print $2}')

哪个会

  • ps aux -寻找所有进程
  • grep -i 'vlc'通过捕获带有名称、VLCvlc的进程来过滤ps (考虑强制大小写不敏感的-i参数)。
  • awk '{print $2}'只捕获PID数字。
  • kill要求系统通过给定的PID来优雅地停止过程。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65689348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档