脚本完成后,文件在创建服务时是bash中的打字稿

时间:2016-05-03 09:51:35

标签: bash

我有一个脚本文件如下。

#!/bin/bash
set -x
set -e
#VBoxManage startvm "cuckoo-window" --type gui
 python ~/Downloads/cuckoo-modified-master/utils/api.py --host 0.0.0.0 --port 8090
#cd ~/Downloads/cuckoo-modified-master/web/
#  python manage.py runserver 0.0.0.0:8008
#  python ~/Downloads/cuckoo-modified-master/cuckoo.py

我的服务脚本/etc/init/miscservices.conf

start on runlevel
script
    cd ~/Downloads/cuckoo-modified-master
     ./miscservices.sh
end script

我还在/etc/init.d/miscservices中创建了一个符号链接,并在启动时添加了

sudo update-rc.d miscservices  defaults

sudo service miscservices start
miscservices stop/waiting

没有脚本启动。当我从下面开始时,它们会转到root模式,但仍然没有服务启动。但是当我退出它时,启动服务的2个实例。请解释这个行为。

sudo /etc/init.d/miscservices start
start: Unknown job: on
Script started, file is typescript
root@abc:~# sudo netstat -ntlp | grep 8090
root@abc:~# ps -aux | grep misc
root      2929  0.0  0.0  81976  2260 pts/6    S+   13:42   0:00 sudo /etc/init.d/miscservices start
root      2930  0.0  0.0   4440   652 pts/6    S+   13:42   0:00 sh /etc/init.d/miscservices start
root      2962  0.0  0.0  16192   936 pts/15   S+   13:43   0:00 grep --color=auto misc
root@abc:~#
root@abc:~#
root@abc:~# exit
exit
Script done, file is typescript
+ set -e
+ python /home/aserg/Downloads/cuckoo-modified-master/utils/api.py --host 0.0.0.0 --port 8090
Bottle v0.12.0 server starting up (using WSGIRefServer())...
Listening on http://0.0.0.0:8090/
Hit Ctrl-C to quit.

1 个答案:

答案 0 :(得分:0)

我认为问题可能出在~/Downloads/cuckoo-modified-master/miscservices.sh脚本中(并且btw在upstart脚本中使用~并不是最好的想法,因为它可能会以root身份执行,并且可能存在一些问题,确定在哪里{{{ 1}})。默认情况下,upstart不会产生进程。这意味着如果你有这样的配置:

~

upstart只会启动您的流程一次,然后什么都不做。如果你启动它一次并且脚本中有一些错误它只是停止没有信息给你。您可以检查日志文件。默认情况下,它必须位于start on runlevel script cd ~/Downloads/cuckoo-modified-master ./miscservices.sh end script (对于Ubuntu 14.04 LTS)。如果没有,您可以检查操作系统中默认的新贵记录在哪里,或者通过在某个地方回复一些通知来手动编写。例如:

/etc/log/upstart/miscservices.log

如果你想重新生成脚本进程,你可以添加到脚本的开头:

env logf="/home/someuser/miscservices.log"
script
    echo "Script it starting..." >> $logf
    /home/someuser/Downloads/cuckoo-modified-master/miscservices.conf >> $logf
    echo "Script is ended." >> $logf
end scipt

或者只是在脚本文件中进行无限循环。

PS。您可以通过更清晰的代码修改您的upstart脚本respawn respawn limit unlimited 。从/etc/init/miscservices.conf到:

start on runlevel

这意味着脚本将在文件系统启动后启动,并在关闭时关闭。

PPS。你不需要start on filesystem stop on shutdown 中的符号链接。如果你使用upstart,那就试试吧!你不需要任何其他东西。只需将您的结尾部分放在/etc/init.d/miscservices中,它就会自动启动。它可以是这样的:

/etc/init

希望我能帮忙!