如果 .bash_profile 中的命令尚未运行,如何仅运行该命令?

如果 .bash_profile 中的命令尚未运行,如何仅运行该命令?

目标:
仅运行socat一次。
我正在尝试docker通过 TCP 公开 Web 服务。在 macOS/linux 上,这些服务绑定到 unix 套接字。以下命令完成任务:

socat -d TCP-LISTEN:2376,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock

所以我不必一直记住输入这个,我希望它在计算机启动时启动。我不知道如何实现这个特定目标,但我已经做了一些工作.bash_profile。所以socat每次跑步我都会选择跑步terminal。但是,由于.bash_profile为每个实例运行terminal,我想要一种仅在命令尚未运行时才运行该命令的机制。但我不知道如何检查.bash_profile某些东西是否已经在运行。你能帮我吗?

答案1

如果您希望该命令在引导时启动,那么您可以使用cronjob.

以 root 身份:

crontab -e

接下来,输入以下内容,就像在文本编辑器中一样:

@reboot /usr/bin/socat -d TCP-LISTEN:2376,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock

这告诉crontab我们在系统启动时运行您的命令。通过在命令ENTER后按来确保命令后面有一个新行。:wq!就像您要vim保存它一样输入。

重新启动系统,然后grep输入命令以确保其正在运行。

ps aux | grep socat

相关内容