樹莓派基礎使用整理
簡介
- linux需要登陸、關閉系統等;
- linux系統有普通使用者和超級使用者
- 普通使用者使用者名稱:任意
- 超級使用者使用者名稱:root
- linux檔案系統大小寫嚴格區分!!!
安裝
時間太長忘了安裝過程,下次裝的時候再補,不過掛載時需要加上’\’資料夾
在忘記root密碼時修改密碼
- 開機按 F12 (或長按Shift), 進入GRUB介面.
- 一開始可能有奇奇怪怪的東西,按相應的按鍵即可進行選擇;
- 選擇 Advanced options for Ubuntu
- 選擇Ubuntu, Linux 3.5.0-17-generic
- Ubuntu, Linux 3.5.0-17-generic (恢復模式) (或recovery mode)
- 在恢復模式處, 按e, 進入Ubuntu恢復模式的指令碼編輯介面,找到以下語句: 開頭是linux, 後面有
… ro recovery nomodeset
,將ro recovery nomodeset
,改為rw single init=/bin/bash
(注:如不修改此處, 後面進入root後,但是不能修改檔案) - 以上修改意為改為可讀可寫的單使用者模式, 之後按
Ctrl + x
, 進入單使用者模式, 此時的使用者即位root使用者(以上步驟是為了進入可讀寫的root使用者模式.以下步驟為修改root密碼) - 進入命令列後, 在命令列中執行
passwd root
輸入兩次新的密碼即可.
目錄結構
啟動後常規設定
-
命令列與桌面的切換
ctrl+alt+F7 命令列->桌面 ctrl+alt+F1~F6 桌面->命令列
常用指令
安裝與解除安裝
-
apt-get install xxx :安裝xxx
-
apt-get remove xxx :解除安裝xxx
-
apt-get remove –purge xxx :解除安裝xxx同時刪除配置檔案
-
apt-get update :更新軟體資訊資料庫
-
apt-get upgrade :進行系統升級
-
apt-cache search :搜尋軟體包
使用者設定
- who
檢視現在有誰在登陸狀態
- who am i
檢視我的使用者名稱等 - date
顯示當前日期 - locale
顯示環境變數 -
echo
顯示資訊,如歷史記錄、日期等
echo $HOME
:顯示當前資料夾echo string
:顯示字串- 加’\’可以在第二行繼續輸入
-
alias
alias rm='exam'
將某一常用命令取一個別名 -
清除螢幕:
- ctrl+l:(快捷鍵)
- clear:(cmd)
- reset:(cmd)
檔案
- cd
- cd :返回家目錄
- cd /path :設定當前目錄為/path
- sudo mkdir filepath
新建資料夾(exam等)
- sudo rmdir filepath
刪除資料夾 -
chmod
改變檔案屬性(rw…)
如’chmod -w file.c’刪除了當前目錄下file.c的可寫屬性 - more
more filename檢視當前資料夾下的檔案內容
- cat
新建檔案- cat > filename:新建一個名為filename的檔案,回車後會需要繼續輸入檔案內容,結束後按回車,再ctrl+D結束輸入(直接ctrl+C也可以)
-
pwd
顯示當前目錄
-
ls
顯示當前資料夾下的檔案(可見的)
- 若使用
ls -a
,則顯示所有檔案,包括不可見的 - ls -l顯示資料夾裡檔案的詳細資訊,如讀寫狀態,編輯日期等
- 若使用
- find
find . -name "*.c"
:在當前資料夾下查詢字尾名為.c檔案find / -name "*.c"
:在根目錄下查詢字尾名為.c檔案find filepath -name "*.c"
:在filepath目錄下查詢字尾名為.c檔案 - grep
grep content filename查詢filename裡與content相同的行
grep content filename -c查詢filename裡與content相同的行,並顯示行號 - sort
對檔案中的行進行排序 - comm
對檔案進行比較- comm file1 file2 先輸出相同的行,再輸出僅在某一檔案中出現的行
- cp
cp file1 file2
複製檔案 - diff
diff file1 file2
比較2個檔案 -
rm
rm filename
刪除檔案rm filename -i
刪除檔案時會有提示確認刪除 - mv
mv file1 file2
- wc
wc filename
:依次顯示行數、單詞數、字元數、檔名
磁碟
-
free
顯示記憶體使用情況
命令的輸入與輸出
- 執行shell命令時,有3個標準檔案
- 標準輸入檔案
- 標準輸出檔案
- 標準錯誤輸出檔案
-
cat
- cat後面不接任何提示符時,表示一直接受標準輸入,每次按回車,都會將輸入的內容輸出到螢幕上
- 要想結束輸入,只需按下ctrl+D
cat < filename
將檔案裡的內容輸出到螢幕上cat > filename
寫檔案(沖掉原來的內容)cat >> filename
向檔案裡新增內容
-
echo
echo content > filename
:將content寫進filename中(沖掉原來的內容)cat < file1 > file2
:將file1中的內容輸出到file2,即相當於複製
-
|
- 名為”無名管道”,連線內容,前面的是輸出到管道,後面的是從管道輸入資料
ls -l | wc -l
:ls -l
內容輸出到管道,wc -l
從管道獲取輸入- `command
表示command為一個命令(反引號引起來)echo
`pwd` 為執行pwd命令
檔案與目錄的概念
- 用’/’表示目錄與子目錄等
-
Linux服從FSSTND規範,一些典型目錄
- / : 根目錄
- /bin : 可執行檔案
- /boot : 系統啟動時用到的檔案,引導linux等時用到其中的一些資訊
- /dev : 包含所有linux系統中使用的外部裝置,但外設的驅動程式不在這裡(一般放在核心中或者model中)
- /etc : 存放系統管理時要用到的各種配置檔案
- /sbin : 存放系統管理員的系統管理程式
- /home : 如果建立一個使用者名稱,為”guoruoyu”,則系統在/home下會有一個/home/guoruoyu的路徑,存放使用者的主目錄
- /lib : 存放系統動態連結庫
- /mnt: (empty generally)一般為空,可以將別的檔案系統掛載在該目錄下
- /proc:獲取系統資訊
- /root:超級使用者的主目錄
- /tmp:存放不同程式執行時產生的臨時檔案
- /usr:linux系統中佔用硬碟空間最大的目錄
-
連線
- ln:為檔案新建一個連結,常分為符號連結和硬連結
- ln -s file1 newfile1符號連結,新建一個newfile1的名稱,但是它是file1的內容
- 建立符號連結後,刪除連結沒關係,但是不能刪除原始檔,否則more newfile1時,會顯示no such file or directory
- ln file1 file2硬連結,相當於複製,因為刪除原始檔後
- 硬連結不能跨檔案系統,且不能為目錄建立硬連結
- ln:為檔案新建一個連結,常分為符號連結和硬連結
-
chmod
設定檔案訪問許可權- 方法
- 使用字串設定許可權
- 使用8進位制數設定許可權
chown
改變檔案所有權chown username filename
改變檔案主人為username
- 普通使用者不能將檔案所有權改變為
root
chgrp
改變組
- 方法
-
gzip 壓縮和解壓縮檔案
gzip filename壓縮檔案壓縮,字尾名會加上.gz
gunzip filename將檔案解壓縮
gzip -d filename將檔案解壓縮,和上面一樣 -
tar檔案打包
- tar cvf fileg.tar file1
- tar zcvf fileg.tar.gz file1
-
man獲取聯機幫助
- man ls
-
which檔案或指令的位置
- whereis cmd:指令的幫助手冊
文字編輯
- vi
- vi filename:對文字進行編輯
- emacs
系統管理
使用者和工作組管理
- head /etc/passwd 檢視使用者屬性
- ls -l /etc passwd shadow檢視使用者的許可權對加密後的登陸資訊的訪問許可權(普通使用者沒有讀的許可權)
- /etc/group存放著組的基本資訊
- useradd username:新增一個使用者,使用者名稱為username,如果不給它設定引數,它不自動生成/home下的主目錄、使用者密碼和系統的shell
- adduser username新建使用者名稱為username的使用者,系統會產生提示,最終建立一個使用者(適合初級使用者,因為不像上面需要記住很多引數選項)
- userdel username刪除使用者,沒有引數時只刪除username,userdel -r user刪除使用者的同時刪除該使用者主目錄
- deluser username刪除使用者
- usermod 改變使用者的名稱
- groupadd:新增組,
- groupadd -r groupname 建立系統組賬號,id不能大於500
- groupadd groupname建立組,id大於500
*groupmod 刪除
密碼管理
- passwd
- gpasswd -a username groupname 新增使用者到組
- gpasswd -d username groupname 將使用者從組刪除
- su - username切換到其他使用者
程序管理
程序
-
ps:輸出最近的程序,不會輸出其他欄位
- ps -eu
-
ps u -e列出所有的程序資訊
sleep 2000& :產生一個程序 ps -l kill 4678 :殺死程序(4678是sleep的PID號) ps -l :檢視程序(發現產生的程序消失)
sleep 2000 睡眠2000s,&表示後臺程序
-
ctrl+C:(快捷鍵)終止當前程序
-
kill -9 PID:PID為bash的PID,相當於登陸,如果不加-9,登入狀態的程序殺不掉
執行緒
程序中的一個執行體,一個程序中的各個執行緒共享程序擁有的資源
可以把一個程序分成若干個執行緒
提高程序執行效率
程序分工細化
檢視登入使用者及日誌檔案
- w
- 檢視登入資訊,返回登入時間、時長等資訊
- 檢視日誌檔案系統
- 日誌在/var/log下,包含許多日誌檔案
- dmesg :系統自啟動以來產生的所有的訊息
- 日誌在/var/log下,包含許多日誌檔案
linux網路基礎
基本指令
- hostname:顯示主機名稱
-
ifconfig:顯示網路配置
- ifconfig eth0:檢視系統的配置
- ifconfig eth0 ipaddress:修改網路ip地址為ipaddress
- ifconfig eth0 down:關閉本地連線
- ifconfig eth0 up
-
sudo /etc/init.d/networking restart
- sudo /etc/init.d/networking start:開啟網路服務(和redhat linux有所不同)
- sudo /etc/init.d/networking stop
- service network:檢視網路服務
- more /etc/init.d/networking儲存網路資訊的檔案
-
route:檢視路由資訊
- destination:路由的目標ip地址
- gateway:閘道器使用的主機名或者ip地址
- route add ipaddress:增加路由的ip地址
-
ping網路測試指令
- ping netaddr -c num:向網址傳送num個報文,檢測收發狀態
-
traceroute:跟蹤網路
-
netstat:顯示各種與網路相關的狀態資訊
- netstat -i:網路統計資訊
- netstat -r顯示閘道器資訊
-
nslookup:查詢DNS資料庫
- 輸入指令後,輸入網址即可查詢網址ip地址等資訊
-
tcpdump
網路檔案
- 網路設定:/etc/sysconfig/network
- 埠號和伺服器之間的對映:/etc/services
- 配置DNS客戶 /etc/resolv.conf
- 主機地址、子網掩碼和閘道器:/etc/init.d/network(這個版本好像不行)
intranet伺服器
samba(一組軟體)
linux gcc使用
-
安裝gcc
sudo apt-get install build-essential
- 檢視版本
gcc --version
編譯、連結等指令
- 無選項編譯連結
- gcc file.c:預處理、編譯、連結生成a.out
- ./a.out:執行a.out
- file a.out:檢視檔案的型別(一般是elf型別的可執行程式,說明後綴不影響檔案型別)
- 選項-o
- gcc file.c -o file.o:生成file.out
- 其他:相關連結
文字編輯器
有用連結
vi/vim使用
- 安裝vim
- apt-get install vim(vi一般是自帶的,ubuntu沒有自帶vim)
vim的狀態
- 命令列模式
- 按esc到達命令列模式
- 插入模式
- 按i到達插入模式
- 底行模式
- 將檔案儲存或者退出vi,也可以設定編輯環境
- [esc]+:+q+!:不儲存退出
- [esc]+:+w+q:儲存後退出
程序建立系統呼叫
程序建立
-
指令: fork(主要) vfork clone
int var = fork();
var<0:建立不成功
var=0:
var>0:
raspberry 使用手冊
登陸
- root yourname(超級使用者)
- pi yourname(系統自動建立的使用者)
- gf yourname(處理網頁的使用者)
顯示器、鍵盤連上直接登陸
遠端登陸
- 工具
- advanced ip scanner
- putty
- 網口和路由器相連,為路由器上接個口和樹莓派相連,用advanced ip scanner掃描樹莓派的ip地址,用putty連上即可
- 這個找了好長時間。。之前樹莓派沒地址,用dos嘗試ping了一個地址,再次掃描時就發現樹莓派的地址變成它了。
- 首次登陸,需要配置
- rasp-config要配置,有幾個比較重要的地方
sudo raspi-config
(沒有空格)- expand filesystems
- 時區配置
- 修改密碼
- rasp-config要配置,有幾個比較重要的地方
- 為方便以後登陸時不用老查詢ip地址,可以設定靜態ip地址
- 自己上網找,反正我沒試成功,最後還得重新寫SD卡
*啟用root使用者
* sudo passwd root
軟體安裝與刪除
sudo apt-get remove [package name]
刪除軟體或包sudo apt-get install [package name]
安裝軟體或包
無線驅動的安裝與使用
遠端登陸樹莓派的圖形介面
- 網址
- 如果提示找不到,可以嘗試修改軟體源。
- 安裝之後,用
vncserver :1
啟動服務,在windows上用VNC viewer即可登陸圖形介面,比如說ip地址為192.168.0.111,開啟的埠號為1,則需要同192.168.0.111:1進行連結即可。- 注:這塊樹莓派的口令是########
檔案傳輸
- 直接開啟winscp直接拖拽檔案即可。
開機自啟動檔案
- /etc/rc.local 在該檔案中新增相應命令即可
gpio操作
下載wiringPi的庫
測試語句
- gpio -v :版本號
- gpio readall :gpio的所有管腳定義
基本
- 在/root/wiringPi/examples中有許多例子,可以參考
lsusb
檢視usb介面使用細節- 開機自動傳送ip到郵箱:網址
各種庫的說明
- 使用wiringPi庫時,用C語言開發,此時管腳定義是
gpio readall
中的wPi對應的管腳,設定時,直接用相應的數字即可。 - 使用python開發時對應的管腳,就是按照physical順序排列的管腳
有用的網站
進入樹莓派的圖形化介面
- python
- mathematic
python 開發
進入
- 命令列敲入python即可
攝像頭模組使用
- 安裝與使能
- sudo apt-get update 更新
- sudo raspi-config點選”enable camera”
- 重啟即可
-
使用
- raspistill -o filename.jpg -t time
- 當前目錄下於time秒之後拍照,生成一張filename.jpg的圖片
- 如果要檢視命令的全部選項,直接
raspistill
,回車即可
- raspivid -o filename.h264 -t 10000
- 拍視訊,生成10s、filename.h264的視訊。
raspivid
直接回車,可以檢視全部選項- 如果需要轉成MP4格式的檔案,可以參考上面的連結。
- raspistill -o filename.jpg -t time
-
樹莓派攝像頭實現實時監控和視訊資料傳輸
- 注:寫地址時,記得加上http://,否則顯示無法開啟
樹莓派搭建伺服器
- 為方便上傳與下載檔案使用(圖片、視訊等)
- 步驟
- 安裝vsftpd
- 配置各種關於vsftpd的檔案
- 在遇到530、453等網路問題時,基本都是配置檔案出現問題,按照檔案詳細說明中進行配置即可
- 搭建web伺服器的方法連結
- 之後只需登陸該介面即可檢視各種樹莓派上生成的網頁
樹莓派基於webiopi的網頁控制
-
執行webiopi
webiopi -d -c /etc/webiopi/config
一般埠為8000,之後只需登入”http://192.168.0.111:8000/“即可,使用者名稱是webiopi,密碼是raspberry
- 登入之後可以通過點選按鈕控制GPIO的狀態
- 要想修改初始化檔案,只需修改’/etc/webiopi/config’檔案即可
- 連線
-
啟動方法(root下)
cd /etc/init.d ./webiopi start
若要停止該服務,只需要./webiopi start
即可
樹莓派上python2.7的計算機視覺程式設計
-
安裝PIL庫(在樹莓派上這個方法似乎不可行,因為幾種檔案格式都不支援)
- 下載包
wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
- 解壓
tar xvfz Imaging-1.1.7.tar.gz
-
找到Imaging-1.1.7/setup.py,修改以下的語句
TCL_ROOT = "/usr/lib64/" JPEG_ROOT = "/usr/lib64/" ZLIB_ROOT = "/usr/lib64/" TIFF_ROOT = "/usr/lib64/" FREETYPE_ROOT = "/usr/lib64/" LCMS_ROOT = "/usr/lib64/"
- 安裝檢查
python /root/nowamagic_venv/Imaging-1.1.7/setup.py build_ext -i
- 安裝
python /root/nowamagic_venv/Imaging-1.1.7/setup.py install
- 下載包