首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从shell脚本中的后台函数中获取PID

,可以通过以下步骤实现:

  1. 在shell脚本中定义一个后台函数,该函数执行后台任务,并将任务的进程ID(PID)保存到一个变量中。例如,可以使用$!来获取最后一个后台任务的PID,将其保存到一个变量中。
代码语言:shell
复制
#!/bin/bash

# 后台函数
background_function() {
    # 执行后台任务
    command &
    
    # 获取任务的PID
    pid=$!
    
    # 输出PID
    echo "后台任务的PID为:$pid"
}

# 调用后台函数
background_function
  1. 在shell脚本中调用后台函数,执行后台任务并获取PID。可以通过$()或符号来执行函数,并将输出赋值给一个变量。
代码语言:shell
复制
#!/bin/bash

# 后台函数
background_function() {
    # 执行后台任务
    command &
    
    # 获取任务的PID
    pid=$!
    
    # 输出PID
    echo $pid
}

# 调用后台函数并获取PID
pid=$(background_function)

# 输出PID
echo "后台任务的PID为:$pid"

以上是从shell脚本中的后台函数中获取PID的方法。这种方法适用于需要在后台执行任务并获取其PID的场景,例如需要监控后台任务的运行状态、控制后台任务的终止等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

linux c程序获取shell脚本输出

