`

子shell 进程ID($$)

阅读更多
shell脚本中$$指当前进程ID,而调用$()执行命令时会生成子shell,按理说$()中用$$获取到的进程号是子shell的进程ID,但shell的规则是它获取到的是current shell的pid,而current_shell的进程id在这表现为派生子shell的shell进程ID

#!/bin/bash
echo $$

test(){
    echo $$
}

$(test)

第一个$$和test里的$$输出是一样的.他们的current_shell 都是父shell

看看info bash里的说明
`$'
     Expands to the process ID of the shell.  In a `()' subshell, it
     expands to the process ID of the invoking shell, not the subshell.
再看看man bash里的说明
  $    
Expands  to  the process ID of the shell.  In a () subshell, it expands to the process ID of the current  shell, not the subshell.
分享到:
评论

相关推荐

    Shell脚本中获取进程ID的方法

    提问: 我想要知道运行中脚本子shell的进程id。我该如何在shell脚本中得到PID。 当我在执行shell脚本时,它会启动一个叫子shell的进程...在bash中,子shell进程的PID存储在一个特殊的变量‘$$’中。这个变量只读,你不可

    用shell写守护进程

    - **获取进程ID**:使用`$!`可以获取最近一次通过`&`启动的后台进程的PID。 - **等待进程结束**:`wait PID`命令用于等待指定的进程结束,并返回其退出状态。 #### 守护进程设计与实现 守护进程通常需要满足以下...

    杀进程的shell脚本,杀进程的shell脚本,杀进程的shell脚本,

    在操作系统中,进程是正在执行的程序的一个实例,每个进程都有一个唯一的进程ID(PID)。当我们谈论“杀进程”时,我们实际上是在说终止某个进程的运行。 使用Shell脚本来杀进程,主要涉及以下几个核心命令: 1. `...

    Shell脚本实现查杀子进程、僵尸进程

    核心服务器上跑了一堆的脚本、程序,难免有时候会出现僵尸进程,死不死活不活的在那里占用资源,最初只是写了个根据关键字查杀进程的linux shell脚本,后来发现很多时候进程死在那里的时候其实是内部调用子进程的...

    Shell编程范例之进程操作-TinyLab原创

    查看进程ID可以通过`pidof`命令完成,例如`pidof sleep`会返回sleep命令的进程ID。 查看进程的内存映像可以通过读取`/proc`文件系统中的特定文件,例如`cat /proc/9298/maps`会显示进程的内存区域布局。内存映像的...

    shell-_-Linux-.zip_shell 进程

    5. **GetProcPid.sh**:此脚本可能用于获取特定进程的PID(进程ID)。通过指定进程名称,它使用`pgrep`命令快速找到对应进程的ID,方便进一步的操作,比如杀死进程。 6. **GetProcCpu.sh**:这个脚本可能用于跟踪...

    父控制子进程通讯

    此时,两个进程具有各自的进程ID,但可能共享某些资源,如打开的文件描述符。 接下来,为了实现父进程向子进程发送命令,我们需要一种通信机制,这就是管道。管道是一种半双工的数据通信方式,允许数据在两个进程间...

    Shell中的特殊变量:$* $# $? $n

    变量 ...后台运行的最后一个进程的进程ID号 $? 上个命令或函数的退出状态。0表示没有错误,其他表明有错误 $- 显示shell使用的当前选项 $@ 传递给脚本或函数的所有参数,与$*类似 参考: ...

    详解Shell 脚本中 “$” 符号的多种用法

    `$$` 用于获取当前脚本或命令的进程ID。例如: ```bash echo $$ # 输出当前进程ID ``` 7. **后台运行的最后一个进程ID**: `$!` 提供了后台运行的最后一个进程的ID。例如,将命令放入后台运行: ```bash ...

    分享实用监控脚本:使用Shell检查进程是否存在.doc

    在某些情况下,可能有多个用户在同一台服务器上运行相同名字的进程,这就需要我们根据用户名和进程名来精确获取进程ID。以下是一个名为`GetPID`的Shell函数,它接收两个参数,分别是用户名和进程名,然后使用`ps`...

    Shell脚本实现Linux系统和进程资源监控

    例如,`GetPID`函数通过传入用户名和进程名,找出对应的进程ID。当进程不存在时,函数会返回提示信息"The process does not exist."。这有助于确保我们能够准确地定位到我们需要监控的进程。 2. **检测进程CPU利用...

    杀进程的shell程序

    但是,`kill`命令需要知道要杀死的进程ID(PID)。 在上述描述的shell脚本中,整个过程可以分为以下几个步骤: 1. **`ps -ef`**:这个命令是列出系统中所有进程的详细信息。`e`表示显示所有进程,`f`表示以树状...

    Shell $0, $#, $*, $@, $?, $$和命令行参数的使用

    当你运行一个Shell脚本,`$$`将返回该脚本的PID(进程ID)。 在实际应用中,这些变量可以用来处理用户输入、检查命令执行结果、控制流程等。例如,你可以用`$#`来决定是否需要处理特定数量的参数,或者使用`$?`来...

    Linux实验二:Linux-基本命令-进程管理.doc

    `ps -efj`列出所有进程,并以作业格式显示,包括PID(进程ID)、PPID(父进程ID)、PGID(进程组ID)和SID(会话ID)。将这些信息保存到文件,如`psdata`,便于后续分析。在vi编辑器中查看`psdata`,可以找出特定...

    shell学习,第一章

    }` 返回上一个命令的执行状态(0为成功,非0为失败),`${#}` 表示参数个数,`${*}` 和 `${@}` 分别以字符串和数组形式表示所有参数,`$$` 是当前shell进程ID,`$!` 是上一个后台命令的PID。 7. **字符串操作**:...

    shell讲义.pdf

    - `$$`:代表当前Shell进程的进程ID。 ### 变量相关操作 Shell脚本中还可以使用以下命令或结构来操作和利用变量: - `echo`:用于输出变量的值。 - `export`:用于导出环境变量,使其可以在子进程中使用。 - `...

    分享实用监控脚本使用:Shell检查进程是否存在.doc

    首先,我们要了解在Linux系统中,每个进程都有一个唯一的进程ID(PID),它是通过`ps`命令查询到的。`ps`命令可以显示系统当前的进程状态,而`-u`参数则可以指定查看某个用户的所有进程。例如,`ps -u root`会列出...

    使用代码验证linux子进程与父进程的关系

    `fork()`函数在执行时会复制父进程的所有资源,包括打开的文件、内存空间等,并返回两次:一次在父进程中返回新创建子进程的进程ID,一次在子进程中返回0。如果`fork()`失败,它将返回一个负值,通常是因为系统资源...

Global site tag (gtag.js) - Google Analytics