Javascript 在windows、mac(darwin)和linux上按进程名称执行的Electron kill进程

Javascript 在windows、mac(darwin)和linux上按进程名称执行的Electron kill进程,javascript,node.js,electron,electron-forge,Javascript,Node.js,Electron,Electron Forge,如何在Windows、Darwin和Linux中按进程名终止进程? 比如,假设我需要终止的进程是“vlc.exe”(基本上关闭应用程序) 下面是我编写的用于检查此进程是否正在运行的函数 const isRunning = (query, cb) => { let platform = process.platform; let cmd = ''; switch (platform) { case 'win32': cmd = `tasklist`;

如何在Windows、Darwin和Linux中按进程名终止进程? 比如,假设我需要终止的进程是“vlc.exe”(基本上关闭应用程序)

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

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});
    });
}
我把这个函数称为

isRunning('vlc.exe', (vlc) => {
    console.log({ vlc }); // true|false
});
所以,我知道VLC是否正在运行。现在,如果它正在运行,我想关闭它。
对于windows,它的taskkill是的,但是对于darwin和Linux呢?或者是否有其他方法终止进程?

PID在
ps
输出中。如果
pidof
可用,您可以执行
kill$(pidof vlc)
。与其编写自己的代码来计算PID并进行杀戮,还可以将其用于相同的目的。

PID位于
ps
输出中。如果
pidof
可用,您可以执行
kill$(pidof vlc)
。您也可以将其用于相同的目的,而不是编写自己的代码来找出PID并进行杀戮。

在macOS上,很可能在linux上也是如此。进程名称为
VLC
。系统区分大小写,因此查找
vlc.exe
vlc
将找不到任何正在运行的进程

你可以做一些像这样的事情

kill $(ps aux | grep -i 'vlc' | awk '{print $2}')
哪个会

  • ps aux
    -查找所有流程
  • grep-i'vlc'
    通过捕获名为
    vlc
    vlc
    的进程来过滤ps(请考虑强制区分大小写的-i参数)
  • awk'{print$2}'
    仅捕获PID编号
  • kill
    要求系统根据给定的PID停止进程

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

你可以做一些像这样的事情

kill $(ps aux | grep -i 'vlc' | awk '{print $2}')
哪个会

  • ps aux
    -查找所有流程
  • grep-i'vlc'
    通过捕获名为
    vlc
    vlc
    的进程来过滤ps(请考虑强制区分大小写的-i参数)
  • awk'{print$2}'
    仅捕获PID编号
  • kill
    要求系统根据给定的PID停止进程

kill
后面是两个平台的pid应该完成这项工作。您能再详细说明一下吗?另外,我知道vlc.exe正在运行,那么我如何知道进程的PID呢?
kill
然后是两个平台的PID应该完成这项工作。您可以详细说明一下吗?另外,我知道vlc.exe正在运行,那么我如何知道进程的PID?您提供的模块“fkill”运行良好。感谢您提供的“fkill”模块运行良好。谢谢