linux如何得知上一个命令的pid

不及物动词 其他 217

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    要得知上一个命令的PID(进程标识符),你可以使用shell内置变量$!来获取。$!会返回最近一个在后台运行的进程的PID。

    以下是一个例子:

    “`shell
    # 运行一个后台进程
    sleep 10 &

    # 获取上一个命令的PID
    echo “上一个命令的PID是: $!”
    “`

    在上面的例子中,我们启动了一个后台进程`sleep 10`,然后使用`$!`变量来获取它的PID,并将其打印出来。

    注意,如果上一个命令在后台运行,则$!将返回其PID,但如果上一个命令在前台运行,$!将返回空值。

    此外,如果你需要得知某个前台进程的PID,你可以使用`pgrep`命令结合进程名来获取。例如,要获取`ls`命令的PID,可以使用以下命令:

    “`shell
    pgrep ls
    “`

    希望对你有所帮助!

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Linux系统中,我们可以使用一些命令和技巧来获取上一个命令的PID(进程ID)。下面是几种常用的方法:

    1. 使用$!变量:$!变量是一个特殊变量,它存储了最后一个在后台运行的命令的PID。我们可以使用echo命令打印出$!的值,来获取上一个命令的PID。

    “`
    $ command1 &
    [1] 12345 # 运行command1,并返回PID
    $ echo $!
    12345 # 打印出上一个命令的PID
    “`

    2. 使用ps命令结合grep命令:ps命令用于查看当前系统中运行的进程,而grep命令用于搜索匹配的行。我们可以通过将ps命令的输出通过管道传递给grep命令,来过滤出我们想要的进程信息。

    “`
    $ ps -ef | grep “command1”
    username 12345 0.0 0.0 12345 1234 pts/0 00:00:00 command1
    “`

    在上面的例子中,我们使用ps -ef来获取所有运行的进程,并通过管道传递给grep命令来搜索包含”command1″的行。结果中的第二列就是上一个命令command1的PID。

    3. 使用pgrep命令:pgrep命令是一个用于查找符合指定条件的进程的工具。我们可以使用pgrep命令结合-e选项来通过进程名称来查找对应的进程。

    “`
    $ pgrep -x “command1”
    12345
    “`

    在上面的例子中,我们使用pgrep -x “command1″命令来查找名称为command1的进程,并返回对应的PID。

    4. 使用$$变量:$$变量是一个特殊变量,它存储了当前Shell进程的PID。在Shell脚本中,我们可以使用echo命令打印出$$的值,来获取当前Shell脚本的PID。

    “`
    $ echo $$
    6789
    “`

    在上面的例子中,我们使用echo $$命令来打印出当前Shell进程的PID。

    5. 使用ps命令结合PID文件:有些程序在运行时会生成一个PID文件,用于存储进程的PID。我们可以通过读取该文件来获取上一个命令的PID。

    “`
    $ cat /var/run/command1.pid
    12345
    “`

    在上面的例子中,我们通过cat命令读取/var/run/目录下的command1.pid文件,其中存储了上一个命令command1的PID。

    总结:通过使用$!变量、ps命令结合grep命令、pgrep命令、$$变量和PID文件,我们可以很容易地获取上一个命令的PID。根据具体的需求和使用场景,选择合适的方法来获取PID是非常方便的。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    要获取上一个命令的PID,可以使用`$!`变量。在Linux中,`$!`变量用于获取最近一个在后台运行的命令(作业)的PID。

    下面,我将为你提供一种获取上一个命令PID的方法,包括操作流程和示例代码。

    ## 方法一:使用$!变量

    1. 执行需要获取PID的命令,例如:`ls -l`。
    2. 执行命令:`echo $!`,将打印出上一个命令的PID。

    下面是一个示例:

    “`
    $ ls -l
    total 0
    drwxrwxr-x 1 user group 40 Feb 25 10:00 dir1
    drwxrwxr-x 1 user group 40 Feb 25 10:00 dir2
    $ echo $!
    12345
    “`

    示例中,`ls -l`命令的PID为12345。

    ## 方法二:使用`ps`命令和`grep`命令

    1. 执行需要获取PID的命令,例如:`ls -l`。
    2. 执行命令:`ps -ef | grep “ls -l” | grep -v grep`,将打印出包含该命令的进程信息。
    3. 从进程信息中获取PID。

    下面是一个示例:

    “`
    $ ls -l
    total 0
    drwxrwxr-x 1 user group 40 Feb 25 10:00 dir1
    drwxrwxr-x 1 user group 40 Feb 25 10:00 dir2
    $ ps -ef | grep “ls -l” | grep -v grep
    user 12345 6789 0 10:00 pts/0 00:00:00 ls -l
    “`

    示例中,`ls -l`命令的PID为12345。

    ## 方法三:使用`pgrep`命令

    1. 执行需要获取PID的命令,例如:`ls -l`。
    2. 执行命令:`pgrep “ls -l”`,将打印出包含该命令的进程PID。

    下面是一个示例:

    “`
    $ ls -l
    total 0
    drwxrwxr-x 1 user group 40 Feb 25 10:00 dir1
    drwxrwxr-x 1 user group 40 Feb 25 10:00 dir2
    $ pgrep “ls -l”
    12345
    “`

    示例中,`ls -l`命令的PID为12345。

    通过以上三种方法,你可以轻松获取上一个命令的PID。你可以根据自己的需要选择其中一种方法来实现。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部