前言   Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认是,借助脚本确实能够极大简化一些编程工作。...比如实现一个ping程序来测试网络连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统ping命令呢?通常在程序通过 system函数来调用shell命令。...方法就是fork一个子进程,并创建一个匿名管道,在子进程执行shell命令,并将其标准输出dup 到匿名管道输入端,父进程管道读取,即可获得shell命令输出,代码如下:   /**   *...使用popen   在学习unix编程过程,发现系统还提供了一个popen函数,可以非常简单处理调用shell,其函数原型如下:   FILE *popen(const char *command...Linux shell脚本也是一个强大工具,我们可以根据需要编制脚本,然后在程序调用自定义脚本

5.5K20

shell脚本】$ 在shell脚本使用

shell脚本 '$' 与不同符号搭配其表示意义也会不同 特殊标志符 含义 $0 当前脚本文件名 $n 传递给脚本函数参数。n 是一个数字,表示第几个参数。...例如,第一个参数是$1,第二个参数是$2 $# 传递给脚本函数参数个数 $* 传递给脚本函数所有参数 $@ 传递给脚本函数所有参数 $?...上个命令退出状态 $$ 当前Shell进程ID $() 与 `(反引号) 一样用来命令替换使用 ${} 引用变量划分出边界 注释:$* 和 $@ 都表示传递给函数脚本所有参数,不被双引号(" ".../bin/bash echo "file name $0" echo "first param $1" echo "pid $$" echo "total num of param $#" echo...echo "$@" echo "$*" 执行 ./1.sh hello mayuan file name ./1.sh first param hello pid 142 total num of param

6.1K20

mongoDB定时导出数据shell脚本

目标:编写一个shell脚本,以便能够将mongoDb数据导出成为csv格式文件。要求:1. 为了避免导出巨量数据,仅需要过滤出当月数据和上个月数据即可。2....由于当天数据是不完整,所以需要排除当天数据以下是一个例子,将代码保存为.sh文件后使用 chmod +x 将该脚本设置为可执行,然后使用crontab命令将脚本加到定时任务当中 #!...baseDate declare -i baseTime baseTime=$((date --date "$baseDate" +"%s" * 1000)) 导出指定数据表数据...}}}" -o $mypath/$2.csv else $exportCmd -d $1 -c $2 -f $3 -o $mypath/$2.csv fi } 导出第一张表所有数据...为当月和上月数据 echo 'export snsDev.T_Comment' fields="_id,del,from,mbId,mbOwner,nwId,ownerId,sendTime" exportData

1.3K22

Linux Shell脚本获取本机ip地址方法

inet6|awk '{print $2}'|tr -d "addr:" 命令解释      和window下执行此命令一样道理,返回本机所有ip信息 ifconfig -a 截取包含ip行...grep inet 去掉本地指向那行 grep -v 127.0.0.1 去掉包含inet6行 grep -v inet6 2 表示默认以空格分割第二组 同理 1表示第一组​ awk...多网卡情况 倘若有多个网卡,可能会出现多个不同网段IP,这个时候如果还是执行上述命令就会返回多个IP,如下: 假设某个机器有192.*.*.8和10.*.*....*网段IP,现在要实现不同网段IP地址打印不同输出,shell脚本如下 1 #!...*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}' 这里涉及awk命令,暂不展开详讲,后面会专门有一篇介绍awk命令文章哦

26.6K20

shell脚本$符号意义

// shell脚本$符号意义 // 今天是远程办公第4天,渐渐找到了一点在家办公节奏了,改了几个shell脚本,在改动过程,发现还有一些知识点需要巩固,这里写出来,加深下印象。...关于$符号,大家肯定都不陌生,在shell脚本,$作用还是比较大多,这里将所有的$组合都列出来,大家可以看下效果。 $组成命令大概有下面几个: $0,$1...$?,$!...该命令是显示shell脚本中上一个后台执行命令进程id号,如下: jwfyyzdembp:tmp jwfyyz$ cat test.sh echo '$*结果是':$* echo '$@结果是'...我们使用了sleep 10这样命令在后台执行,然后我们可以看到,$!...反应脚本某个命令进程号。

4.1K10

MakefileShell脚本简介

给很多刚接触Makefile的人: 1、Makefile可以嵌入shell脚本,而且能像shell脚本中一样,各种命令、控制结构都可使用。 2、Makefile主要结构是 ......只有在command位置shell脚本才是有效,也就是只有在“生成目标的规则处”写shell脚本才是shell脚本,其它位置shell都是无效。...3、Makefileshell,不同行在不同进程执行,不同行直接不能传递变量,所以很多时候shell都尽量使用反斜杠()来把相关内容串成一行。...4、Makefile变量和shell变量是两个不同东西,并且为了避免Makefile变量和shell变量冲突,引用Makefile变量最好使用$(Makefile_Var),引用shell变量时最好使用...但如果在纯粹shell编程,纯shell脚本里可以使用$VAR来引用VAR这个变量。 收藏于 2012-08-08

2K80

Shell脚本 DevNull 用途

在命令行和脚本中都非常有用 用途 /dev/null 通常被用于丢弃不需要输出流,或作为用于输入流空文件,这些操作通常由重定向完成,任何你想丢弃数据都可以写入其中 丢弃标准输出 在写shell脚本时候...,只想通过命令结果执行后面的逻辑,而不想命令执行过程中有一大堆中间结果输出,这时候可以把命令执行过程输入全部写入 /dev/null 现有 a.sh 脚本,它功能是判断传入系统命令是否存在,脚本内容如下...[tt@ecs-centos-7 dev_test]$ 执行结果可以看出,把 command -v $1 中间结果重定向到 /dev/null 之后,就不会再输出top命令路径了 而且,修改之后脚本执行结果和原来结果是一样...丢弃标准错误输出 在shell脚本,删除一个文件时候,需要先判断文件是否存在,然后才能执行删除操作,否则删除时候会输出错误, 一般删除文件脚本内容如下: #!...在脚本,为了方便调试,经常会加一些日志打印逻辑,有时这种调试日志还比较多,脚本测试通过之后,这些调试日志可能就删除或者注释掉了 这里提供一个小技巧,既不用删除也不用注释掉日志,同时执行脚本时候还不会输出这些调试日志

1.1K20

20.1620.17 shell函数

shell函数 把一段代码整理到了一个小单元,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元名字即可。...函数就是一个子shell,就是一个代码段,定义完函数就可以引用它 格式: function 后是函数名字,并且 function 这个单词是可以省略掉 花括号{} 里面为具体命令...[root@hf-01 shell]# 函数,可以直接写在脚本内,相当于直接调用 內建变量 $1 第一个参数 $2 第二个参数 ... ~ $# 参数名字 $0 总共有几个参数 [root@...1 4 2 function.sh [root@hf-01 shell]# ---- 示例2 用于定义加法函数shell定义函数,必须放在上面 在shell里面需要优先定义函数,比如在调用这个函数时候...$ sh -x fun2.sh + sum 1 2 + s=3 + echo 3 3 [root@hf-01 shell]# ---- 示例3 显示IP,输入网卡名字,然后显示网卡IP #

19920

Shell-alias在Shell脚本使用

概述 在shell开启alias 实际操作 概述 众所周知,shell脚本使用是非交互式方式,在非交互式模式下alias扩展功能默认是关闭,此时虽然可以定义alias别名,但是shell不会将alias...别名扩展成对应命令,而是将alias别名本身当作命令执行,如果shell内置命令和PATH均没有与alias别名同名命令,则shell会找不到指定命令。...---- 在shell开启alias 使用shell内置命令shopt命令来开启alias扩展选项。...shopt是shell内置命令,可以控制shell功能选项开启和关闭,从而控制shell行为 常用命令: Command Desc shopt -s opt_name Enable (set) opt_name...项目启动中会依赖一些环境变量,所以双机启动脚本需要显式引入.bash_profile文件。 所以我们将 开启alias命令放在 .bash_profile

2.2K10

内核根据进程Pid获取全目录

一丶简介 在内核中有时候想通过PID 获取进程全路径以达到监控作用 比如我们设置了进程回调.则可以根据PID看下进程全路径....二丶原理 原理就是在内核 通过 ZwQueryInformationProcess 这个未公开函数 进行查询. 查询好是 ** ProcessImageFileName ** 也就是27号功能....但是查询出来路径是Dos路径.还需要进行转化. 1.传入PID 使用 ZwOpenProcess打开PID获取Handle 2.使用ZwQueryInfomationProcess*27号功能(ProcessImageFileName...) 传入 ProcessHandle来获取路径. 3.代码实现. 1.首先是未公开函数获取....NT路径 NTSTATUS GetDosPathByProcessId(ULONG pid) { /* 1.根据PID获取进程句柄 2.使用ZwQueryInformationProcess

1.7K10

shell函数和数组

20.16/20.17 shell函数shell函数关键字function是可以省略,而且和其他大部分编程语言一样,函数要声明在调用函数语句之前,因为代码都是从上至下执行。...以下写一个简单函数打印脚本参数,代码示例:0 表示脚本名称,# 表示此函数参数个数,要注意是在函数1、2、3获得函数参数,而不是脚本参数,在函数体外使用1、2、3获得才是脚本参数...在函数体外使用$n...获得才是脚本参数: ? 运行结果: ? ? 这个示例是定义一个用于进行加法运算函数: ? 运行结果: ?...20.18 shell数组 ? Shell数组合其他编程语言数组概念是一样,都是一堆数据集合,下标也是0开始,在日常编写shell脚本数组使用次数不像其他编程语言那么多。...第一个元素开始,截取3个元素,截取后原本数组元素不会有变动。 还可以倒着截取数组元素,例如我要从倒数第3个元素开始,截取2个元素: ?

2.3K10

shell脚本介绍,shell脚本结构和执行方式,date命令用法,shell脚本变量简介

Shell Script,Shell脚本与Windows/Dos下批处理相似,也就是用各类命令预先放入到一个文件,方便一次性执行一个程序文件,主要是方便管理员进行设置或者管理用。...Shell脚本文件名称是以.sh为后缀,用于区分这是一个shell脚本shell注释符是井号“#”,和其他编程语言一样,注释那一行内容不会被解释器执行,但是要注意区别“#!”...date命令在shell脚本作用很大,例如我在备份某个文件或者记录某些日志信息时候,就可以使用这个命令给这些备份文件或日志信息标记一个时间。...shell脚本变量和其他编程语言中变量含义是一样,都是用来存储一个数据,然后使用变量名就可以进行调用了,shell脚本语法和其他脚本语法类似,都不需要使用分号作为语句结束。...变量类型: 运行shell时,会同时存在三种变量:   1) 局部变量 局部变量在脚本或命令定义,仅在当前shell实例中有效,其他shell启动程序不能访问局部变量。

2.5K60
领券