更改正在运行的进程的环境变量

24

我有一个脚本,它导出一个环境变量并启动一些子脚本。

export LOGLEVEL="1"
/home/myuser/bin/myscript1.sh
/home/myuser/bin/myscript2.sh

LOGLEVEL 变量可用于从子脚本启动的进程。我该如何更改环境变量 LOGLEVEL

我尝试使用 export LOGLEVEL="5" 命令来设置该变量,但这并没有起作用。


你想在哪里更改LOGLEVEL以及为哪个进程更改 - 因为你说已经更改了两个myscript进程的LOGLEVEL。 - mmmmmm
@Mark:无论是更改LOGLEVEL对两个子脚本的进程是否有影响,还是我可以为单个进程更改它,都没有关系。基本上,我正在寻找任何可行的方法与一个进程通信,让它在其日志文件中打印更多信息。 - Christian Ammer
@ChristianAmmer - 然后您需要向我们展示在脚本中如何使用LOGLEVEL。 - mmmmmm
@Mark:脚本在系统启动后启动一些进程。这些进程根据环境变量LOGLEVEL将一些信息打印到它们的日志文件中。现在我想在不重新启动它们的情况下更改这些进程的行为。 - Christian Ammer
显示剩余3条评论
1个回答

29

通常情况下,在进程启动时你只能影响该进程的环境变量。如果你需要向正在运行的进程传递更改信息,环境变量并不是正确的工具。

然而,这个问题有一些回答建议克服这个限制。

编辑后添加了在问题评论中的讨论:将更改偶尔的设置指定到一个配置文件中,在发送SIGHUP信号给进程后,让进程在接收到SIGHUP信号后重新读取配置文件,这是一种相当不错的向正在运行的进程传递更改信息的方法。


2
谢谢您提供的链接和提示,让我知道如何正确地管理它 - 我已经阅读了更多关于SIGHUP的内容,并在维基百科上找到了:_守护程序有时会使用SIGHUP作为信号来重新启动自己,最常见的原因是重新读取已更改的配置文件_。 - Christian Ammer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接