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

pgrep在makefile中返回true,但在shell中不返回true

pgrep是一个用于查找进程的命令,它可以根据进程的名称或其他属性来查找进程的PID(进程ID)。在makefile中使用pgrep返回true,但在shell中不返回true的原因可能是环境变量的差异。

在makefile中,通常会定义一些特定的环境变量,以便在构建过程中使用。这些环境变量可能会影响pgrep命令的执行结果。例如,可能会设置一个特定的进程名称,以便在makefile中使用pgrep查找该进程是否在运行。

而在shell中,可能没有定义相应的环境变量,或者环境变量的值不同,导致pgrep命令无法找到对应的进程,从而返回false。

解决这个问题的方法是确保在shell中使用pgrep时,环境变量的设置与makefile中一致。可以通过在shell中手动设置相应的环境变量,或者在shell脚本中引入makefile中定义的环境变量来实现。

另外,还需要注意的是,pgrep命令的行为可能因操作系统的不同而有所差异。因此,在不同的操作系统中使用pgrep时,可能需要针对特定的操作系统进行适配。

关于pgrep的更多信息,你可以参考腾讯云的文档:pgrep命令

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

相关·内容

小心这个陷阱: 为什么JS的 every()对空数组总返回 true

我的理解,我认为回调函数必须被调用并返回true , every() 才会返回 true ,但实际上并非如此。...这只能发生的唯一原因是如果回调函数没有被调用,而 every() 的默认值是 true 。但是,为什么没有值来运行回调函数时,空数组会返回 true 给 every() 呢?...; }; 从代码,你可以看到 every() 假设结果是 true ,并且只有回调函数对数组的任何一项返回 false 时才返回 false 。...在数学和JavaScript的“对所有”的量词 MDN页面 提供了为什么 every() 会对空数组返回 true 的答案: every 的行为就像数学的“全称量词”。...回调函数代表要测试的条件,如果由于数组没有值而无法执行它,那么 every() 必须返回 true

18020

Linux 开发 | 学习 Makefile

$ 有特殊含义,如果要表示它的字面意思需要写两个 $,所以 Makefile 的四个 $ 传给Shell变成两个 $,而两个 $ Shell中表示当前进程的id,一般用它给临时文件起名,以保证文件名唯一...命令中使用变量注意 前面提到, $ make 和 shell 要注意的地方, 再举个例子 LIST = one two three all: for i in $(LIST); do \...---- Makefile 的变量 Makefile 的变量,就如程序的宏定义,代表一个字串,使用的地方展开,通过 $(variable) 表示变量的内容,和 shell 类似。...) # 返回绝对路径, 包含 . 或者 .. # 如果文件不存在,返回空 $(abspath names ...) # 返回绝对路径, 包含 . 或者 .....例子, Makefile 获取最后一个 git 提交的 SHA 赋值给变量。

5.3K10

笔记 | 如何在Python下调用Linux的Shell命令?

