我尝试将Shairport设置为在用户连接时运行脚本,而在用户再次断开连接时尝试运行另一个脚本。
我尝试添加on-start和on-stop参数。这在手动启动Shairport时工作正常。
但我不知道如何在/etc/init.d/shairport中添加这些参数。
我试过了:
START="python script1.py"
STOP="python script2.py"
DAEMON_ARGS="--daemon --pidfile $PIDFILE --log $LOGFILE --on-start=\"$START\" --on-stop \"$STOP\""
但是这会导致错误消息:
音频参数无效:script1.py"
我认为问题在于该命令由两个单词组成,但我不知道如何解决问题。
你能帮我吗?
答案 0 :(得分:0)
实际上,您可以通过执行该文件来运行python / python3脚本。请确保包含一个hashbang,这是一个例子:
#! /usr/bin/python
print "hello"
然后你可以这样做:
$ chmod u+x script1.py
$ script1.py
hello
但只要脚本位于$PATH
中列出的目录中。请注意,python(或python3,如果您愿意)的路径不一定是/usr/bin/python
,您可以使用$ which python
轻松找到位置。
我知道你通过将执行封装在shell脚本中来修复它,但在我看来这似乎有点清晰。
编辑:
有关PATH
变量的更详细说明。
在shell中执行脚本时,shell将在此变量中列出的目录中查找命令/脚本。只要脚本位于其中一个目录中,您的shell就会知道如何调用脚本(在内部它将使用./script_name调用它,这也是您调用任何脚本的方式)。示例输出:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
请注意,包含python的目录也列在上面的输出(/use/bin
)中,因此您可以将python
作为命令调用。
当您创建脚本并使其可执行时,您可以使用$ ./myscript
来调用它,如果它位于/sbin
中,例如您可以使用$ myscript
来调用它。 / p>
如何将目录添加到路径
您可以使用简单的$ PATH="$PATH:/path/to/new/dir"
命令在PATH中扩展目录列表,但这并不理想,因为每次打开shell时都必须这样做。适当的方法是在.bashrc文件中添加一行(这是一个在每个shell会话开始时执行每一行的文件)。 警告:如果此文件出现故障,您可能根本无法访问您的shell,请务必在测试新内容之前对其进行备份。
我认为最好的方法是创建一个包含所有用户编写脚本的目录(我的名字叫做〜/ bin)。话虽如此,您可以遵循以下准则:
mkdir ~/bin # create the custom script dir
mv script1.py ~/bin # move your script to the dir
chmod u+x ~/bin/script1.py # make file executable
cp ~/.bashrc ~/.bashrc_bak # backup file (to be safe)
vim +$ ~/.bashrc # open bashrc file at the last line
现在在vim(或选择的编辑器)中将此行添加到文件:export PATH=$PATH:~/bin
并保存(仅添加此行不会损坏bashrc文件)。
您现在可以调用位于〜/ bin目录中的任何可执行脚本!
更好的方法是创建一个新文件.bashrc_custom并将其包含在原始./bashrc文件中,但这不是必需的,并且会使事情变得更加复杂。
启动一个新shell并测试它,你的输出应该是这样的:
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/user/bin
如果是这种情况并且一切正常,请删除备份rm -f ~/.bashrc_bak
请注意,您可以使用bashrc调整命令行,可以设置自定义命令行提示符或插入某些别名。我的例如包含一些别名:
export PATH=$PATH:~/bin
export WORKBENCH="/home/user/my/current/project"
alias clone="gnome-terminal ."
alias explore="gnome-open ."
alias pdf="gnome-open *.pdf"
alias bashrc="vim +$ ~/.bashrc"
alias wb="cd $WORKBENCH"
alias ff="firefox >/dev/null 2>&1 "
希望这会有所帮助,如果问题不明确,可以提问。