我正在使用一个以 Ubuntu 服务器为基础的系统,但我们在 Windows 上编程。虚拟机使用 Mount 命令来访问 Windows 上的文件。
每次有人保存文件时,该人都需要访问服务器并重新运行命令以关闭并重新启动 ERP 服务器。
由于我们不会经常更改文件(2 或 3 人团队正在处理几个文件),所以每次更改文件时是否有办法触发脚本?
工作流程:程序员保存文件 >> ERP 文件夹中的 Windows 更新文件 >> 安装了 Windows 文件夹的 Linux 实例获取更新 >> Linux 执行 .sh 并重新运行服务器。
答案1
我认为最好的方法是使用“inotify-tools”包中的 inotifywait。
例如,请参阅https://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes
答案2
您可以使用entr
工具,例如
$ ls -d * | entr sh -c 'make && make test'
答案3
我遇到了和你类似的问题。我正在 Tornado 上开发一个程序,每次提交时都必须重新启动服务器,所以我在 Bash 上写了一个程序,关闭所有 Python 进程并重新启动它
#!/bin/bash
function init {
LIST=`pgrep python`
IFS=' ' read -a arr <<< "${LIST}"
for pid in "${arr[@]}"
do
echo $pid
`kill -9 $pid`
done
}
init
IN=`python server.py`&
CONTENT=`cat server.py`
while :
do
sleep 1
CURR=`cat server.py`
if [ "$CONTENT" != "$CURR" ];
then
init
IN=`python server.py`&
CONTENT=`cat server.py`
echo "Restarted."
fi;
done
脚本像守护进程一样运行,当文件改变时它只需重新启动服务器。
这可能不是最好的解决方案,但它确实有效。