bash 脚本中激活conda环境_ubuntu18.10目标检测算法环境部署+开机自启动脚本创建screen下的web服务...
內容概要
cuda+cudnn+python環境安裝
ubuntu18的開機自啟動腳本
screen服務開啟
以我個人的實踐來看,把python開發的算法封裝成webserver的服務供前端程序調用是個不錯的方案,解決了不同語言直接做接口的復雜性,同時后期的運營、維護、監控也比較方便。但是python的環境部署確實比較麻煩的,一兩臺機器還行,大規模部署的話幾十上百臺機器想想就頭大,正規的做法是用docker,這里先撇開不談。但其實條件允許的話,可以在一臺機器上部署環境,然后將系統鏡像用systemback打包,再安裝到其他機器,新環境的部署就簡單了,裝完系統,環境就ok了,再配上開機自啟動的算法服務,簡直完美(ubuntu18親測有效)。
cuda+cudnn+python環境安裝
安裝文件自行下載,這里提供我的安裝包供參考鏈接:https://pan.baidu.com/s/1WShQSF94iQYPwNX4kwle6A
提取碼:slqs
安裝cuda環境網上教程非常多,這里不再贅述。需要注意cuda和cudnn版本匹配,顯卡驅動版本、以及gcc版本需注意。下面以cuda10.1+cudnn7+nvidia驅動440+Anaconda3-5.2.0為例,列舉下可能的操作:
卸載之前存在的cuda或驅動
sudo apt-get purge nvidia*
安裝驅動
sudo nano /etc/modprobe.d/blacklist.conf
加入:
blacklist nouveau
options nouveau modeset=0
Ctrl+O保存,Ctrl+X退出
sudo update-initramfs -u
最好重啟下
lsmod | grep nouveau 無輸出即可
gcc/g++降級
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50
sudo update-alternatives --config gcc命令查看gcc的默認版本
安裝cuda
sudo ./cuda_10.1.168_418.67_linux.run
進入界面后 空格取消驅動安裝選項
等待安裝完成
設置環境變量:
sudo nano ~/.bashrc
export CUDA_HOME=/usr/local/cuda-10.1
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
Ctrl+O保存
source ~/.bashrc 使生效
輸入nvcc -V驗證
-cudnn安裝
sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.1_amd64.debdeb解壓安裝即可,壓縮包的話需要拷貝文件到對應的cuda文件夾
Anaconda安裝
sudo sh Anaconda3-5.2.0-Linux-x86_64.sh
anaconda和cuda環境變量
ubuntu18的開機自啟動腳本
這部分走了不少彎路,主要是想自啟動腳本里能實現在創建的screen下開啟算法服務,這樣的話后期監控,直接screen -r name進入查看即可,而且是真后臺運行,各種優點吧。實現過程中遇到了不少問題,如conda虛擬環境無法進入、環境變量未激活、啟動腳本不執行等。好在最終解決,這里直接給出可行方案:
編輯自啟動服務
由于該系統沒有自帶其他linux版本自帶的rc.local文件的開機自啟動方法,所以要自己生成rc.local文件。
先編輯rc-local.service:
寫入:
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
然后編輯rc.local:
sudo nano /etc/rc.local
寫入:
#!/bin/bash
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
source ~/.bashrc
sh /home/online_stagex/auto_start/start.sh > /dev/null 2>&1 &
exit 0
最后執行:
sudo chmod +x /etc/rc.local
sudo systemctl enable rc-local
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service
rc-local.service文件
rc.local
其中,start.sh是開機自啟動腳本,前面的路徑是存放位置,記得加上可執行權限。chmod +x
screen服務創建及服務的開啟
在自啟動腳本start.sh中定義了,啟動要干的事情,這里面寫的是創建screen并開啟服務的過程。
創建screen
需要說明的是自啟動腳本是root用戶下執行的,創建的screen也是在root下面,查看需要sudo screen -ls指令。創建的screen在sh環境下,需要使能環境變量source ~/.bashrc否則無法使用py環境。發送到screen的指令太長的話可以重新寫個腳本。
st_8381.sh
上面的腳本就是最終執行python代碼的指令,在web_start_8381.py中封裝了算法服務。
重啟測試,服務開起來了,log里也有日志,進入到screen有算法后臺輸出,完美!
screen
nvidia-smi查看gpu進程
總結
以上是生活随笔為你收集整理的bash 脚本中激活conda环境_ubuntu18.10目标检测算法环境部署+开机自启动脚本创建screen下的web服务...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python读取股票价格_使用Pyth
- 下一篇: windows缩放200模糊_1.8M超