Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Upstart-导航到目录,git pull,然后运行daemontools_Git_Upstart - Fatal编程技术网

Upstart-导航到目录,git pull,然后运行daemontools

Upstart-导航到目录,git pull,然后运行daemontools,git,upstart,Git,Upstart,我试图创建一个upstart conf,在本地git存储库上执行git拉取,然后启动daemontools svscan。它们必须按照这个顺序进行,因为守护进程依赖于git存储库中文件的最新版本 我试过: start on runlevel [12345] respawn pre-start script cd /scripts git pull end script exec /command/svscanboot 而且: start on runlevel [12345] resp

我试图创建一个upstart conf,在本地git存储库上执行git拉取,然后启动daemontools svscan。它们必须按照这个顺序进行,因为守护进程依赖于git存储库中文件的最新版本

我试过:

start on runlevel [12345]
respawn
pre-start script
  cd /scripts
  git pull
end script
exec /command/svscanboot
而且:

start on runlevel [12345]
respawn
chdir /scripts
exec git pull
exec /command/svscanboot

但这两种方法都不管用。我正在寻找有关如何告诉upstart在运行第三个命令之前导航到另一个目录并在那里执行命令的帮助

你可以试试这个,我得把我的git pull-in sudo包起来才能让它工作

start on runlevel [12345]

respawn

pre-start script
  export HOME="/home/user"
  cd $HOME/scripts/
  exec sudo -u user git pull
end script

script
  export HOME="/home/user"
  cd $HOME/commands/
  exec sudo -u user svscanboot >> /var/log/svscanboot.log 2>&1
end script

你可以试试这个我得把我的git pull-in sudo包起来才能用

start on runlevel [12345]

respawn

pre-start script
  export HOME="/home/user"
  cd $HOME/scripts/
  exec sudo -u user git pull
end script

script
  export HOME="/home/user"
  cd $HOME/commands/
  exec sudo -u user svscanboot >> /var/log/svscanboot.log 2>&1
end script

您可以使用setuid代替sudo-u

start on runlevel [12345]

respawn

setuid user

pre-start script
  cd /home/user/scripts/
  exec git pull
end script

script
  cd /home/user/commands/
  exec svscanboot >> /var/log/svscanboot.log 2>&1
end script

您可以使用setuid代替sudo-u

start on runlevel [12345]

respawn

setuid user

pre-start script
  cd /home/user/scripts/
  exec git pull
end script

script
  cd /home/user/commands/
  exec svscanboot >> /var/log/svscanboot.log 2>&1
end script

不知道为什么,但在我的系统上,一台带有亚马逊标准linux映像的EC2服务器,添加setuid无论哪一行都会导致它报告未知作业,就好像它的语法无效一样:/不知道为什么,但在我的系统上,一台带有亚马逊标准linux映像的EC2服务器,添加setuid无论哪一行都会导致它报告未知作业,就好像它的语法无效一样:/