【问题标题】:Non-persistent system wide environment variables非持久性系统范围的环境变量
【发布时间】:2021-05-16 01:01:29
【问题描述】:

我一直在寻找设置环境变量的解决方案,该环境变量在重新启动后不会持久,但仍可在系统范围内访问。有人有解决方案(bash)吗?

原因是我希望 crontab 等使用这些变量(在单个会话中设置一次之后)。但是,如果断电或磁盘被物理占用,则在文件系统中找不到变量(密码)。 (这是一个 Raspberry Pi 备份服务器)。 到目前为止,我已经考虑过使用 Screen(没有真正的运气),并且正在考虑 /etc/profile.d 中的脚本

【问题讨论】:

  • 如果你想在 crontab 中使用环境变量,你必须在 cronfile 本身中设置它们。

标签: linux shell environment-variables


【解决方案1】:

原因是我希望 crontab 等使用这些变量(在单个会话中设置一次之后)。但是,如果断电或磁盘被物理占用,则变量

所以将密码存储在内存中,假设掉电后内存被清除。前任。使用共享内存或 tmpfs 文件系统。设置密码的第一个脚本:

#!/bin/bash
# setup_password.sh
if ! findmnt /srv/mypassword >/dev/null; then
      mount -o tmpfs tmpfs /srv/mypassword
fi
printf "%s\n" "$1" > /srv/mypassword/password.txt

以及您从 cron 执行的脚本:

#!/bin/bash

if ! password=$(cat /srv/mypassword/password.txt); then
     echo "ERROR: password not setup" >&2
     exit 2
fi
: continue and use the password "$password"

如果您的/tmptmpfs,并且很可能是,只需将密码存储在/tmp...

【讨论】:

  • 谢谢@KamilCuk!这似乎是正确的方法!
猜你喜欢
  • 2019-12-15
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
相关资源
最近更新 更多