![如果 .bash_profile 中的命令尚未运行,如何仅运行该命令?](https://linux22.com/image/159793/%E5%A6%82%E6%9E%9C%20.bash_profile%20%E4%B8%AD%E7%9A%84%E5%91%BD%E4%BB%A4%E5%B0%9A%E6%9C%AA%E8%BF%90%E8%A1%8C%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BB%85%E8%BF%90%E8%A1%8C%E8%AF%A5%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
目标:
仅运行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