我正在构建一个接受scp连接的服务器,然后添加刚刚传输到git存储库的文件。我已经测试了.bash_logout脚本,并且在scpd会话结束时它不会执行。当scpd退出时,我可以用另一个钩子来运行脚本吗?
或者,我可以在.bashrc文件中使用at(1)命令来执行完成工作的脚本,比如5分钟后。我想,但我不确定,我不必担心比赛,因为我认为这些文件很少会出现。
谢谢
答案 0 :(得分:1)
如果scp总是复制到同一个地方,那么这种方法可行。 它还有额外的好处,即通过samba,CIFS等复制......也会起作用。
此外,您可以从当时的nohup中生成inotifywait shell脚本,以便在shell退出后执行。另一种方法是在启动时启动进程以使用inotifywait监视目录并使用它添加到git。
当然,您可以简单地设置一个git服务器,但我认为有一个很好的理由是不可取的。
inotifywait可以在更改目录时触发。
它可以等待目录中的更改,添加,移动
if inotifywait -e modify -e move -e create -r somedirectory ; then
# wait wile more activity occurs, up to 30 seconds
while inotifywait -e modify -e move -e create -t 30 -r somedirectory ; do echo "waiting" ; done
# do git add with the new files in somedirectory
# delete the files from somedirectory
fi
答案 1 :(得分:1)
您可以将此脚本作为cronjob运行:
#!/bin/sh
targetdir="whereever your files are going"
[ "$targetdir" -nt "~/flag" ] && your_script.sh
touch ~/flag