每次文件更改时运行 .sh

每次文件更改时运行 .sh

我正在使用一个以 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

脚本像守护进程一样运行,当文件改变时它只需重新启动服务器。

这可能不是最好的解决方案,但它确实有效。

相关内容