pythonnohup
『壹』 如何用python編寫一個程序,在伺服器後台運行,每天刪除一些文件
首先利用
os.remove() will remove a file.
os.rmdir() will remove an empty directory.
shutil.rmtree() will delete a directory and all its contents.
寫你的模塊
利用linux crontab定時任務運行這個模塊。
還可以以守護進程的方式運行你的腳本。nohup <程序名> &
『貳』 直接python程序運行沒有問題,nohup運行就出錯了,該怎麼解決
nohup 和 screen 都可以解決: nohup python script.py & 或者 screen python script.py
『叄』 如何遠程登錄Linux機器並運行Python程序
新手對於沒有圖形界面的linux遠程登錄及其操作都充滿畏懼。這里介紹一個簡單的軟體。叫作BitViz。簡稱BV for short。
一、軟體安裝
這里使用Putty的一個client軟體叫作Bv SshClient. 你可以在putty的官網上找到其鏈接。
Bitvise Tunnelier
Tunnelier is an SSH and SFTP client for Windows. It is developed and supported professionally by Bitvise. Tunnelier is robust, easy to install, easy to use, and supports all features supported by PuTTY, as well as the following:
graphical SFTP file transfer; 圖形界面最喜歡
single-click Remote Desktop tunneling;
auto-reconnecting capability;
dynamic port forwarding through an integrated proxy;
an FTP-to-SFTP protocol bridge. 方便的上傳下載和刪除操作。
Tunnelier is free for personal use, as well as for indivial commercial use inside organizations. You can download Tunnelier here.
二、熟悉窗口
下面一個例子,是找到python軟體安裝位置的演示:
1. 首先,我進入到root
步驟一,進入root
2. 輸入/home
步驟二,進入home
3. 點擊其中子文件夾,即可找到,方便了。
步驟三,找到python文件夾
三、easy_install python library
Example Of python-setuptools Being Installed:
[root@server ~]# yum install python-setuptools
Yum Command To Install python-setuptools-devel:
[root@server ~]#yum install python-setuptools-devel
在linux 下: 使用方法非常簡單,在命令行輸入「easy_install 參數」即可。
這比我想像的要方便很多!在windows里,我要cmd-cd & easy_install flickrapi
在ssh的命令窗口,只需輸入 easy_install flickrapi
如下圖:
easy_install flickrapi
四、run python script as a background process in linux
So, you have a server to which you connect remotely, upload a python script and want to run it and logout from the server keeping the program running. If you frequently work with spiders, you surely want to do it. But how to do it? For example if your script's name is script.py, then the command is:
[root@server ~]# nohup python script.py &
And sometimes you may be interested to see the output is that being generated. Then you should view the nohup.out file! This command can be useful:
[root@server ~]# tail -f nohup.out
『肆』 如何優雅的用Python玩轉語音聊天機器人
所需硬體:
樹莓派B+
人體紅外線感應模塊
內置麥克風攝像頭(實測樹莓派免驅淘寶鏈接)
申請API:
網路語音api
圖靈api
語音聊天機器人實現原理:當有人來到跟前時--》觸發聊天功能,開始以每2s檢測錄制語音--》通過網路語音api合成文字--》傳遞給圖靈api返回回答信息--》通過網路語音合成播放
【人體感應識別部分Python代碼renti.py】
#/usr/bin/python#coding:utf-8import RPi.GPIO as GPIOimport timeimport osimport signalimport atexitGPIO.setmode(GPIO.BCM) GPIO_PIR = 14 GPIO.setup(GPIO_PIR,GPIO.IN) # Echojing = 0dong = 0 sum = 0sum1 = 0oldren = 0sleep = 0def ganying(): i = 0 ok = 0 error = 0 while i < 10: if GPIO.input(GPIO_PIR) == 1 : ok = ok + 1 if GPIO.input(GPIO_PIR) == 0 : error = error + 1 time.sleep(0.01) i = i + 1 ren = ok/(error+1) return ren
1
GPIO_PIR = 14
為 紅外線檢測模塊與樹莓派的針腳,腳本函數返回0表示無人,>0 為有人
【Python語音識別聊天部分robot.py】
#/usr/bin/python# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding( "utf-8" )import urllibimport urllib2import jsonimport uuidimport base64import osimport timefrom renti import * #獲取網路tokenappid=7647466apikey="網路API"secretkey="網路API" _url="h.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + apikey + "&client_secret=" + secretkey; y_post=urllib2.urlopen(_url)y_read=y_post.read()y_token=json.loads(y_read)['access_token']#print y_read#print y_token #------------------function------------- def luyin(): os.system('arecord -D plughw:1,0 -c 1 -d 2 1.wav -r 8000 -f S16_LE 2>/dev/null') def fanyi():
#---------------語音識別部分 mac_address="haogeoyes" with open("1.wav",'rb') as f: s_file = f.read() speech_base64=base64.b64encode(s_file).decode('utf-8') speech_length=len(s_file) data_dict = {'format':'wav', 'rate':8000, 'channel':1, 'cuid':mac_address, 'token':y_token, 'lan':'zh', 'speech':speech_base64, 'len':speech_length} json_data = json.mps(data_dict).encode('utf-8') json_length = len(json_data) asr_server = 'm/server_api' request = urllib2.Request(url=asr_server) request.add_header("Content-Type", "application/json") request.add_header("Content-Length", json_length) fs = urllib2.urlopen(url=request, data=json_data) result_str = fs.read().decode('utf-8') json_resp = json.loads(result_str) if json_resp.has_key('result'): out_txt=json_resp['result'][0] else: out_txt="Null" return out_txt def tuling(b): f=urllib.urlopen("23.com/openapi/api?key="此處為圖靈API"&info=%s" % b) f=json.loads(f.read())['text'] return f def hecheng(text,y_token): #text="你好我是機器人牛牛很高興能夠認識你" geturl="u.com/text2audio?tex="+text+"&lan=zh&per=1&pit=9&spd=6&cuid=CCyo6UGf16ggKZGwGpQYL9Gx&ctp=1&tok="+y_token return os.system('omxplayer "%s" > /dev/null 2>&1 '%(geturl)) #return os.system('omxplayer "%s" > /dev/null 2>&1 '%(geturl)) def nowtime(): return time.strftime('%Y-%m-%d %H:%M:%S ') #---------------main-----------------num=0 #num用來判斷是第一次說話,還是在對話過程中first=1 #判斷是不是第一說話 當1000次沒有人動認為是第一次while True: if ganying()!=0: run=open('run.log','a') if first==0: hecheng("你好,我是牛牛機器人,你可以和我聊天,不過說話的時候你必須靠近話筒近一點,",y_token) hecheng("說點什麼吧,2秒鍾內說完哦.",y_token) first=1 #為1一段時間就不執行 num=0 #從新計數 #print ganying() run.write(nowtime()+"說點神馬吧..........."+'\n') print nowtime()+"說點神馬吧.........." luyin() #開始錄音 out=fanyi().encode("utf-8") #翻譯文字 run.write(nowtime()+"我說:"+out+'\n') print nowtime()+"我說:"+out if out == "Null": text="沒有聽清楚你說什麼" os.system('omxplayer "shenme.wav" > /dev/null 2>&1 ') else: text=tuling(out) hecheng(text,y_token) print nowtime()+"牛牛:"+text run.write(nowtime()+"牛牛:"+text+'\n') run.close() else: #print ganying() #調試查看是否為0有人沒人 #print num num=num+1 #num長時間增大說明沒有人在旁邊 if num > 1000: first=0 #0表示第一次說話
萬事俱備 運行nohup python robot.py 哈哈就可以脫離屏幕開始愉快的語音聊天啦
下面看看聊天的日誌記錄吧
後續更新。。。。。。Python如何用語音優雅的控制小車
『伍』 linux 怎麼一直運行python搜索腳本
有兩種方式:
1、直接使用python xxxx.py執行。其中python可以寫成python的絕對路徑。使用which python進行查詢。
2、在文件的頭部(第一行)寫上#!/usr/bin/python2.7,這個地方使用python的絕對路徑,就是上面用which python查詢來的結果。然後在外面就可以使用./xxx.py執行了。
因為在linux中,python啊shell這些程序都是普通的文本格式,都需要一種程序去解釋執行它。要麼調用的時候指定,要麼在文件頭指定。更多linux知識可以看下《linux就該這么學》
『陸』 python 新手問題啊,為什麼我運行一個python程序,另一個就會自動退出呢始終只能運行一個
兩個程序基本一樣,可以開多線程,threading。然後在不同的地方分別開一個線程運行,沒必要運行兩個程序。
『柒』 在虛擬主機中安裝了python程序,如何使它在伺服器上自動運行
nohup 和 screen 都可以解決:
nohup python script.py &
或者
screen python script.py
『捌』 php 執行python腳本的時候 已經安裝python模塊能正常使用么
一般是環境變數問題,你的執行一個sh的set命令看看結果吧。
解決辦法,在sh文件裡面設置好環境變數再調用python腳本。
『玖』 如何讓 Python 代碼常駐在伺服器進程中
一、nohup
nohup,即 no hangup,nohup 的用途就是讓提交的命令忽略 hangup 信號,從而使我們的進程避免中途被中斷。它可以讓 python 腳本和伺服器連接端的 session 分離,以達到退出後依舊執行:
$ chmod +x /your_path/yourscript.py # 先設置可執行許可權$ nohup python /your_path/yourscript.py# 切記退出的 Terminal 的時候,不要 ctrl+c 退出,而是直接關閉,不然 Nohup 就被你關閉了。
如何關閉這個一直執行的進程呢:
# 找到對應的進程 PID
$ ps -ef | grep python
# 返回內容如:
user 2430 1 0 Jul03 ? 00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd
# kill 掉該進程即可:
$ kill -9 2430
PS:nohup 在伺服器重啟之後就失效了,所以並不完美。
二、將命令寫入 Linux 啟動腳本
Linux 在啟動的時候會執行 /etc/rc.local 裡面的腳本,所以只要在這里添加執行命令就可以:
$ vim /etc/rc.local
# 如果是 Centos 添加以下內容:
/your_path/python3.4 /your_path/yourscript.py
# 以上內容需要添加在 exit 命令前,而且由於在執行 rc.local 腳本時,PATH 環境變數未全部初始化,因此命令需要使用絕對路徑。
PS:這種方式的缺點是如果腳本掛了,那麼不會自動重新啟動。
三、使用 Supervisor 進程管理工具
詳見這篇文章:使用 Supervisor 管理伺服器後台進程,在伺服器重啟和腳本出錯後,可以完美重啟,推薦。
『拾』 python後台怎麼限制上傳文件個數
並不建議用screen,因為screen一般用於遠程工作時能夠多窗口工作和避免網路斷開造成工作丟失。
畢竟你這是一個單獨的服務,用nohup更好,他可以幫你屏蔽HUNGUP信號,從而避免在鏈接斷開時後台進程也被殺死。
我一般這樣用:
nohup command 2>&1 &