0.linux笔记.....持续更新...
0.0. VScode幾點(diǎn)基本用法
0.1. 將UbuntuLauncher啟動(dòng)器移動(dòng)到底部
0.2. 一個(gè)窗口中運(yùn)行多個(gè)終端方法
1.Markdown的用法
2.source 用法
3.安裝軟件
4.Linux cat命令詳解
6.服務(wù)器會(huì)話問(wèn)題
7.安裝NVIDIA顯卡驅(qū)動(dòng)+cuda+cudnn步驟
8.Linux添加打印機(jī)
10.git和倉(cāng)庫(kù)基本操作
16 如何在README.md文件中添加圖片
19.Linux視頻和各種文件下載神器XDM
20.linux終端kill進(jìn)程
22.GPU顯存滿了, 但是GPU利用率卻很低,怎么辦?
24.使用終端或vim時(shí),不能輸入(和卡死了一樣)時(shí)的解決方法:ctrl + q
29.AP和mAP計(jì)算詳解(代碼全解)
31.linux下的export命令
32.升級(jí)cudnn與更新顯卡驅(qū)動(dòng)
37.linux安裝有道詞典不能啟動(dòng)
39.保存CSDN網(wǎng)頁(yè)內(nèi)容為pdf,并去掉網(wǎng)頁(yè)兩邊的廣告
40.安裝tensorrt和遇到的問(wèn)題及解決方法
100.linux內(nèi)核切換
101.ssh登錄與scp文件拷貝
102.忘記root密碼
103.mdc掛載NAS
104.創(chuàng)建軟鏈接
105.將自己的ubuntu電腦設(shè)置為一臺(tái)可遠(yuǎn)程ssh訪問(wèn)的服務(wù)器
106.在ubuntu電腦(或服務(wù)器)登錄另一臺(tái)ubuntu電腦(或服務(wù)器)的文件系統(tǒng)ftp、sftp
107.端口映射ping不同的解決辦法
108.nas服務(wù)器或Red-Hat系統(tǒng)設(shè)置靜態(tài)ip
108.1.Ubuntu系統(tǒng)設(shè)置靜態(tài)ip
109.mdc設(shè)置訪問(wèn)外網(wǎng)
110.DNS、網(wǎng)關(guān)、子網(wǎng)掩碼、端口映射、路由器、交換機(jī)
111.ssh登錄輸入密碼次數(shù)過(guò)多被鎖住的解決辦法
112.ssh登錄一直被拒絕的解決辦法
113.Ubuntu下的ssh連接總是自己斷開(kāi)的解決辦法
114.當(dāng)前運(yùn)行的docker修改環(huán)境后,想在本地保存下來(lái)的方法
115.shell語(yǔ)法
116.116.gdb調(diào)試和coredump
117.ubuntu使用 nethogs 監(jiān)測(cè)網(wǎng)絡(luò)流量情況
118.ubuntu定時(shí)執(zhí)行腳本
119.修改ubuntu用戶密碼
120.mdc安裝和開(kāi)啟ftp服務(wù)
121.mdc啟動(dòng)網(wǎng)卡并設(shè)置其ip和子網(wǎng)掩碼
122.LD_LIBRARY_PATH詳解、C++靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)
123.linux系統(tǒng)下查看本機(jī)所在局域網(wǎng)中所有設(shè)備IP
124.linux抓包工具tcpdump的使用
待續(xù)…
0. 各種小tips
VScode幾點(diǎn)基本用法
部分參考http://www.cnblogs.com/bloglkl/p/5797805.html
(1) 在visual studio code中插件下載Markdown Preview Github Styling即可使用markdown.
(2) vscode 安裝code runner插件可以運(yùn)行代碼
(3) vscode 安裝"C++"插件和"Python"插件可以在代碼中選中函數(shù)后實(shí)現(xiàn) 查看定義、轉(zhuǎn)到定義 的功能
(4) 切換中文環(huán)境:先安裝Chinese插件,然后ctrl+shift+p組合鍵,搜索configure display language,選擇zh-cn,可以改成中文環(huán)境
(5) 安裝vscode-icons插件可以使VScode左側(cè)的資源管理器根據(jù)文件類型顯示圖標(biāo)
(6) 更新 vscode
(7) 快捷鍵
alt + o 在.cc和.h文件之間切換 ctrl + alt - 回到上一次位置 Ctrl + . 快速修復(fù)部分可以修復(fù)的語(yǔ)法錯(cuò)誤 ctrl + p 搜索文件 ctrl + f 本文件下搜索關(guān)鍵字 ctrl + shift + f 全局搜索關(guān)鍵字在所有文件中位置 Ctrl + Shift + i 對(duì)代碼進(jìn)行谷歌風(fēng)格標(biāo)準(zhǔn)化 ctrl + shift + b 運(yùn)行任務(wù) Ctrl + Shift + P 展示全局命令面板,去掉>后也可以搜索文件,相當(dāng)于ctrl + p Ctrl + Shift + K 刪除行 Ctrl + Shift + 上下左右箭頭 選中文本的前n列進(jìn)行操作 alt + Shift + 上下左右箭頭 選中文本的前n列進(jìn)行操作(同上)0.1 將UbuntuLauncher啟動(dòng)器移動(dòng)到底部
(1) ubuntu16.04以后可以在終端使用
gsettings set com.canonical.Unity.Launcher launcher-position Bottom將Launcher啟動(dòng)器移動(dòng)到底部。
(2) 使用
gsettings set com.canonical.Unity.Launcher launcher-position Left可以重新將Launcher啟動(dòng)器移動(dòng)到左側(cè)。
0.2 一個(gè)窗口中運(yùn)行多個(gè)終端方法
ctrl+shift+t即可
注意:ctrl+shift+t是在一個(gè)窗口中再打開(kāi)一個(gè)終端
ctrl+alt+t是打開(kāi)一個(gè)新終端窗口
1. Markdown的用法
參考https://www.jianshu.com/p/de9c98bba332
(1)在markdown中正確顯示數(shù)學(xué)公式
Vistual Studio Code天生支持Markdown編譯,文件后綴為md即可,但是不支持?jǐn)?shù)學(xué)公式,其實(shí)在文件開(kāi)頭加上以下代碼即可,會(huì)自動(dòng)獲得MathJax的腳本支持。MathJax語(yǔ)法可以自己去官網(wǎng)學(xué)習(xí)。
<script type="text/javascript"src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>注意: 在vs code中的插件轉(zhuǎn)pdf的時(shí)候公式不生效,這時(shí)候建議轉(zhuǎn)為html,再用了瀏覽器把html轉(zhuǎn)為pdf,如果pdf有亂碼,可以用nodepad++將html的編碼改為utf-8后再轉(zhuǎn)pdf。
摘自:https://blog.csdn.net/ancewer/article/details/73279127
(2)實(shí)現(xiàn)頁(yè)面內(nèi)跳轉(zhuǎn)
參考https://www.cnblogs.com/JohnTsai/p/4027229.html,其中還有另一種方法,我沒(méi)記錄下來(lái)。
一. 把標(biāo)題寫(xiě)在文章最前面: 使用markdown語(yǔ)法:中括號(hào)內(nèi)寫(xiě)內(nèi)容,一般是后文中要跳轉(zhuǎn)到的標(biāo)題,后面加上括號(hào),括號(hào)內(nèi)必須加一個(gè)#,否則會(huì)跳轉(zhuǎn)出頁(yè)面,#后是id [點(diǎn)擊跳轉(zhuǎn)](#jump) 二.把正文標(biāo)題寫(xiě)成如下的形式: 定義一個(gè)錨(id):這個(gè)id必須在后面有對(duì)應(yīng) <span id="jump">跳轉(zhuǎn)到的地方</span>2. source 用法
source的作用就是把一個(gè)文件的內(nèi)容當(dāng)成是shell來(lái)執(zhí)行。
可以新建一個(gè)文本文件a,(一般寫(xiě)成a.sh表示shell文件,不這么寫(xiě)也行,因?yàn)楹缶Y名只是標(biāo)識(shí)而已),然后在該文件中寫(xiě)入一系列指令,如:
然后在該文件目錄下使用如下命令,就依次執(zhí)行了a文件中的這三個(gè)命令。
source ashell編程中的命令有時(shí)和C語(yǔ)言是一樣的。&&表示與,||表示或。把兩個(gè)命令用&&聯(lián)接起來(lái),如 make mrproper && make menuconfig,表示要第一個(gè)命令執(zhí)行成功才能執(zhí)行第二個(gè)命令。對(duì)執(zhí)行順序有要求的命令能保證一旦有錯(cuò)誤發(fā)生,下面的命令不會(huì)盲目地繼續(xù)執(zhí)行。
source命令(從 C Shell 而來(lái))是bash shell的內(nèi)置命令。點(diǎn)命令,就是一個(gè)點(diǎn)符號(hào),(從Bourne Shell而來(lái))是source的另一名稱。
這兩個(gè)命令都以一個(gè)腳本為參數(shù),該腳本將作為當(dāng)前shell的環(huán)境執(zhí)行,即不會(huì)啟動(dòng)一個(gè)新的子進(jìn)程。所有在腳本中設(shè)置的變量將成為當(dāng)前Shell的一部分。
Linux source命令:
https://blog.csdn.net/qq_39759656/article/details/83547582
通常用法:source filepath 或 . filepath
功能:使當(dāng)前shell讀入路徑為filepath的shell文件并依次執(zhí)行文件中的所有語(yǔ)句,通常用于重新執(zhí)行剛修改的初始化文件,使之立即生效,而不必注銷并重新登錄。例如,當(dāng)我們修改了/etc/profile文件,并想讓它立刻生效,而不用重新登錄,就可以使用source命令,如source /etc/profile。
source命令(從 C Shell 而來(lái))是bash shell的內(nèi)置命令;點(diǎn)命令(.),就是個(gè)點(diǎn)符號(hào)(從Bourne Shell而來(lái))是source的另一名稱。這從用法中也能看出來(lái)。
source filepath 與 sh filepath 、./filepath的區(qū)別:
當(dāng)shell腳本具有可執(zhí)行權(quán)限時(shí),用sh filepath與./filepath是沒(méi)有區(qū)別的。./filepath是因?yàn)楫?dāng)前目錄沒(méi)有在PATH中,所有"."是用來(lái)表示當(dāng)前目錄的。
sh filepath 會(huì)重新建立一個(gè)子shell,在子shell中執(zhí)行腳本里面的語(yǔ)句,該子shell繼承父shell的環(huán)境變量,但子shell是新建的,其改變的變量不會(huì)被帶回父shell,除非使用export。
source filename其實(shí)只是簡(jiǎn)單地讀取腳本里面的語(yǔ)句依次在當(dāng)前shell里面執(zhí)行,沒(méi)有建立新的子shell。那么腳本里面所有新建、改變變量的語(yǔ)句都會(huì)保存在當(dāng)前shell里面。
舉例說(shuō)明:
新建一個(gè)test.sh腳本,內(nèi)容為:A=1;
修改其可執(zhí)行權(quán)限:chmod +x test.sh;
運(yùn)行sh test.sh后,echo $A,顯示為空,因?yàn)锳=1并未傳回給當(dāng)前shell;
運(yùn)行./test.sh后,也是一樣的效果;
運(yùn)行source test.sh 或者 . test.sh,然后echo $A,則會(huì)顯示1,說(shuō)明A=1的變量在當(dāng)前shell中;
3. dpkg、apt安裝卸載軟件
sudo dpkg -i XXX.deb # 安裝本地軟件包(.deb文件),需要先下載下來(lái).deb文件 dpkg -l #查看dpkg方式安裝了哪些軟件 sudo dpkg -purge XXX #卸載dpkg軟件,通過(guò)dpkg -l查看軟件叫什么,不需要加.deb dpkg -P #同上,徹底卸載,包括配置文件等。 dpkg -r #卸載,不包括配置文件sudo apt-get install XXX # XXX(無(wú)后綴名)是直接從網(wǎng)絡(luò)服務(wù)器上來(lái)安裝軟件包 apt-get --purge remove <package> # 刪除軟件及其配置文件 apt-get autoremove <package> # 刪除沒(méi)用的依賴包 sudo apt update # 更新軟件 sudo apt-get update # 更新軟件 sudo apt upgrade # 更新軟件 sudo apt-get upgrade # 更新軟件4. Linux cat命令詳解
cat命令是linux下的一個(gè)文本輸出命令,通常是用于觀看某個(gè)文件的內(nèi)容的;
cat主要有三大功能:
1.一次顯示整個(gè)文件
2.從鍵盤創(chuàng)建一個(gè)文件,它只能創(chuàng)建新文件,不能編輯已有文件, 編輯文件可以用gedit或vim.
cat >filename3.將幾個(gè)文件合并為一個(gè)文件
$cat file >file $cat file1 file2 >file這里可以直接把一個(gè)文件輸入到另一個(gè)文件中,也可以把兩個(gè)文件連接后輸入到第三個(gè)個(gè)文件中,但是最后一個(gè)文件名前必須加 >,即新創(chuàng)建一個(gè)文件。
說(shuō)明:把檔案串連接后傳到基本輸出(屏幕或加 > fileName 到另一個(gè)檔案)
參數(shù):
-n 或 –number 由 1 開(kāi)始對(duì)所有輸出的行數(shù)編號(hào)
-b 或 –number-nonblank 和 -n 相似,只不過(guò)對(duì)于空白行不編號(hào)
-s 或 –squeeze-blank 當(dāng)遇到有連續(xù)兩行以上的空白行,就代換為一行的空白行
-v 或 –show-nonprinting
范例:
cat -n linuxfile1 > linuxfile2把 linuxfile1 的檔案內(nèi)容加上行號(hào)后輸入 linuxfile2 這個(gè)檔案里,
cat>filename<<EOF,以EOF作為輸入結(jié)束,和ctrl+d的作用一樣.
6. 服務(wù)器會(huì)話問(wèn)題
終端輸入 ssh cidi@172.16…,然后輸入密碼就進(jìn)入了服務(wù)器
screen -S zhz建立一個(gè)zhz的對(duì)話,然后可以在這里面訓(xùn)練數(shù)據(jù)集,即使關(guān)掉這個(gè)正在訓(xùn)練的終端也不影響訓(xùn)練
screen -ls是顯示有幾個(gè)screen
screen -r zhz可以進(jìn)入zhz的screen看到自己之前在訓(xùn)練的頁(yè)面
screen -d -r zhz若zhz是Attached狀態(tài),則踢掉遠(yuǎn)端用戶再連接
screen -wipe檢查所有screen,并刪除已經(jīng)無(wú)法使用的screen
screen -r 26658.zhz 當(dāng)你新建了多了zhz,那么就需要加上前面的數(shù)字,否則系統(tǒng)不知道你想進(jìn)入哪個(gè)zhz的screen
screen -X -S 26658.zhz quit刪除screen
7. 安裝NVIDIA顯卡驅(qū)動(dòng)+cuda+cudnn步驟:
8. Linux添加打印機(jī)
進(jìn)入 system settings,選擇 printers,點(diǎn)擊 add ,選擇 Network Printer,
選擇APPSocket/HP JetDirect,填寫(xiě) Host, 172.16.34.4,接下來(lái)會(huì)出現(xiàn)tray3:Not Installed頁(yè)面才對(duì),
其余的什么也不用填,直接forward,完成。
10.git操作技能
(1)基本命令
git status git add path/name.txt git rm --cache path/name.txt # 本地倉(cāng)庫(kù)刪除文件之后,需要使用git命令刪除該文件緩存才能commit。 git commit -m "message" git pull --rebase git push origin mastergit log git remote add origin http://172.16.31.6/CIDI-perception/Work-progress.git git config --global user.email '823655339@qq.com'(2)怎樣把本地文件夾它變成倉(cāng)庫(kù)
這樣做看似沒(méi)什么用,但是當(dāng)你在本地新建好一個(gè)倉(cāng)庫(kù)的一系列文件的時(shí)候,只需要把它添加到遠(yuǎn)程倉(cāng)庫(kù)即可,就不用在遠(yuǎn)程倉(cāng)庫(kù)新建一堆東西了。
看起來(lái)這個(gè)方法還是沒(méi)什么用。你把遠(yuǎn)程倉(cāng)庫(kù)clone下來(lái)之后,把你寫(xiě)好的東西添加進(jìn)倉(cāng)庫(kù)文件夾之后推送即可。因此,在我本人看來(lái),這種方式創(chuàng)建遠(yuǎn)程倉(cāng)庫(kù)我基本不會(huì)用到,但是學(xué)習(xí)一下總是好的。
首先,本地文件夾名稱要與遠(yuǎn)程倉(cāng)庫(kù)名稱一致。
git remote add origin http://...這一步也可以把origin改成別的名稱。
注意:最好使用http,因?yàn)閟sh要設(shè)置秘鑰之后才能拉取推送文件,目前我還沒(méi)有弄懂ssh.
(3)怎么修改Git remote add時(shí)使用的遠(yuǎn)程倉(cāng)庫(kù)?
git remote add origin http://...是添加遠(yuǎn)程倉(cāng)庫(kù)
git remote查看遠(yuǎn)程倉(cāng)庫(kù)
git remote -v查看遠(yuǎn)程倉(cāng)庫(kù)細(xì)節(jié)
方法一:
方法二:把替換成新的url地址。
git remote origin set-url <URL>方法三:直接修改.git/config文件
(4) git操作時(shí)中文文件名亂碼
使用git add添加要提交的文件的時(shí)候,如果文件名是中文,會(huì)顯示形如274\232\350\256\256\346\200\273\347\273\223的亂碼。
解決方案:在bash提示符下輸入:
git config --global core.quotepath falsecore.quotepath設(shè)為false的話,就不會(huì)對(duì)0x80以上的字符進(jìn)行quote。中文顯示正常。
16. 如何在README.md文件中添加圖片
1、在github上的倉(cāng)庫(kù)建立一個(gè)存放圖片的文件夾,文件夾名字隨意。如:img-folder
2、將需要在READNE.md中顯示的圖片,push到img-folder文件夾中。
3、然后打開(kāi)github官網(wǎng),進(jìn)入倉(cāng)庫(kù)的img-folder文件夾中,打開(kāi)圖片,copy網(wǎng)址欄的地址。
4、在README.md中填入:
[外鏈圖片轉(zhuǎn)存失敗(img-uVh4faVv-1562320798656)(https://圖片地址.png)]
保存即可。
注:![Image text]這個(gè)標(biāo)識(shí)不可缺少,不然就把圖片顯示成網(wǎng)址的文字了。
Image text:指的是如果圖片不存在了,要顯示的文字說(shuō)明
19. Linux視頻下載神器XDM,堪比windows下IDM
安裝教程參考:https://blog.csdn.net/qq378947986/article/details/80821237
安裝完成之后,進(jìn)入任意一個(gè)視頻網(wǎng)站或者有音頻的網(wǎng)站,擴(kuò)展都可以嗅探到視頻和音頻的下載地址,通過(guò)瀏覽器右下角出現(xiàn)的DOWNLOAD下載東西。
XDM將自動(dòng)從瀏覽器捕獲以下類型文件的下載:
3GP,7Z,AVI,BZ2,DEB,DOC,DOCX,EXE,GZ,ISO,MSI,PDF,PPT,PPTX,RAR,RPM,XLS,XLSX,SIT,SITX,TAR,JAR,ZIP,XZ
XDM將在瀏覽器播放以下類型視頻時(shí)顯示下載選項(xiàng):
MP4,M3U8,F4M,WEBM,OGG,MP3,AAC,FLV,MKV,DIVX,MOV,MPG,MPEG,OPUS
以上都是默認(rèn)選項(xiàng),可以自己添加文件類型。
20.ubuntu強(qiáng)制關(guān)閉軟件的方法:linux終端kill進(jìn)程
ubuntu當(dāng)某個(gè)軟件不響應(yīng)卡住了,強(qiáng)制關(guān)閉該軟件的方法:linux終端kill進(jìn)程
方法一:
(1)終端輸入top,顯示的全是現(xiàn)在系統(tǒng)的進(jìn)程,按占用資源從多到少排列的找到要關(guān)掉的進(jìn)程,記下該進(jìn)程第一列的PID編號(hào),然后輸入q,退回終端;
(2)輸入sudo kill [pid]即可,也可直接kill [pid],最好使用kill -9 [pid]強(qiáng)制關(guān)閉
方法二:
如果鍵盤還能響應(yīng),就【ctrl + alt + delete】可以彈出【LOG OUT】退出當(dāng)前賬戶系統(tǒng)。
另:【alt + F4】可以關(guān)閉當(dāng)前窗口,功能同 【alt+space+c】
22.GPU顯存滿了, 但是GPU利用率卻很低,怎么辦?
batch size太小,導(dǎo)致模型的并行化程度太低。還有你的cpu、內(nèi)存/顯存帶寬性能不足。
https://blog.csdn.net/cunyizhang/article/details/92771032
https://zhuanlan.zhihu.com/p/53345706
24.使用vim時(shí),vim卡死的解決方法
使用vim時(shí),如果你不小心按了ctrl + s后,你會(huì)發(fā)現(xiàn)不能輸入任何東西了,像卡死了一般,其實(shí)vim并沒(méi)有卡死,這時(shí)vim只是停止向終端輸出而已,要想退出這種狀態(tài),只需按Ctrl + q即可恢復(fù)正常。
如果要保存的話,使用:wq即可
29.AP和mAP計(jì)算詳解(代碼全解)
參考:https://mp.weixin.qq.com/s?__biz=MzUxNjcxMjQxNg==&mid=2247490269&idx=3&sn=718b101325a37b152951772e11d4efde&chksm=f9a26852ced5e144200ae2f95d3bd15d9e213dff2728f85defdf75fcd5aeb7acd53f50eb233c&mpshare=1&scene=1&srcid=#rd
Recall和Precision一樣,脫離類別是沒(méi)有意義的。說(shuō)到Precision(或Recall),一定指的是某個(gè)類別的Precision(或Recall)。
目標(biāo)檢測(cè)里面沒(méi)有用準(zhǔn)確率Accuracy來(lái)評(píng)估的,都只用Recall和Precision以及mAP。
(1) Accuracy:準(zhǔn)確率
?? 準(zhǔn)確率=預(yù)測(cè)正確的樣本數(shù)/所有樣本數(shù),即預(yù)測(cè)正確的樣本比例(包括預(yù)測(cè)正確的正樣本和預(yù)測(cè)正確的負(fù)樣本,不過(guò)在 【目標(biāo)檢測(cè)】 領(lǐng)域,沒(méi)有預(yù)測(cè)正確的負(fù)樣本這一說(shuō)法,所以目標(biāo)檢測(cè)里面沒(méi)有用Accuracy的)。
Acc = (TP + FN) / num_allSamples =(TP + TN)/ (TP+TN+FP+FN)比如說(shuō),檢測(cè)貓,貓以外的其他類別都是負(fù)樣本,所以負(fù)樣本不是指一個(gè)類別,而是除你要檢測(cè)的類別以外的所有類別,除非是二分類。【這段話是我添加的】
(2) Precision:查準(zhǔn)率
【分母為 所有預(yù)測(cè)結(jié)果為該類別的樣本數(shù)目】
?? recision表示某一類樣本預(yù)測(cè)有多準(zhǔn)。
?? Precision針對(duì)的是某一類樣本,如果沒(méi)有說(shuō)明類別,那么Precision是毫無(wú)意義的(有些地方不說(shuō)明類別,直接說(shuō)Precision,是因?yàn)槎诸悊?wèn)題通常說(shuō)的Precision都是正樣本的Precision)。
比如說(shuō),檢測(cè)貓,分子為標(biāo)簽為貓,預(yù)測(cè)結(jié)果也為貓,即預(yù)測(cè)正確的樣本數(shù);分母為預(yù)測(cè)結(jié)果為貓的所有樣本數(shù)(注意不是圖片數(shù))。
即Precision就是預(yù)測(cè)貓正確的樣本數(shù) 占 所有預(yù)測(cè)結(jié)果為貓的樣本數(shù)。
之所以叫查準(zhǔn)率(精確率),是因?yàn)轭A(yù)測(cè)出了n個(gè)該類別的,只預(yù)測(cè)對(duì)了m(m<n)個(gè)正確的,所以叫(精確率)查準(zhǔn)率。
【上面這兩段話是我添加的】
(3) Recall:召回率
【分母為 該類別的所有標(biāo)簽數(shù)目】
?? Recall和Precision一樣,脫離類別是沒(méi)有意義的。說(shuō)道Recall,一定指的是某個(gè)類別的Recall。Recall表示某一類樣本,預(yù)測(cè)正確的與所有Ground Truth的比例。
Recall = TP/(TP + FN)?? Recall計(jì)算的時(shí)候,分母是Ground Truth中某一類樣本的數(shù)量,而Precision計(jì)算的時(shí)候,是預(yù)測(cè)出來(lái)的某一類樣本數(shù)。
比如說(shuō),檢測(cè)貓,分子為標(biāo)簽為貓,預(yù)測(cè)結(jié)果也為貓,即預(yù)測(cè)正確的樣本數(shù);分母為把貓檢測(cè)為貓和把貓檢測(cè)為非貓的所有樣本,即分母是標(biāo)注的標(biāo)簽中所有為貓的目標(biāo)總數(shù),不是包含貓的圖片的總數(shù),因?yàn)槊繌垐D片可能有多只貓,每只貓都得算進(jìn)去。
那么recall就是預(yù)測(cè)貓正確的樣本數(shù) 占 所有標(biāo)簽為貓的樣本數(shù) 的比例。
之所以叫召回率,是因?yàn)樵擃悇e本來(lái)有n個(gè)正確的,只召回了m(m<n)個(gè)正確的,所以叫召回率。
【上面這兩段話是我添加的】
(4) F1 Score:平衡F分?jǐn)?shù)
F1分?jǐn)?shù),它被定義為查準(zhǔn)率和召回率的調(diào)和平均數(shù):
F1 = 2* Precision * Recall / (Precision + Recall)= 2*TP / (2TP + FN + FP)31.linux下的export命令和環(huán)境變量
linux中在 profile 或者 bashrc 或者其他類似的文件中設(shè)置環(huán)境變量時(shí)(比如PATH),如果沒(méi)有export,那么只能在直接啟動(dòng)的shell中起作用,如果在當(dāng)前shell下運(yùn)行腳本或者直接啟動(dòng)一個(gè)子shell,因?yàn)閷?shí)際上是局部變量。子shell看不見(jiàn)的,所以就gg了
Linux 指令:系統(tǒng)設(shè)置–export
功能說(shuō)明:設(shè)置或顯示環(huán)境變量。
語(yǔ) 法:export [-fnp][變量名稱]=[變量設(shè)置值]
補(bǔ)充說(shuō)明:在shell中執(zhí)行程序時(shí),shell會(huì)提供一組環(huán)境變量。export可新增,修改或刪除環(huán)境變量,供后續(xù)執(zhí)行的程序使用。export的效力僅及于該此登陸操作。
參 數(shù):
-f 代表[變量名稱]中為函數(shù)名稱。
-n 刪除指定的變量。變量實(shí)際上并未刪除,只是不會(huì)輸出到后續(xù)指令的執(zhí)行環(huán)境中。
-p 列出所有的shell賦予程序的環(huán)境變量。
環(huán)境變量
https://blog.csdn.net/wl_fln/article/details/7258294
在 linux 里設(shè)置環(huán)境變量的方法 ( export PATH )
一般來(lái)說(shuō),配置交叉編譯工具鏈的時(shí)候需要指定編譯工具的路徑,此時(shí)就需要設(shè)置環(huán)境變量。例如我的mips-linux-gcc編譯器在“/opt/au1200_rm /build_tools/bin”目錄下,build_tools就是我的編譯工具,則有如下三種方法來(lái)設(shè)置環(huán)境變量:
1、直接用export命令:
export PATH=$PATH:/opt/au1200_rm/build_tools/bin
查看是否已經(jīng)設(shè)好,可用命令export查看:
可以看到灰色部分有設(shè)置的路徑,說(shuō)明環(huán)境變量已經(jīng)設(shè)好,PATH里面已經(jīng)有了我要加的編譯器的路徑。
2、修改profile文件:
vi /etc/profile
在里面加入:
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
3. 修改.bashrc文件:
后兩種方法一般需要重新注銷系統(tǒng)才能生效,最后可以通過(guò)echo命令測(cè)試一下:
echo $PATH
看看輸出里面是不是已經(jīng)有了 /my_new_path這個(gè)路徑了。
另有:4. 修改/etc/re.local文件:
# vi /etc/re.local 在里面加入: export PATH="$PATH:/opt/au1200_rm/build_tools/bin"**===================================================================**
“/bin”、“/sbin”、“ /usr/bin”、“/usr/sbin”、“/usr/local/bin”等路徑已經(jīng)在系統(tǒng)環(huán)境變量中了,如果可執(zhí)行文件在這幾個(gè)標(biāo)準(zhǔn)位置,在終端命令行輸入該軟件可執(zhí)行文件的文件名和參數(shù)(如果需要參數(shù)),回車即可。
如果不在標(biāo)準(zhǔn)位置,文件名前面需要加上完整的路徑。不過(guò)每次都這樣跑就太麻煩了,一個(gè)“一勞永逸”的辦法是把這個(gè)路徑加入環(huán)境變量。命令 export PATH="路徑”(或“PATH=PATH="路徑”(或“PATH=PATH="路徑”(或“PATH=PATH:路徑”) (PATH為環(huán)境變量名,如DVSDK;調(diào)用時(shí)用PATH為環(huán)境變量名,如DVSDK;調(diào)用時(shí)用PATH為環(huán)境變量名,如DVSDK;調(diào)用時(shí)用DVSDK)可以把這個(gè)路徑加入環(huán)境變量,但是退出這個(gè)命令行就失效了。
要想永久生效,需要把這行添加到環(huán)境變量文件里。有兩個(gè)文件可選:“/etc/profile”和用戶主目錄下的“.bash_profile”,“/etc/profile”對(duì)系統(tǒng)里所有用戶都有效,用戶主目錄下的“.bash_profile”只對(duì)這個(gè)用戶有效。
export PATH="PATH="PATH="PATH:路徑1:路徑2:…:路徑n” (或“PATH=PATH:路徑1:路徑2:...:路徑n"),意思是可執(zhí)行文件的路徑包括原先設(shè)定的路徑,也包括從“路徑1”到“路徑n”的所有路徑。當(dāng)用戶輸入一個(gè)一串字符并按回車后,shell會(huì)依次在這些路徑里找對(duì)應(yīng)的可執(zhí)行文件并交給系統(tǒng)核心執(zhí)行。那個(gè)“PATH:路徑1:路徑2:...:路徑n" ),意思是可執(zhí)行文件的路徑包括原先設(shè)定的路徑,也包括從“路徑1”到“路徑n”的所有路徑。當(dāng)用戶輸入一個(gè)一串字符并按回車后,shell會(huì)依次在這些路徑里找對(duì)應(yīng)的可執(zhí)行文件并交給系統(tǒng)核心執(zhí)行。那個(gè)“PATH:路徑1:路徑2:...:路徑n" ),意思是可執(zhí)行文件的路徑包括原先設(shè)定的路徑,也包括從“路徑1”到“路徑n”的所有路徑。當(dāng)用戶輸入一個(gè)一串字符并按回車后,shell會(huì)依次在這些路徑里找對(duì)應(yīng)的可執(zhí)行文件并交給系統(tǒng)核心執(zhí)行。那個(gè)“PATH”表示原先設(shè)定的路徑仍然有效,注意不要漏掉。某些軟件可能還有“PATH”以外類型的環(huán)境變量需要添加,但方法與此相同,并且也需要注意“$”。
注意,與DOS/Window不同,UNIX類系統(tǒng)環(huán)境變量中路徑名用冒號(hào)分隔,不是分號(hào)。另外,軟件越裝越多,環(huán)境變量越添越多,為了避免造成混亂,建議所有語(yǔ)句都添加在文件結(jié)尾,按軟件的安裝順序添加。
格式如下():
# 軟件名-版本號(hào)
PATH=$PATH:路徑1:路徑 2:…:路徑n
其他環(huán)境變量=$其他環(huán)境變量:…
在“profile”和“.bash_profile”中,“#”是注釋符號(hào),寫(xiě)在這里除了視覺(jué)分隔外沒(méi)有任何效果。
設(shè)置完畢,注銷并重新登錄,設(shè)置就生效了。如果不注銷,直接在shell里執(zhí)行這些語(yǔ)句,也能生效,但是作用范圍只限于執(zhí)行了這些語(yǔ)句的shell。
相關(guān)的環(huán)境變量生效后,就不必老跑到軟件的可執(zhí)行文件目錄里去操作了。
32.升級(jí)cudnn與更新顯卡驅(qū)動(dòng)
(1)升級(jí)cudnn,參考一下博客
https://blog.csdn.net/zong596568821xp/article/details/86098833
需要注意的是,我的電腦查看cudnn版本命令為cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2,
并不是cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2,因?yàn)榘惭b時(shí)候的路徑不同,所以需要注意。
我的電腦查看cuda版本命令為cat /usr/local/cuda/version.txt,這個(gè)路徑是一致的。后面的
三條命令也需要修改路徑為
sudo rm -rf /usr/include/cudnn.h sudo rm -rf /usr/local/cuda/lib64/libcudnn* sudo cp include/cudnn.h /usr/include/(2)更新顯卡驅(qū)動(dòng)
參考 https://blog.csdn.net/breeze5428/article/details/80013753
linux安裝有道詞典不能啟動(dòng)
參考:https://ywmy210.github.io/ywmy/2018/11/25/ubuntu-18-04%E6%9C%89%E9%81%93%E8%AF%8D%E5%85%B8%E5%AE%89%E8%A3%85/
linux安裝有道詞典后,不能啟動(dòng)有道詞典的解決方法:
安裝有道詞典
下載編譯過(guò)的安裝包
wget https://github.com/yomun/youdaodict_5.5/raw/master/youdao-dict_1.1.1-0~ubuntu_amd64.deb編譯的安裝包需要3D加速
按以下命令查詢并卸載QT5,如有顯示 PyQt5 (5.10.1), 卸載之…
pip3 list | grep PyQt5 pip3 uninstall pyqt5root 用戶也一樣要
sudo sudo pip3 list | grep PyQt5 sudo sudo pip3 uninstall pyqt5安裝依賴包
sudo apt install python3sudo apt install python3-dbus python3-lxml python3-pil python3-requests python3-xdg python3-xlib sudo apt install python3-pyqt5 python3-pyqt5.qtmultimedia python3-pyqt5.qtquick python3-pyqt5.qtwebkitsudo apt install gir1.2-appindicator3-0.1 qml-module-qtgraphicaleffects qml-module-qtquick-controls sudo apt install libqt5multimedia5-plugins ttf-wqy-microhei sudo apt install tesseract-ocr tesseract-ocr-eng tesseract-ocr-chi-sim tesseract-ocr-chi-trasudo apt install ubuntu-restricted-extrasUbuntu 18.04 用 fonts-wqy-microhei 取代了 ttf-wqy-microhei
安裝有道詞典
39.打印CSDN網(wǎng)頁(yè)內(nèi)容,并去掉網(wǎng)頁(yè)兩邊的廣告
打印CSDN內(nèi)容,按F12進(jìn)入開(kāi)發(fā)者模式,將以下js代碼復(fù)制放入Chrome開(kāi)發(fā)者選項(xiàng)里邊的console,回車,會(huì)彈出一個(gè)保存為pdf的會(huì)話框,save后即可看到pdf中已經(jīng)只剩下網(wǎng)頁(yè)中需要保存的內(nèi)容,兩邊沒(méi)有廣告。
(function(){ $("#side").remove(); $("#comment_title, #comment_list, #comment_bar, #comment_form, .announce, #ad_cen, #ad_bot").remove(); $(".nav_top_2011, #header, #navigator").remove(); $(".p4course_target, .comment-box, .recommend-box, #csdn-toolbar, #tool-box").remove(); $("aside").remove(); $(".tool-box").remove(); $("main").css('display','content'); $("main").css('float','left'); window.print();$("tool-box").remove(); })();40.安裝tensorrt和遇到的問(wèn)題及解決方法方法
安裝TensorRT-5.0.2.6版本的安裝包TensorRT-5.0.2.6.Ubuntu-16.04.4.x86_64-gnu.cuda-9.0.cudnn7.3.tar.gz,對(duì)應(yīng)cuda-9.0.cudnn7.3。
安裝參考:https://blog.csdn.net/xulei_Tao/article/details/90339694
出現(xiàn)問(wèn)題參考:https://www.twblogs.net/a/5d0f8bfabd9eee1ede048927/zh-cn
100.linux內(nèi)核切換
參考:
只看這個(gè),這個(gè)解決了我的問(wèn)題:http://xiexiejiao.cn/linux/change-linux-image-on-ubuntu1604.html
https://blog.csdn.net/DL_ChenBo/article/details/52400044
https://blog.csdn.net/u011304615/article/details/70920171
當(dāng)不能連接無(wú)線網(wǎng)時(shí),也可以切換到原來(lái)的內(nèi)核來(lái)解決,我聯(lián)網(wǎng)問(wèn)題雖然解決的,但是內(nèi)核版本卻更新到了最新,而不是回退,我不知道怎么回事。
sudo gedit /etc/default/grub將GRUB_DEFAULT=0修改為你所想要還原的版本號(hào), 如:GRUB_DEFAULT=“Ubuntu, with Linux 3.2.0-23-generic”
當(dāng)我們把版本回退后刪除了一大堆內(nèi)核,出現(xiàn)了系統(tǒng)不正常,無(wú)法連接網(wǎng)絡(luò)和wifi.這個(gè)時(shí)候就需要下載三個(gè)linux內(nèi)核的.deb文件后分別安裝(例如:linux-image-4.15.10-041510-generic_4.15.10-041510.201803152130_amd64.deb、linux-headers-4.15.10-041510_4.15.10-041510.201803152130_all.deb、linux-headers-4.15.10-041510-generic_4.15.10-041510.201803152130_amd64.deb這三個(gè)),sudo dpkg -i *.deb;
然后 sudo gedit /etc/default/grub修改將GRUB_DEFAULT=0修改為你所想要還原的版本號(hào), 如:GRUB_DEFAULT=“Ubuntu, with Linux 3.2.0-23-generic”,然后sudo update-grub;
最后鎖定當(dāng)前內(nèi)核版本使之在apt dist-upgrade時(shí)也不會(huì)被升級(jí):```apt-mark hold linux-image-4.4.0-97-generic````
101. ssh登錄與scp文件拷貝
使用ssh登錄遠(yuǎn)程的話,端口是小寫(xiě)的 -p,ssh -p 22 mdc@172.16.34.17
使用scp拷貝文件的話是端口大寫(xiě)的 -P
使用ssh的scp傳送文件(夾),都是在本機(jī)終端路徑下進(jìn)行傳送文件命令,并且 -P 是大寫(xiě)的P,-r 是傳送文件夾:
從遠(yuǎn)程終端傳送文件到本機(jī):scp -P 遠(yuǎn)程端口號(hào) mdc@172.16.34.17:遠(yuǎn)程文件路徑 本地路徑
從遠(yuǎn)程終端傳送文件夾到本機(jī):scp -P 遠(yuǎn)程端口號(hào) -r mdc@172.16.34.17:遠(yuǎn)程文件夾路徑 本地路徑
或者:scp -rP 遠(yuǎn)程端口號(hào) mdc@172.16.34.17:遠(yuǎn)程文件夾路徑 本地路徑
從本機(jī)終端傳送文件到遠(yuǎn)程:scp -P 遠(yuǎn)程端口號(hào) 本地文件 mdc@172.16.34.17:遠(yuǎn)程路徑
從本機(jī)終端傳送文件夾到遠(yuǎn)程:scp -P 遠(yuǎn)程端口號(hào) -r 本地文件 mdc@172.16.34.17:遠(yuǎn)程路徑
或者:scp -rP 遠(yuǎn)程端口號(hào) 本地文件 mdc@172.16.34.17:遠(yuǎn)程路徑
102.忘記root密碼
參考 https://www.linuxidc.com/Linux/2016-05/131256.htm
(1) 忘了root密碼卻想進(jìn)入root用戶,如果用戶具有sudo權(quán)限,那么直接可以運(yùn)行如下命令:
然后就進(jìn)入了root下。
(2)更改root密碼
直接運(yùn)行sudo passwd root命令就可以直接更改root密碼。
(3)有關(guān)sudo su的區(qū)別:
1.共同點(diǎn):都是root用戶的權(quán)限;
2.不同點(diǎn):su僅僅取得root權(quán)限,工作環(huán)境不變,還是在切換之前用戶的工作環(huán)境;sudo是完全取得root的權(quán)限和root的工作環(huán)境。
103.mdc掛載NAS
能不能掛載上,首先要進(jìn)行ping ip地址操作,ping得通才能掛載上。
1.安裝NFS服務(wù):
參考 https://blog.csdn.net/CSDN_duomaomao/article/details/77822883
執(zhí)行以下命令安裝NFS服務(wù)器,
# apt會(huì)自動(dòng)安裝nfs-common、rpcbind等13個(gè)軟件包 sudo apt install nfs-kernel-server啟動(dòng)nfs:
service nfs-server start但是【在mdc上安裝失敗】的解決方法:
(1) 先確認(rèn)mdc能夠訪問(wèn)外網(wǎng):ping baidu.com
(2) 修改apt源地址,把源修改為中科大鏡像:
(3)再更新apt源,這一步至關(guān)重要:
apt-get update(4)安裝nfs
apt install nfs-kernel-server2.掛載與卸載:
能不能掛載上,首先進(jìn)行ping ip地址操作,ping得通才能掛載上,不同網(wǎng)段是ping不通的。
使用su進(jìn)入root下或者sudo運(yùn)行以下命令:
如果想取消掛載,可以使用umount命令:
## 方法1:umount /mnt/nas ## 方法2:umount 172.16.34.190:/volume1/data ## 方法3:umount 172.16.34.190:/volume1/data /mnt/nas如果提示umount: /mnt/usb: target is busy,可嘗試強(qiáng)制卸載:
## 強(qiáng)制卸載: umount -f /mnt/nas如果嘗試 umount -f /mnt/nas 還是失敗,可以使用下面命令:
fuser -ck /mnt/nas或者fuser -mk /mnt/nas可以殺死相關(guān)進(jìn)程,然后再執(zhí)行umount /mnt/nas即可卸載成功.
以下是相關(guān)資料:
3.設(shè)置重啟后自動(dòng)掛載
(參考:原文鏈接:https://blog.csdn.net/qq_40338425/article/details/95169567)
有時(shí)會(huì)發(fā)現(xiàn),掛載成功的NAS在服務(wù)器重啟后會(huì)消失,所以我們要設(shè)置自動(dòng)掛載NAS,方法如下:
【可能出現(xiàn)的問(wèn)題】:
【1】如果掛載命令一直無(wú)響應(yīng)卡在那,可能是NAS中沒(méi)有啟用NFS,可以在NAS的網(wǎng)頁(yè)界面的控制面板中找到"File Services",里面的"SMB/AFP/NFS"的最下面打勾啟用NFS。
【2】掛載時(shí)候,如果出現(xiàn)這種錯(cuò)誤mount.nfs: access denied by server while mounting 172.16.88.80:/volume1/data掛載失敗,可使用如下方法解決:
原因是nas沒(méi)有設(shè)置nfs服務(wù)器,不設(shè)置的話,別的主機(jī)想掛載它,就沒(méi)有權(quán)限。可以在nfs服務(wù)器文件中添加主機(jī)。
參考博客:https://blog.csdn.net/kevinhg/article/details/5967432 NFS服務(wù)器設(shè)置及mount命令掛載
(1)登錄進(jìn)nas的終端(注意:不是登錄進(jìn)你想掛載到的主機(jī)的終端):
/volume1/data是nas上的共享目錄,接下來(lái)除了ip地址需要修改,后面的括號(hào)中默認(rèn)不用修改,如有疑問(wèn)可以查閱前面的參考博客。
(3)使改動(dòng)立刻生效,重新mount 上一步/etc/exports中的共享目錄:
往里面加入掛載命令:
mount -t nfs 172.16.34.190:/volume1/data /mnt/nas這樣即使主機(jī)重啟后也會(huì)自動(dòng)掛載。
【注意】:(1) 這里可能存在路徑不對(duì)而出現(xiàn)類似"mount.nfs: Failed to resolve server 172.16.34.190/: Temporary failure in name resolution"的問(wèn)題。可以使用ssh登錄NAS,在data路徑下使用pwd查看路徑。
(2) 設(shè)置ssh登錄NAS,需要在群暉NAS頁(yè)面下的控制面板的"終端機(jī)和SNMP"選項(xiàng)勾選"啟用ssh功能"。
(3) 上面的172.16.34.190是NAS的ip地址,/volume1/data是NAS的共享文件夾。
4.在NAS上插上移動(dòng)硬盤或優(yōu)盤拷貝數(shù)據(jù)的方法:
(1)方法1:(圖形化界面,拷貝也很快,推薦)
在筆記本電腦上打開(kāi)谷歌瀏覽器,輸入http://find.synology.com/然后輸入賬號(hào)cidi和密碼qwertyuiop,打開(kāi)File Station就會(huì)看到兩個(gè)文件夾data和usbshare1,data是mdc上掛載的nas共享文件夾,
usbshare1自己的U盤,,再打開(kāi)一個(gè)File Station,自己在兩個(gè)File Station之間拖拽文件進(jìn)行復(fù)制。
拷貝完之后,在usbshare1上右鍵選擇退出,彈出U盤。
(2)方法2:(命令行操作,路徑有點(diǎn)亂,自己先在實(shí)驗(yàn)室mdc上操作熟悉一下)
ssh登錄上NAS,df -h 可以看到剛剛插入的硬盤/volumeUSB1/usbshare,還有一個(gè)/volume1是nas硬盤,以拷貝nas硬盤上的perception_node文件到usb移動(dòng)硬盤上為例:
cp /volume1/data/mdc/ip17/nas/zhz/release/bin/perception_node /volumeUSB1/usbshare/。
不知道路徑可以依次敲兩下Tab鍵來(lái)看目錄下有哪些目錄。
即:NAS的硬盤是volume1,在volume1下新建了一個(gè)共享文件夾data,然后把這個(gè)/volume1/data/文件夾掛載到mdc上的/mnt/nas/,在mdc的/mnt/nas/目錄下新建mdc/ip17/nas/后得到路徑/mnt/nas/mdc/ip17/nas/,
再把/mnt/nas/mdc/ip17/nas/做一個(gè)軟鏈接nas放到mdc的home目錄/home/mdc/下,即/home/mdc/nas(這就是我們平時(shí)訪問(wèn)的那個(gè)目錄,該目錄其實(shí)是個(gè)軟鏈接)。所以拷貝的話,路徑比較復(fù)雜。
網(wǎng)線插在交換機(jī)上沒(méi)網(wǎng)絡(luò),但是同一個(gè)交換機(jī)上的ip是一個(gè)網(wǎng)段的,它們之間可以ping通,可以ssh登錄。
給電腦綁定靜態(tài)ip的方法:網(wǎng)絡(luò),編輯連接,選中有線連接,編輯,ipv4設(shè)置,手動(dòng)(manual),add,輸入自己想綁定的ip地址,(子網(wǎng)掩碼隨便設(shè)置為16或24或255.255.0.0或255.255.255.0都行如果想連上英特網(wǎng),還得設(shè)置網(wǎng)關(guān),ip的最后一個(gè)改成1就是網(wǎng)關(guān),dns服務(wù)器設(shè)置為8.8.8.8,)然后點(diǎn)擊保存即可。想要變回隨機(jī)分配IP,就重復(fù)前面的步驟,把手動(dòng)改為自動(dòng)(DHCP)即可。
NAS有兩個(gè)網(wǎng)卡,其中一個(gè)綁定靜態(tài)ip,另一個(gè)隨機(jī)分配IP。可以ssh登錄靜態(tài)IP地址,然后ifconfig會(huì)看到兩個(gè)網(wǎng)卡和ip,記下另一個(gè)隨機(jī)IP地址(不換網(wǎng)口,這個(gè)ip一般就不會(huì)變化),然后就可以使用 ftp://IP 來(lái)登錄ftp了(因?yàn)橹癗AS設(shè)置過(guò)打開(kāi)ftp和ssh開(kāi)關(guān),下次更換了IP地址后就不用再重新設(shè)置打開(kāi)ftp和ssh了)。
群暉NAS:
群暉NAS賬號(hào):cidi
密碼:qwertyuiop
(1)把群暉NAS插電聯(lián)網(wǎng)之后,輸入這個(gè)網(wǎng)址掃描群暉NAS:http://find.synology.com/,注意NAS聯(lián)網(wǎng)的ip和必須和電腦的ip在同一個(gè)局域網(wǎng),否則會(huì)搜索不到NAS。有時(shí)候很邪乎,換好幾個(gè)網(wǎng)口都搜不到NAS,所以最好是把PC和NAS連接在一臺(tái)交換機(jī),可以保證他們?cè)谕痪W(wǎng)段,一定可以搜到NAS.
(2)搜索到NAS之后就輸入NAS的賬號(hào)和密碼登陸進(jìn)去,然后在"控制面板"或者"File station"新建共享文件夾。然后再進(jìn)行掛載操作。
(3)如果你需要掛載在別的服務(wù)器(比如mdc上,但是mdc上不能登錄網(wǎng)頁(yè)查看到NAS的ip,所以前提是你先知道NAS的ip是多少)上,要掛載到的那個(gè)服務(wù)器的ip也必須和NAS在同一個(gè)局域網(wǎng)。
104.創(chuàng)建軟鏈接
ln -s 源路徑 目標(biāo)路徑(名稱)例如 ln -s /home/zhz/work /home/zhz/Desktop/link_to_work
就會(huì)在Desktop目錄下生成一個(gè)link_to_work的軟鏈接(快捷方式)
105.將ubuntu電腦設(shè)置為一臺(tái)可遠(yuǎn)程ssh訪問(wèn)的服務(wù)器
參考 原文鏈接:https://blog.csdn.net/papaaa/article/details/77366382
其實(shí),將ubuntu系統(tǒng)設(shè)置為服務(wù)器很簡(jiǎn)單,只需要開(kāi)啟ssh服務(wù)就可以了。開(kāi)啟了ssh服務(wù)以后,其它電腦就可以通過(guò)ssh登錄你的這臺(tái)ubuntu服務(wù)器。SSH分客戶端openssh-client和openssh-server,但是ubuntu系統(tǒng)已經(jīng)默認(rèn)有openssh-client(再說(shuō)作為服務(wù)器也不需要這個(gè)),所以你現(xiàn)在只需要安裝openssh-server就可以達(dá)到目的。
安裝openssh-server:
1、在 ubuntu Terminal 下輸入命令:sudo apt-get update
2、在 ubuntu Terminal 下輸入命令:sudo apt-get install openssh-server
如果沒(méi)有報(bào)錯(cuò)openssh-server已經(jīng)安裝好了,接下來(lái)你需要查看ssh服務(wù)是否開(kāi)啟,在Terminal輸入命令 ps -e |grep ssh,如果出現(xiàn)sshd則已經(jīng)開(kāi)啟,如下7124 ? 00:00:00 sshd;
否則就是沒(méi)有開(kāi)啟,需要輸入命令sudo /etc/init.d/ssh start開(kāi)啟服務(wù),為了確定開(kāi)啟服務(wù),再用上述命令查看。
在開(kāi)啟ssh服務(wù)以后,你就可以在其它電腦來(lái)訪問(wèn)你的ubuntu系統(tǒng)了,噢,對(duì)了,開(kāi)啟的默認(rèn)端口是22。如果在ubuntu登錄,直接用ssh username@192.168.1.1 username為192.168.1.1機(jī)器上的用戶名,需要輸入密碼,密碼為ubuntu機(jī)器上的用戶密碼(執(zhí)行sudo命令需要輸入的那個(gè))。如果在windows系統(tǒng)登錄,需要下載支持ssh的軟件,博主一直在使用putty(端口號(hào)為22)。
106.在ubuntu電腦(或服務(wù)器)登錄另一臺(tái)ubuntu電腦(或服務(wù)器)的文件系統(tǒng)sftp/ftp
(1)ftp
sudo apt-get install vsftpd # 安裝ftp服務(wù) service nvsftpd start #啟動(dòng)ftp服務(wù) service nvsftpd status #查看ftp服務(wù)狀態(tài)然后就可以使用ftp方式連接本服務(wù)器了
(2)sftp
方法: sftp://172.16.34.96/home/zhz
例如,我隨意打開(kāi)自己ubuntu電腦的一個(gè)文件夾,在最左側(cè)目錄一欄的最下方會(huì)有一個(gè)"Connect to Server"【連接到服務(wù)器】,點(diǎn)擊它,輸入格式如下:sftp://172.16.34.96/home/zhz,
172.16.34.96是你想登錄的另一臺(tái)ubuntu電腦的ip,zhz是那臺(tái)電腦的用戶名,,然后輸入密碼就可以登錄到另一臺(tái)電腦的文件系統(tǒng), 然后就可以操作服務(wù)器那邊的文件像操作自己電腦上的文件一樣,隨意復(fù)制或新建或下載到本機(jī)上。
該方法可以操作文件,ssh方法可以使用命令行的方式進(jìn)行操作文件或者運(yùn)行其他命令,但是他們都不能夠在本機(jī)上顯示你想得到的程序的圖形化界面。
107.端口映射ping不同的解決辦法
192.168.1.6端口映射為172.18.2.244,但是ping不通172.16.xx.xx網(wǎng)段的NAS網(wǎng)絡(luò)存儲(chǔ)器,所以掛載不了NAS,解決辦法就是
sudo vim /etc/network/interfaces auto lo iface lo inet loopback auto enp125s0f0 # 這是一個(gè)網(wǎng)卡 iface enp125s0f0 inet static address 192.168.1.6 #注意這個(gè)ip是外網(wǎng)ip,通過(guò)這個(gè)ip來(lái)映射為內(nèi)網(wǎng)172.18.2.244 netmask 255.255.255.0 gateway 192.168.1.1 ### 這句話是需要添加的auto enp125s0f2 # 這是另一個(gè)網(wǎng)卡 iface enp125s0f2 inet static address 192.168.3.6 netmask 255.255.255.0在上面的對(duì)應(yīng)網(wǎng)卡添加網(wǎng)關(guān) gateway 192.168.1.1后,重啟,就可以ping通了
108.nas服務(wù)器或Red-Hat系統(tǒng)設(shè)置靜態(tài)ip
當(dāng)我們只能命令行訪問(wèn)服務(wù)器時(shí)候,就不能使用圖形化界面來(lái)設(shè)置靜態(tài)ip了,就得使用命令行配置靜態(tài)ip。
輸入ifconfig查看網(wǎng)卡和ip信息
如果輸入“ifconfig”命令時(shí)提示找不到命令,
在閱讀模式下,輸入“i”進(jìn)入到編輯模式
BOOTTROPO:代表的是獲取ip方式(“dhcp”=動(dòng)態(tài)獲取/“static”=設(shè)置靜態(tài)ip) IPADDR:代表ip地址,這里可以自己指定的地址 NETMASK:代表子網(wǎng)掩碼,使用剛才查看的子網(wǎng)掩碼 GATEWAY:代表網(wǎng)關(guān),因?yàn)槲业氖?span id="ozvdkddzhkzd" class="token number">192.168.2網(wǎng)段,所以網(wǎng)關(guān)就用192.168.2.1就可以最后就是保存生效后,重啟系統(tǒng)就可以。
108.1.Ubuntu系統(tǒng)設(shè)置靜態(tài)ip
首先打開(kāi)終端,輸入命令 sudo vim /etc/network/interfaces 進(jìn)入到文件中開(kāi)始我們的配置
只需要在該文件中添加如下內(nèi)容:
auto ens33 #網(wǎng)卡名iface ens33 inet static #設(shè)置為靜態(tài)address 192.168.190.3 #IP地址netmask 255.255.255.0 #子網(wǎng)掩碼gateway 192.168.190.2 #網(wǎng)關(guān)dns-nameserver 114.114.114.114 #DNS服務(wù)器109.mdc設(shè)置訪問(wèn)外網(wǎng)
mdc訪問(wèn)外網(wǎng):
首先第一步,在實(shí)驗(yàn)室的主機(jī)電腦上打開(kāi)虛擬機(jī),開(kāi)啟cenos8,打開(kāi)它才能讓mdc上網(wǎng)。(車上訪問(wèn)外網(wǎng)不需要這一步)
然后在mdc終端root用戶下,新建了一個(gè)腳本route.sh,腳本內(nèi)容如下:
然后運(yùn)行 bash route.sh應(yīng)該就能訪問(wèn)外網(wǎng)了。
/etc/resolv.conf是DNS客戶機(jī)配置文件,用于設(shè)置DNS服務(wù)器的IP地址及DNS域名,還包含了主機(jī)的域名搜索順序。
關(guān)于/etc/resolv.conf可參考 https://www.cnblogs.com/mafeng/p/10500548.html
110.DNS、網(wǎng)關(guān)、子網(wǎng)掩碼、端口映射、路由器、交換機(jī)
【1.DNS】
DNS(Domain Name System/Server)是域名服務(wù)器,它將人類可讀的名稱(如www.example.com) 轉(zhuǎn)換為數(shù)字IP 地址(如192.0.2.1),供計(jì)算機(jī)用于相互連接。
114.114.114.114是國(guó)內(nèi)移動(dòng)、電信和聯(lián)通通用的DNS,解析成功率相對(duì)來(lái)說(shuō)更高度,國(guó)內(nèi)用戶使用的比較多,速度相對(duì)快、穩(wěn)定,是國(guó)內(nèi)用戶上網(wǎng)常用的DNS。
8.8.8.8是GOOGLE公司提供的DNS,該地址是全球通用的,相對(duì)來(lái)說(shuō),更適合國(guó)外以及訪問(wèn)國(guó)外網(wǎng)站的用戶使用。
【2.網(wǎng)關(guān)】
網(wǎng)關(guān)是一種充當(dāng)轉(zhuǎn)換重任的計(jì)算機(jī)系統(tǒng)或設(shè)備。使用在不同的通信協(xié)議、數(shù)據(jù)格式或語(yǔ)言,甚至體系結(jié)構(gòu)完全不同的兩種系統(tǒng)之間,網(wǎng)關(guān)是一個(gè)翻譯器。從一個(gè)房間走到另一個(gè)房間,必然要經(jīng)過(guò)一扇門。同樣,從一個(gè)網(wǎng)絡(luò)向另一個(gè)網(wǎng)絡(luò)發(fā)送信息,也必須經(jīng)過(guò)一道“關(guān)口”,這道關(guān)口就是網(wǎng)關(guān)。顧名思義,網(wǎng)關(guān)(Gateway) 就是一個(gè)網(wǎng)絡(luò)連接到另一個(gè)網(wǎng)絡(luò)的“關(guān)口”。也就是網(wǎng)絡(luò)關(guān)卡。
網(wǎng)關(guān)實(shí)質(zhì)上是一個(gè)網(wǎng)絡(luò)通向其他網(wǎng)絡(luò)的IP地址。比如有網(wǎng)絡(luò)A和網(wǎng)絡(luò)B,網(wǎng)絡(luò)A的IP地址范圍為“192.168.1.1~192. 168.1.254”,子網(wǎng)掩碼為255.255.255.0;網(wǎng)絡(luò)B的IP地址范圍為“192.168.2.1~192.168.2.254”,子網(wǎng)掩碼為255.255.255.0。在沒(méi)有路由器的情況下,兩個(gè)網(wǎng)絡(luò)之間是不能進(jìn)行TCP/IP通信的,即使是兩個(gè)網(wǎng)絡(luò)連接在同一臺(tái)交換機(jī)(或集線器)上,TCP/IP協(xié)議也會(huì)根據(jù)子網(wǎng)掩碼(255.255.255.0)判定兩個(gè)網(wǎng)絡(luò)中的主機(jī)處在不同的網(wǎng)絡(luò)里。而要實(shí)現(xiàn)這兩個(gè)網(wǎng)絡(luò)之間的通信,則必須通過(guò)網(wǎng)關(guān)。如果網(wǎng)絡(luò)A中的主機(jī)發(fā)現(xiàn)數(shù)據(jù)包的目的主機(jī)不在本地網(wǎng)絡(luò)中,就把數(shù)據(jù)包轉(zhuǎn)發(fā)給它自己的網(wǎng)關(guān),再由網(wǎng)關(guān)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)B的網(wǎng)關(guān),網(wǎng)絡(luò)B的網(wǎng)關(guān)再轉(zhuǎn)發(fā)給網(wǎng)絡(luò)B的某個(gè)主機(jī)。
【3.子網(wǎng)掩碼】
子網(wǎng)掩碼是一個(gè)32位的2進(jìn)制數(shù), 其對(duì)應(yīng)網(wǎng)絡(luò)地址的所有位都置為1,對(duì)應(yīng)于主機(jī)地址的所有位都置為0。子網(wǎng)掩碼告知路由器,地址的哪一部分是網(wǎng)絡(luò)地址,哪一部分是主機(jī)地址,使路由器正確判斷任意IP地址是否是本網(wǎng)段的,從而正確地進(jìn)行路由。網(wǎng)絡(luò)上,數(shù)據(jù)從一個(gè)地方傳到另外一個(gè)地方,是依靠IP尋址。從邏輯上來(lái)講,是兩步的。第一步,從IP中找到所屬的網(wǎng)絡(luò),好比是去找這個(gè)人是哪個(gè)小區(qū)的;第二步,再?gòu)腎P 中找到主機(jī)在這個(gè)網(wǎng)絡(luò)中的位置,好比是在小區(qū)里面找到這個(gè)人。
子網(wǎng)掩碼不能單獨(dú)存在,它必須結(jié)合IP地址一起使用。子網(wǎng)掩碼只有一個(gè)作用,就是將某個(gè)IP地址劃分成網(wǎng)絡(luò)地址和主機(jī)地址兩部分。
【4.路由器】
路由器是連接兩個(gè)或多個(gè)網(wǎng)絡(luò)的硬件設(shè)備,在網(wǎng)絡(luò)間起【網(wǎng)關(guān)】的作用,是讀取每一個(gè)數(shù)據(jù)包中的地址然后決定如何傳送的專用智能性的網(wǎng)絡(luò)設(shè)備。它能夠理解不同的協(xié)議,例如某個(gè)局域網(wǎng)使用的以太網(wǎng)協(xié)議,因特網(wǎng)使用的TCP/IP協(xié)議。這樣,路由器可以分析各種不同類型網(wǎng)絡(luò)傳來(lái)的數(shù)據(jù)包的目的地址,把非TCP/IP網(wǎng)絡(luò)的地址轉(zhuǎn)換成TCP/IP地址,或者反之;再根據(jù)選定的路由算法把各數(shù)據(jù)包按最佳路線傳送到指定位置。所以路由器可以把非TCP/ IP網(wǎng)絡(luò)連接到因特網(wǎng)上。
【5.交換機(jī)】
交換機(jī)(Switch)意為“開(kāi)關(guān)”是一種用于電(光)信號(hào)轉(zhuǎn)發(fā)的網(wǎng)絡(luò)設(shè)備。它可以為接入交換機(jī)的任意兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)提供獨(dú)享的電信號(hào)通路。最常見(jiàn)的交換機(jī)是以太網(wǎng)交換機(jī)。
交換是按照通信兩端傳輸信息的需要,用人工或設(shè)備自動(dòng)完成的方法,把要傳輸?shù)男畔⑺偷椒弦蟮南鄳?yīng)路由上的技術(shù)的統(tǒng)稱。交換機(jī)根據(jù)工作位置的不同,可以分為廣域網(wǎng)交換機(jī)和局域網(wǎng)交換機(jī)。廣域的交換機(jī)就是一種在通信系統(tǒng)中完成信息交換功能的設(shè)備,它應(yīng)用在數(shù)據(jù)鏈路層。交換機(jī)有多個(gè)端口,每個(gè)端口都具有橋接功能,可以連接一個(gè)局域網(wǎng)或一臺(tái)高性能服務(wù)器或工作站。實(shí)際上,交換機(jī)有時(shí)被稱為多端口網(wǎng)橋。
【6.端口映射】
目前不少企業(yè)都已建好了內(nèi)部局域網(wǎng),但隨著互聯(lián)網(wǎng)時(shí)代的到來(lái),僅搭建局域網(wǎng)已經(jīng)不能滿足眾多企業(yè)的需要,有更多的用戶需要在 Internet上發(fā)布信息,或進(jìn)行信息檢索,將企業(yè)內(nèi)聯(lián)網(wǎng)接入 Internet已經(jīng)成為眾多企業(yè)的迫切要求。但是,隨著因特網(wǎng)的迅速發(fā)展,IP地址短缺已成為一個(gè)十分突出的問(wèn)題,企業(yè)中不可能每臺(tái)電腦都擁有一個(gè)真實(shí)的IP地址,所以大部分的企業(yè)用戶都是通過(guò)網(wǎng)關(guān)或代理服務(wù)器上網(wǎng),而內(nèi)部的電腦只有一個(gè)網(wǎng)內(nèi)的IP地址這樣做的好處雖然節(jié)約了IP地址資源,但是有很多地方不方便,因?yàn)槠髽I(yè)的網(wǎng)絡(luò)很多是要對(duì)外的,由于網(wǎng)內(nèi)的電腦采用網(wǎng)關(guān)和代理上網(wǎng),本身沒(méi)有對(duì)外可訪問(wèn)的IP地址,所以造成外界無(wú)法訪問(wèn)這些電腦。又不能把企業(yè)的所有服務(wù)器全部放在作為代理服務(wù)器的一臺(tái)電腦上,這時(shí)候就要用到端口映射了。
即:IP短缺,利用端口映射把一個(gè)真實(shí)IP映射出很多“虛假”ip,我們都是用的這些虛假ip。
【7.以太網(wǎng)】
以太網(wǎng)是一種計(jì)算機(jī)局域網(wǎng)技術(shù)。它是目前應(yīng)用最普遍的局域網(wǎng)技術(shù)。以太網(wǎng)是現(xiàn)實(shí)世界中最普遍的一種計(jì)算機(jī)網(wǎng)絡(luò)。以太網(wǎng)有兩類:第一類是經(jīng)典以太網(wǎng),第二類是交換式以太網(wǎng),使用了一種稱為【交換機(jī)】的設(shè)備連接不同的計(jì)算機(jī)。經(jīng)典以太網(wǎng)是以太網(wǎng)的原始形式,運(yùn)行速度從3~10 Mbps不等;而交換式以太網(wǎng)正是廣泛應(yīng)用的以太網(wǎng),可運(yùn)行在100、1000和10000Mbps那樣的高速率,分別以快速以太網(wǎng)、千兆以太網(wǎng)和萬(wàn)兆以太網(wǎng)的形式呈現(xiàn)。
111.ssh登錄輸入密碼次數(shù)過(guò)多被鎖住的解決辦法
當(dāng)ssh登錄用戶輸入用戶密碼次數(shù)過(guò)多被鎖住出現(xiàn)這種情況:
Account locked due to 25 failed logins解決辦法:
在服務(wù)器上,root終端下:
112.ssh登錄服務(wù)器一直被拒絕的解決辦法
ssh登錄服務(wù)器,密碼正確但是一直出現(xiàn)下面這種情況:
Permission denied, please try again.解決方法:
因?yàn)榉?wù)器默認(rèn)該用戶沒(méi)有權(quán)限登錄上去,所以需要在服務(wù)器上設(shè)置:
在服務(wù)器root終端下:
113.Ubuntu下的ssh連接總是自己斷開(kāi)的解決辦法
Ubuntu的ssh保持長(zhǎng)時(shí)間連接
有時(shí)候在Ubuntu下的ssh連接老是自己會(huì)斷,一段時(shí)間不理它就會(huì)失去響應(yīng).如何讓ssh連接服務(wù)器或者sshtunnel保持連接呢?
解決辦法:
針對(duì)mdc上可以這么設(shè)置:
root下,vim /etc/ssh/sshd_config,將ClientAliveInterval 和ClientAliveCountMax 的值都設(shè)為300
方法1:
在服務(wù)器上 /etc/profile文件下最后有個(gè)
export TMOUT=300,單位是秒,修改這個(gè)值為3600可以讓它在一小時(shí)不掉線。
source /etc/profile執(zhí)行該命令令其立即生效。
方法2:(不靠譜)
轉(zhuǎn)自:http://www.fu-he.com/linux/jishu_d.asp?id=3939
有時(shí)候在Ubuntu下的ssh連接老是自己會(huì)斷,一段時(shí)間不理它就會(huì)失去響應(yīng).如何讓ssh連接服務(wù)器或者sshtunnel保持連接呢?
解決辦法:
只要在/etc/ssh/ssh_config文件里加兩個(gè)參數(shù)就行了
前一個(gè)參數(shù)是說(shuō)要保持連接,后一個(gè)參數(shù)表示每過(guò)5分鐘發(fā)一個(gè)數(shù)據(jù)包到服務(wù)器表示"我還活著"。
如果你沒(méi)有root權(quán)限,修改或者創(chuàng)建~/.ssh/ssh_config也是可以的.【這個(gè)沒(méi)試驗(yàn)】
114.當(dāng)前運(yùn)行的docker修改環(huán)境后,想在本地保存下來(lái)的方法
docker images 查看所有鏡像 docker ps # 查看當(dāng)前運(yùn)行的鏡像 docker commit -m="123" NAMES name # NAMES是通過(guò)docker ps 查看到的NAMES,name是自己取的別名# 例如:docker commit -m="123456" squirrel_docker docker_zhz docker pull 172.16.31.100:5000/squirrel:dev-latest # 拉取鏡像 docker run ..... # 運(yùn)行鏡像 docker stop $(docker ps -a -q) # 停止所有docker容器,docker外執(zhí)行115.shell語(yǔ)法
$# 傳遞到腳本的參數(shù)個(gè)數(shù) $* 以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù)。如"$*"用「"」括起來(lái)的情況、以"$1 $2 … $n"的形式輸出所有參數(shù)。 $@ 與$*相同,但是使用時(shí)加引號(hào),并在引號(hào)中返回每個(gè)參數(shù)。如"$@"用「"」括起來(lái)的情況、以"$1" "$2" … "$n" 的形式輸出所有參數(shù)。 $? 顯示最后命令的退出狀態(tài)。0表示沒(méi)有錯(cuò)誤,其他任何值表明有錯(cuò)誤。 $! 后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的ID號(hào) $$ 腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào) $0 執(zhí)行的文件名 $1 傳入的第一個(gè)參數(shù)& shell命令以&結(jié)尾,就可以后臺(tái)運(yùn)行,如:roscore& shift 命令每執(zhí)行一次,變量的個(gè)數(shù)($#)減一,而變量值提前一位.也可以shift后加數(shù)字參數(shù),如shift 3表示原來(lái)的$4現(xiàn)在變成$1,原來(lái)的$5現(xiàn)在變成$2等等,原來(lái)的$1、$2、$3丟棄,$0不移動(dòng)。不帶參數(shù)的shift命令相當(dāng)于shift 1。示例如下: #測(cè)試 shift 命令(x_shift.sh) until [ $# -eq 0 ] do echo "第一個(gè)參數(shù)為: $1 參數(shù)個(gè)數(shù)為: $#" shift done 執(zhí)行以上程序x_shift.sh: $./x_shift.sh 1 2 3 4結(jié)果顯示如下:
第一個(gè)參數(shù)為: 1 參數(shù)個(gè)數(shù)為: 4 第一個(gè)參數(shù)為: 2 參數(shù)個(gè)數(shù)為: 3 第一個(gè)參數(shù)為: 3 參數(shù)個(gè)數(shù)為: 2 第一個(gè)參數(shù)為: 4 參數(shù)個(gè)數(shù)為: 1------------------------------------------------------------------ [ -e $var ] 文件是否存在 [ -d $var ] 是否是目錄 [ -f $var ] 是否是文件[[ $var1 = $var2 ]] 兩個(gè)字符串是否相同 [ $var -eq 0 ] 一個(gè)變量是否為0 [ $a -gt $b ] a 大于 b [ $a -lt $b ] a 小于 b -----------------------------------------------------------------set
set -e 執(zhí)行的時(shí)候如果出現(xiàn)了返回值為非零,整個(gè)腳本 就會(huì)立即退出。 你寫(xiě)的每個(gè)腳本都應(yīng)該在文件開(kāi)頭加上set -e,這句語(yǔ)句告訴bash如果任何語(yǔ)句的執(zhí)行結(jié)果不是true則應(yīng)該退出.
set +e 執(zhí)行的時(shí)候如果出現(xiàn)了返回值為非零將會(huì)繼續(xù)執(zhí)行下面的腳本
#!/bin/sh -e或#!/bin/bash -e 放在腳本第一行,和set -e功能也一樣
set -x 用于腳本調(diào)試,在liunx腳本中可用set -x就可有詳細(xì)的日志輸出.免的老是要echo了
read用法:
read既可以從鍵盤讀取,也可以讀取文件的一行. read a # 這個(gè)命令執(zhí)行后,會(huì)要求從鍵盤輸入內(nèi)容 1234 # 這是鍵盤輸入1234 echo $a # 會(huì)輸出 1234下面是read讀取文本文件的一行內(nèi)容: while 循環(huán)讀取文本文件$release_conf的內(nèi)容: 其中文本文件中全部存放的是變量賦值,如某一行:work_path=/home/zhu/ while read line;do eval "$line" done < $release_conf 然后,文件中的每一行變量就可以被后續(xù)的代碼使用了,因?yàn)閳?zhí)行了一句 eval "$line" ,他就把 work_path=/home/zhu/ 給執(zhí)行了 --------------------------------------------------------------------------------------------------------------pgrep, pkill
pgrep -f abc 匹配出含abc的進(jìn)程 并輸出進(jìn)程的pid pkill -f abc 結(jié)束含abc的所有進(jìn)程DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 詳解參考https://blog.csdn.net/davidhopper/article/details/78989369 pkill -SIGINT -f record 結(jié)束進(jìn)程名包含record的進(jìn)程,SIGINT與字符ctrl+c關(guān)聯(lián),只能結(jié)束前臺(tái)進(jìn)程 --------------------------------------------------------------------------------------------------------------dirname, basename
dirname命令去除文件名中的非目錄部分,刪除最后一個(gè)“\”后面的路徑 basename命令用于打印目錄或者文件的基本名稱,顯示最后的目錄名或文件名 dirname /etc/httpd/ # 結(jié)果為/etc dirname /etc/httpd/conf/httpd.conf #結(jié)果為 /etc/httpd/conf/ basename /etc/httpd/conf/httpd.conf # 結(jié)果為 httpd.conf --------------------------------------------------------------------------------------------------------------nohup
nohup rosbag record -O $bag_name --split --duration=30m -b 2048 $topic >/dev/null 2>&1 & nohup 是 no hang up 的縮寫(xiě),就是不掛斷的意思。nohup命令:如果你正在運(yùn)行一個(gè)進(jìn)程,而且你覺(jué)得在退出帳戶時(shí)該進(jìn)程還不會(huì)結(jié)束,那么可以使用nohup命令。該命令可以在你退出帳戶/關(guān)閉終端之后繼續(xù)運(yùn)行相應(yīng)的進(jìn)程。 nohup COMMAND & # 這樣就能使命令永久的在后臺(tái)執(zhí)行 可參考 https://www.cnblogs.com/jinxiao-pu/p/9131057.htmldate
date +"%Y%m%d_%H_%M_%S" # 時(shí)間格式:20200519_20_38_47 echo `date +"%Y%m%d_%H_%M_%S"` # 輸出時(shí)間,必須加上``符號(hào)date +"%T" # %T 時(shí)間(只含時(shí)分秒,小時(shí)以24小時(shí)制來(lái)表示)。 echo `date +"%T"`%Y%m%d的參數(shù)可參考https://zhidao.baidu.com/question/484985079.htmla=date $a 對(duì) echo $a # date a 錯(cuò)b=`date` $b 錯(cuò) echo $b 對(duì) b 對(duì)查看文件(夾)權(quán)限
ls -ld /dev/shm/ 查看/dev/shm/目錄(本身)的權(quán)限 ll /dev/shm/ 查看/dev/shm/目錄下的文件(夾)的權(quán)限, 包括隱藏文件(夾) ls -l /dev/shm/ 查看/dev/shm/目錄下的文件(夾)的權(quán)限,不包括隱藏文件(夾) ``### test ?```c # 如果 ls -ld /dev/shm/ | grep drwxrwxrwx的輸出為空,就執(zhí)行 chmod -R 777 /dev/shm/ if test -z "$(ls -ld /dev/shm/ | grep drwxrwxrwx)" ;thenchmod -R 777 /dev/shm/ fi開(kāi)機(jī)自啟動(dòng)數(shù)字小鍵盤numlock
# 如果該文件是可執(zhí)行文件 if test -x /usr/bin/numlockx ; thennumlockx on fichown 將指定文件的擁有者改為指定的用戶或組
用戶可以是用戶名或者用戶 ID,組可以是組名或者組 ID,文件是以空格分開(kāi)的要改變權(quán)限的文件列表,支持通配符。
chown 需要超級(jí)用戶 root 的權(quán)限才能執(zhí)行此命令。
只有超級(jí)用戶和屬于組的文件所有者才能變更文件關(guān)聯(lián)組。非超級(jí)用戶如需要設(shè)置關(guān)聯(lián)組可能需要使用 chgrp 命令。
chown mdc.mdc file(dir) # 把file(或者目錄)的擁有者和組都改為mdc用戶
更多詳細(xì)用法參考 https://www.runoob.com/linux/linux-comm-chown.html
判斷文件夾是否存在,判斷是不是一個(gè)文件
# 如果 /home/zhz/nas/abc目錄不存在,則執(zhí)行 mount ##### 注意文件或者目錄需要用雙引號(hào)if [ ! -d “/home/zhz/nas/abc” ];then # 注意 [ 的右邊有空格, ]的左邊有空格.
mount -t nfs 192.168.1.163:/volume1_106/data /mnt/nas
else
echo “dir exists!”
fi
if test ! -d “/home/zhz/nas/abc” ;then
mount -t nfs 192.168.1.163:/volume1_106/data /mnt/nas
else
echo “dir exists!”
fi
把一段命令當(dāng)做變量輸出
# 把命令用`()`括起來(lái),然后在括號(hào)`()`前面加上`$`符號(hào),最后把他們都用`" "`包起來(lái)即可. "$(ls -ld /dev/shm/ | grep drwxrwxrwx)"# 命令多重嵌套,先是 path_1 = dirname "${BASH_SOURCE[0],然后在 cd 到 $path_1,再執(zhí)行 pwd顯示當(dāng)前路徑,最后把他們當(dāng)做變量賦值給 DIR DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"116.gdb調(diào)試和coredump
https://baijiahao.baidu.com/s?id=1599347824327158577&wfr=spider&for=pc
https://www.jianshu.com/p/e38a3f1cf7f7
https://www.pianshen.com/article/2260634841/
ulimit -c unlimited #可以產(chǎn)生core且不受大小限制
sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t #生成的core文件存放在/tmp目錄下
幾個(gè)常用的gdb命令:
bt或where 可以定位到出現(xiàn)問(wèn)題的函數(shù)
l(list) 顯示源代碼,并且可以看到對(duì)應(yīng)的行號(hào);
b(break)x x是行號(hào),表示在對(duì)應(yīng)的行號(hào)位置設(shè)置斷點(diǎn);
p(print)x x是變量名,表示打印變量x的值
r(run) 表示繼續(xù)執(zhí)行到斷點(diǎn)的位置
n(next) 表示執(zhí)行下一步
c(continue) 表示繼續(xù)執(zhí)行
q(quit) 表示退出gdb
117.ubuntu使用 nethogs 監(jiān)測(cè)網(wǎng)絡(luò)流量情況
最簡(jiǎn)單的安裝方法: sudo apt-get install nethogs,他會(huì)直接安裝0.8.1版本/
安裝成功后使用如下命令
``c
sudo nethogs
118.ubuntu定時(shí)執(zhí)行腳本
如果發(fā)現(xiàn)/etc/crontab中的定時(shí)任務(wù)沒(méi)執(zhí)行,可以使用/etc/init.d/cron status來(lái)查看狀態(tài),可能會(huì)提示“Error: bad username; while reading /etc/crontab”等信息,這就是格式有錯(cuò)誤,可能是空格和換行之類的錯(cuò)誤。
詳細(xì)可參考 https://www.cnblogs.com/kunpengit/p/4045343.html
ubuntu是cron,別的平臺(tái)可能是crond
可參考 https://www.cnblogs.com/lfri/p/10739602.html
service cron status #查看服務(wù)狀態(tài)
service cron start #啟動(dòng)服務(wù)
service cron stop #關(guān)閉服務(wù)
service cron restart #重啟服務(wù)
service cron reload #重新載入配置
如果想要每2分鐘執(zhí)行一次a.sh腳本的話,可以這么做:
對(duì)于需要使用root權(quán)限的命令,使用第一種方法即可.
方法1:
方法2:
su root # 或者sudo su root crontab -e # m h dom mon dow command #和第一種相比少了一個(gè)user */2 * * * * bash /home/zhz/a.sh既可以定時(shí)幾點(diǎn)幾分執(zhí)行腳本,也可以定時(shí)每分鐘或每小時(shí)執(zhí)行腳本
# m h dom mon dow user command # 分鐘 小時(shí) DayOfMonth 月 DayOfWeek 用戶 命令 # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) 28 6 * * * root bash /home/user/a.sh # 表示的是每天6:28分執(zhí)行該腳本1 * * * * root bash /home/user/a.sh # 表示的是每小時(shí)的第一分鐘執(zhí)行該腳本*/1 * * * * root bash /home/user/a.sh # 表示的是每一分鐘執(zhí)行該腳本119.修改ubuntu用戶密碼
下面這個(gè)命令可以直接修改密碼,但是這個(gè)密碼必須夠長(zhǎng)
passwd下面這個(gè)方法可以只設(shè)置密碼為1個(gè)字符,不限制長(zhǎng)度
sudo passwd user_name120.mdc安裝和開(kāi)啟ftp服務(wù)
sudo apt-get install vsftpd # 安裝ftp服務(wù) servicenvsftpd start #啟動(dòng)ftp服務(wù) service vsftpd status # 查看ftp服務(wù)狀態(tài),會(huì)看到 ACTIVE:active(running)然后就可以使用ftp方式連接本服務(wù)器了。
如果是mdc服務(wù)器的話,這樣會(huì)啟動(dòng)ftp服務(wù)失敗,解決方案如下:
mdc上服務(wù)器的/etc/vsftpd.conf文件和我們自己電腦的該文件都是默認(rèn)有
把mdc服務(wù)器上的/etc/vsftpd.conf文件中的這兩個(gè)參數(shù)值改為和自己電腦相反,即
listen=YES listen_ipv6=NO然后再
service vsftpd restart # 重啟ftp服務(wù) service vsftpd status # 查看ftp服務(wù)狀態(tài),會(huì)看到 ACTIVE:active(running) ps -ef | grep ftp # 該命令會(huì)查到ftp服務(wù)vsftp和sftp服務(wù),敲一遍就知道了121.mdc啟動(dòng)網(wǎng)卡并設(shè)置其ip和子網(wǎng)掩碼
ifconfig enp125s0f1 192.168.2.6 netmask 255.255.255.0 up如果需要開(kāi)機(jī)啟動(dòng)網(wǎng)卡并設(shè)置其ip和子網(wǎng)掩碼,只需將他加入到/etc/rc.local中即可。
122.LD_LIBRARY_PATH詳解、C++靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)
(1) LD_LIBRARY_PATH詳解
參考鏈接: https://www.jianshu.com/p/a62e1d327023
LD_LIBRARY_PATH中的LD是指的LOAD
LD_LIBRARY_PATH是Linux環(huán)境變量名,該環(huán)境變量主要用于指定查找共享庫(kù)(動(dòng)態(tài)鏈接庫(kù))時(shí)除了默認(rèn)路徑之外的其他路徑。
可以使用 ls /usr/lib |grep lib 查看自己是否有需要的庫(kù)文件,當(dāng)然還需查看其它庫(kù)文件目錄:echo $LD_LIBRARY_PATH 里面一般可以看到七八個(gè)已經(jīng)定義好的庫(kù)文件搜索路徑。
當(dāng)執(zhí)行函數(shù)動(dòng)態(tài)鏈接.so時(shí),如果此文件不在缺省目錄下 /lib和/usr/lib,那么就需要指定環(huán)境變量LD_LIBRARY_PATH。
假如現(xiàn)在需要在已有的環(huán)境變量上添加新的路徑名,則采用如下方式: LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH (newdirs是新的路徑串), 實(shí)例如下;
export LD_LIBRARY_PATH=/export/apps/anaconda2/2.4.1/lib/:$LD_LIBRARY_PATH
每次使用某軟件都需要臨時(shí)修改庫(kù)文件,因?yàn)樯厦娴膃xport方法是臨時(shí)設(shè)置環(huán)境變量LD_LIBRARY_PATH,重啟或打開(kāi)新的 Shell 之后,一切設(shè)置將不復(fù)存在。
可以將該 LD_LIBRARY_PATH 的 export 語(yǔ)句寫(xiě)到系統(tǒng)文件中,例如 ~/.bashrc、/etc/profile、/etc/export 或者 ~/.bash_profile 等等,取決于你正在使用的操作系統(tǒng)。
(2) C++靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)
C++靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)詳細(xì)文檔 參考 https://www.runoob.com/w3cnote/cpp-static-library-and-dynamic-library.html
ldd命令可以查看一個(gè)動(dòng)態(tài)鏈接庫(kù)依賴的共享庫(kù),如
ldd /usr/lib/libmpi.so.12命令,會(huì)打印出該動(dòng)態(tài)庫(kù)依賴的所有共享庫(kù):
123.linux系統(tǒng)下查看本機(jī)所在局域網(wǎng)中所有設(shè)備IP
1. 安裝arp-scan
sudo apt-get install arp-scan
2. 查看本機(jī)連接的局域網(wǎng)所用的網(wǎng)卡名稱
執(zhí)行ifconfig命令查看網(wǎng)卡名稱,如eth0、eth1、wlan0、wlan1、enp0s3等等
3.運(yùn)行 arp-scan
執(zhí)行命令:
sudo arp-scan -I enp0s3 --localnet
124.linux抓包工具tcpdump的使用
linux可視化抓包工具可以使用wireshark,對(duì)于不能可視化的,還是得使用tcpdump
tcpdump -h # 查看用法
最簡(jiǎn)單的用法: tcpdump -i eth0
過(guò)濾信息的方法:
抓取eth0網(wǎng)卡上的源主機(jī)為192.168.1.6、協(xié)議為udp、端口為22的信息:
tcpdump -i eth0 src 192.168.1.6 udp port 22
抓取eth0網(wǎng)卡上的源主機(jī)為192.168.1.6、協(xié)議為udp、端口為22的信息,并存進(jìn)a.cap文件中:
tcpdump -i eth0 src 192.168.1.6 udp port 22 -w a.cap
抓取eth0網(wǎng)卡上的目的主機(jī)為192.168.1.6、協(xié)議為udp、端口為22的信息存進(jìn)a.cap文件中:
tcpdump -i 網(wǎng)卡名 dst 192.168.1.6 udp port 22 -w a.cap
tcpdump讀取包a.cap :
tcpdump -r a.cap
tcpdump讀取包a.cap中使用udp協(xié)議,端口號(hào)是22的數(shù)據(jù) :
tcpdump -r a.cap udp port 22
總結(jié)
以上是生活随笔為你收集整理的0.linux笔记.....持续更新...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 魔兽世界服务器修改模型,《魔兽世界》魔兽
- 下一篇: linux ps 被替换文件怎么恢复,被