我需要编写一个程序或 bash 脚本,它会不时运行(基于 cron)。该程序将包含一个状态机,并且会根据所处的状态做出不同的行为。
该程序(或 bash 脚本)不是特定于用户的,因此它不应该位于 /home 文件夹中。
按照惯例,在 Ubuntu Server 上将程序内部状态的文件存储在哪里?
附加问题:脚本本身的最佳放置位置是哪里?
答案1
脚本本身的最佳放置位置是哪里?
那可能是……
/usr/local/bin/
按照惯例,在 Ubuntu Server 上将程序内部状态的文件存储在哪里?
我认为没有这样的位置。您可以使用/var/local/
。我见过几种方法,其中一种流行的方法似乎是使用/opt/
。以这种方式:
/opt/{software_name}/
/opt/{software_name}{.version_1}/
/opt/{software_name}{.version_2}/
...
其中第一个是指向活动版本的符号链接。./bin
这些目录中有一个用于存放二进制文件的目录,一个./log
用于存放(轮换的)日志的目录,以及一个(在您的情况下)./state
带有或不带有唯一标识符的目录。所有目录均设置为具有权限的 root 用户,n00
因此没有人可以读取“state”的内容。
让您清楚地知道在哪里可以找到您需要的任何东西。
答案2
我会创建一个文件夹来存放数据,/var/local/
并将脚本存储在其中/usr/local/bin/
答案3
如果您希望所有用户都可以使用您的脚本,则应将其放在/usr/local/bin
,这是手动安装脚本和程序时的最佳位置,而其他地方则由包管理器管理。如果此脚本仅供版主使用,则应将其放在/usr/local/sbin
。
要保存脚本的状态,您应该考虑哪个用户将运行该脚本?您会在文件root
中使用脚本来运行它crontab
吗?如果是这种情况,那么我认为您应该将状态保存在 root 的主目录中。您还可以考虑使用/tmp