这些方法适用于子进程调用外部程序的情况,因为外部程序会替换当前进程的代码,不会返回。...只返回输出结果 * commands.getstatus(file) 返回ls -ld file的执行结果字符串,调用了getoutput,建议使用此方法...而且popen还有三个变种都是I/O处理上有轻微不同。假如你通过一个字符串传递所有东西,你的命令会传递给shell;如果你通过一个列表传递他们,你不用担心逃避任何事。 4.3....比如你可以使用 print Popen("echo Hello World", stdout=PIPE, shell=True).stdout.read() 来替代 print os.popen(...比如: return_code = subprocess.call("echo Hello World", shell=True) os模块还有C那样的fork/exec/spawn函数,但是我建议直接使用它们

4.5K20

Shell-aliasShell脚本的使用

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

2.2K10

Makefile学习2

如果变量的值非空(Makefile,没有定义的变量的值为空),表达式为真。...重复这个过程,直到遍历完LIST的最后一个单词。函数的返回值是TEXT多次计算的结果。...Makefile可以使用的通配符有:* 、? 、 […]。通配符的使用方法和含义和在shell中一样。 通配符 使用说明 * 匹配0个或者是任意个字符 ?...:所有更新过的依赖文件 Makefile,通配符主要用在两个场合: 用在规则的目标和依赖:make在读取Makefile时会自动对其进行匹配处理 test: *.o gcc -o $@ $...^ *.o: *.c gcc -c $^ 用在规则的命令:通配符的通配处理shell执行命令时完成 clean: rm -f *.o 除了以上两种情况,在其他地方都不能直接使用通配符

29310

Linux makefile 教程 非常详细,且易懂

好吧,还是先来看几个例子吧: clean: rm -f *.o 上面这个例子我不多说了,这是操作系统Shell所支持的通配符。这是命令的通配符。 print: *.c lpr -p $?...但在MS-DOS下有点特殊,因为MS-DOS下没有SHELL环境变量,当然你也可以指定。...“隐含规则”也就是一种惯例,make会按照这种“惯例”心照喧地来运行,那怕我们的Makefile没有书写这样的规则。...“隐含规则链”,禁止同一个目标出现两次或两次以上,这样一来,就可防止make自动推导时出现无限递归的情况。 Make会优化一些特殊的隐含规则,而生成中间文件。...,但在很多地方完全是知其然不知所以然。

4.2K20

8 个有效地用于管理进程的 Linux 操作命令

如果执行 which nginx 的命令什么也返回,那么是找不到 Nginx 了,因为它只搜索您指定的可执行路径。有三种方法可以补救一个进程不能简单地通过名字启动的情况。...这个解决方案是与 shell 相关的。例如,Bash 用户需要在他们的 .bashrc 文件编辑 PATH= 行。...现实生活,这个实例可能位于不同的位置,例如由不同用户拥有的目录。如果我运行两个 Nginx 实例,则pidof 输出显示它们的所有进程。...这意味着使用 pkill 时必须非常小心。我的 Nginx 示例,如果我只想杀死一个 Nginx 实例,我可能不会选择使用它。...这当然也适用于 pgrep。所以,执行 pkill -f 之前,首先我可以用 pgrep -a 确认一下。

40930

服务器日志监听执行告警动作

我是这样做的: 目前的解决办法是通过检索 日志来 触发,类似一种探针的手段,定时读取日志文件来确认存在当天的日志来确认服务正常,通过执行命名的返回值确认。...PID 进程存在来判断,或者直接通过 启动命名 来匹配进程是否存在 ┌──[root@vms81.liruilongs.github.io]-[~/ansible/k8s-pod-create] └─$pgrep...--------王小波」 ---- 下面为一个python 写的 Demo,通过监听日志文件是否存在指定日期的日志来触发动作,这里插表发送短信。...主要利用 python 的 subprocess 模块来执行命令,这是一个自带的模块,当命名返回值不为0 的时候,会报异常,然后通过 命令来发送执行 SQL install 操作。...请排查,$(date)',1);" line = line.format(sql=sql) subprocess.check_output(line, shell=True) 理解不足之处小伙伴帮忙指正

62130

Makefile经典教程(掌握这些足够)

好吧,还是先来看几个例子吧:    clean:         rm -f *.o 上面这个例子我不多说了,这是操作系统Shell所支持的通配符。这是命令的通配符。    ...但在MS-DOS下有点特殊,因为MS-DOS下没有SHELL环境变量,当然你也可以指定。...“隐含规则”也就是一种惯例,make会按照这种“惯例”心照喧地来运行,那怕我们的Makefile没有书写这样的规则。...“隐含规则链”,禁止同一个目标出现两次或两次以上,这样一来,就可防止make自动推导时出现无限递归的情况。 Make 会优化一些特殊的隐含规则,而生成中间文件。...,但在很多地方完全是知其然不知所以然。

2.6K20

linux进程管理:进程,程序,线程 & 9个进程管理工具 & 作业控制

这时,使用killall,kill 0 来终止所有由当前shell启动的进程,是个有效的方法。在这里注意:kill 0 0代表信号ID。...(3)kill 0 不发送任何信号,常用来检测进程是否存在,脚本echo$?,存在返回0,不存在返回1。...shell 提示处理打入命令后,创建一个子进程,运行命令, Shell 等待命令退出,然后返回到对用户给出提示符。...后台进程: Shell 提示处打入命令,若后随一个 &, Shell 创建子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与 Shell 同步运行,即在后台运行。...的shell运行程序时,这个程序就可以看成是一个作业了,可以这么说shell控制的是作业,而不是进程,而且shell还可以分前后台对作业进行控制。

3.2K10

python判断文件是否存在、不存在则创建_python判断文件是否存在,不存在就创建一个的实例…「建议收藏」

,返回索引 nPos = sStr1.index(sStr2) if(nPos >=0): print ‘sStr1包括sStr2的字符’ print nPos #find 方法如果没有查询到返回-...Jacobpc ”’ import os import sys import subprocess def get_process_id(name): child = subprocess.Popen([“pgrep...”,”-f”,name],stdout=subprocess.PIPE,shell=False) response = child.communicate()[0] return response pid...这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try语句.pathlib模块. 1.使用os模块 os模块的os.path.exists()方法用于检验文件是否存在....elif ext == ‘.png’: return True elif ext == ‘.jpeg’: return True elif ext == ‘.bmp’: return True else

6.1K30
领券