一、start_ui_clock.sh文件
#!/bin/bash
cd /home/pi
./WorkSpace/Clock/nohup_start.sh
第一行的内容指定了shell脚本解释器的路径,而且这个指定路径只能放在文件的第一行。第一行写错或者不写时,系统会有一个默认的解释器进行解释。 先到/home/pi目录,然后执行/WorkSpace/Clock/目录下的nohup_start.sh脚本
二、nohup_start.sh文件
#!/bin/bash
BASEDIR = ` dirname $0`
echo "work on $BASEDIR "
cd $BASEDIR
sudo nohup ./main.py >> nohup.log 2 >&1
该命令在命令行状态下执行 $ cd dirname $0
会返回当前路径的".",无意义。 写在脚本文件中,返回这个脚本文件放置的目录,并可根据这个目录来定位所要运行程序的相对位置(绝对位置除外)。 nohup命令 nohup指不断地运行,是no hang up的缩写,指不间断,不挂断。运行一个进程的时候,不想让其在你退出终端时关闭,即可用nohup。 nohup在不规定的情况下,所有输出内容会到nohup.out中 2>&1 1、0 表示stdin标准输入,用户键盘输入的内容; 2、1 表示stdout标准输出,输出到显示屏的内容; 3、2 表示stderr标准错误,报错内容。 4、2>&1是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。 整体意义及& 1、sudo nohup ./main.py >> nohup.log 2>&1,不间断的运行main.py脚本,并将脚本输出的内容重定向输入nohup.log中(>>意为追加,如果用>会让其中的内容清空) main.py >> nohup.log 和main.py 1>>nohup.log相同,只是1(标准输入)被省略了,而后面的nohup.log 2>&1 又将2(错误内容)输入到标准输出,然后前面的标准输出又输入到nohup.log中,意思是错误和标准内容都会输出到nohup.log中,其实代码可拆成两块。 2、nohup ./main.py 1>> nohup.log & nohup ./main.py 2>>nohup.log & 上面代码就是将错误和标准都输出到my.log,最初的代码只是简化了。 而加2>&1中的&是为了区别文件1和1(标准输出),假如为2>1,那么不就成了将错误内容输出到文件1中。 3、nohup tomcat.sh > /dev/null 2>&1 &也是一样的,将错误和标准全部丢入/dev/null中,全部销毁。
三、mian.py文件
if __name__ == '__main__' :
if len ( sys. argv) == 1 :
main = Main( )
main. run( )
elif '-h' in ( sys. argv) :
main = Main( )
main. help ( )
else :
fire. Fire( Main)
pass
import fire python库fire使用简介 fire.Fire():可以指定某个函数导出到命令行 if __name__ == '__main__':
if name == ‘main ’:到底是个啥? 总结:自己写的.py文件作为模块给别人使用,为了不让别人一导入就直接运行整个脚本,比如from main import Main
(Main为main.py里的一个class类)可以使用该if语句,其中的代码就不会在被 import 时被执行。即当前.py文件名为main(即main.py)时,才运行if语句里的程序。import logging
import logging.config
导入日志库 Python日志库logging总结 import os
import sys
import signal
pass
Python的pass
语句是空语句,是为了保持程序结构的完整性,一般用做占位语句。 (当编写一个程序时,执行语句部分思路还没有完成,这时可以用pass语句来占位,也可以当做是一个标记,是以后要完成的代码。)
四、App.py文件