2014年2月13日 星期四

樹莓派常用的 Linux 指令

我的樹莓派安裝好 Rasbian 後, 接下來就是要熟悉 Linux 作業系統的操作指令. 登入樹苺派的 Rasbian Linux 後, 預設是在 /home/pi 目錄下 (就是那條蟲 ~), 預設有下列目錄與檔案 :

Desktop  Documents  indiecity  ocr_pi.png  python_games  Scratch

以下整理了一些常用的指令 :
  1. 系統環境 :
    $ uname -a  (查詢 CPU 架構, Pi 3 是 ARMv71)
    $ lsb_release -a (查詢 Linux 散佈版本資訊)
    $ cat /etc/issue  (查詢 Linux 版本)
    $ cat /etc/debian_version   (查詢 Debian 版本)
    $ cat /etc/os-release   (查詢 OS 版本)
  2. 系統登入登出與關機 :
    樹莓派預設帳號是 pi, 密碼是 raspberry, 但如果在設定時有改過密碼, 就要用新密碼登入.
    登出系統的指令是 logoutexit, 執行後會回到登入前狀態 (按 Ctrl-D 亦可).
    關機指令是 sudo haltsudo poweroff, 關不掉時用 sudo poweroff -f  (強制), 然後直接關掉電源即可.
    $ sudo su (以 root 身分登入, 退出用 exit)
  3. 進入 GUI 圖形介面 :
    $ startx   (進入 X 視窗系統)
  4. 系統設定 :
    $ sudo raspi-config   (進入系統設定表單)
  5. 顯示自己的 IP
    $ sudo /etc/rc.local
  6. 允許 SSH 遠端登入
    $ sudo update-rc.d -f ssh defaults 20
  7. 重新啟動 (reboot)
    $ sudo reboot
    $ sudo sync;
    $ sudo shutdown -r now
  8. 顯示網路設定
    $ ifconfig  (全部)
    ifconfig wlan0 (只顯示無線網路卡 wlan0)
  9. 系統更新
    sudo apt-get update (取得遠端更新伺服器的套件檔案清單)
    sudo apt-get upgrade (更新已安裝套件)
    $ sudo apt-get clean (清除更新時所下載回來的檔案)
  10. 應用程式或套件安裝移除 (參考 PyPi)
    python3 -m pip install --upgrade pip (更新 pip 本身版本)
    python3 -m pip install --user --upgrade requests  (更新 requests)
    $ sudo apt-get install PKGNAME (安裝 PKGNAME)
    sudo apt-get install zip unzip (安裝 zip unzip)
    sudo apt-get --purge remove PKGNAME  (移除 PKGNAME)
    sudo apt-get remove --purge 'mysql-.*'   (移除 MySQL 伺服器)
    $ pip install PKGNAME  (安裝 PKGNAME)
    pip install "PKGNAME==1.0.4"  (安裝 PKGNAME-指定版本)
    pip install "PKGNAME>=1.0.4"  (安裝 PKGNAME-指定最小版本)
    $ pip install -U PKGNAME  (更新 PKGNAME)
    $ pip uninstall PKGNAME (移除 PKGNAME)
    $ sudo apt-get autoremove  (自動移除已不需要的套件)
    $ pip list (顯示已安裝之套件)
    註 :  Python 3 使用 pip3; Python 2 使用 pip2, 而 pip 則是安裝至目前環境 (Python2/3)
    $ pip --version  (查詢 pip 版本)
  11. 查詢程式安裝位置 :
    $ where python
    $ which python  
    which python3
    whereis python
  12. 重新命名檔案
    $ sudo mv old_name new_name
  13. 切換目錄
    cd  (切換到使用者根目錄)
    $ cd ~  (切換到使用者根目錄, 與 cd 同)
    $ cd .. (切換到上一層目錄)
  14. 顯示檔案
    $ ls -l  (顯示檔案列表-詳細資訊)
    $ ls -a (顯示全部檔案列表-包含隱藏檔)
    $ ls -al /etc | more  (顯示 /etc 目錄下的全部檔案列表, 一次顯示一頁, 按 q 跳出)
    $ cat /etc/password  (顯示檔案內容)
  15. 修改檔案權限 
    $ chmod 755 test.py (權限改為擁有者 rwx-可讀可寫可執行, 群組 rw, 其他 rw)
    chmod 644 test.py (權限改為擁有者 rw-可讀可寫, 群組 r, 其他 r)
    chown pi.abc test.py (修改 test.py 之擁有者為 pi, 群組為 abc)
    注意 : 因為安全性考量, 在 Linux 執行程式時必須在前面加上 ./     
  16. 複製檔案
    $ sudo cp interfaces /etc/network/interfaces
    $ sudo cp wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf
  17. 移除檔案 
    $ rm file_name
    $ rm -f file_name (強制刪除)
    $ rm -rf dir_name (強制刪除目錄及其下的全部檔案與子目錄)
  18. 字串搜尋 :
    $ grep foo *.py  (搜尋工作目錄下所有 .py 檔案內容中含有字串 foo 者)
    $ ps -aux | grep python  (搜尋目前系統中正在執行的 Python 程式)
  19. 查詢檔案 :
    $ df  (列出全部硬碟使用情形, 單位 byte)
    $ df -h (列出全部硬碟使用情形, 人性化以 MB/GB 為單位)
    df -Bm (列出全部硬碟使用情形, 以 MB 為單位)
    $ sudo find . -name 'test.py'   (查詢現在目錄下是否有 test.py)
    sudo find . -name '*.py'       (查詢以 .py 結尾之檔案)
    sudo find / -name 'test'.py'    (查詢根目錄下是否有 test.py)
    sudo find / -name 'test*'         (查詢根目錄下以 test 開頭的檔案)
  20. 掃描無線基地台
    $ sudo iwlist wlan0 scan    
  21. 重新啟動網路卡設定 (即 /etc/network/interfaces 之設定)
    $ sudo /etc/init.d/networking restart
  22. 重置網路卡
    sudo ifdown wlan0 (拉下來)
    sudo ifup wlan0 (拉上去)
  23. 連線主機
    $ ping yahoo.com  
  24. 查詢區網 IP :
    $ hostname -I  (傳回樹莓派從 DHCP 獲得指派之 IP)
    $ ifconfig    (傳回樹莓派有線無線介面之設定)
  25. 壓縮解壓縮 :
    $ tar -zcvf myfile.tar.gz mydir  (將 mydir 目錄下的檔案全部壓縮成 myfile.tar.gz)
    $ tar -zxvf myfile.tar.gz  (將 myfile.tar.gz 解壓縮到 myfile 資料夾)
    $ gzip -r mydir (將 mydir 目錄下的檔案全部壓縮)
    $ gzip -d myfile.gz (將 myfile.gz 解壓縮)
    $ zip zippedfile file1 file2 file3 (將 file1, file2, file3 壓縮成 zippedfile, , 須安裝 zip)
    $ zip -r myfile.zip mydir  (將 myfile 含子資料夾壓縮成 myfile.zip, 須安裝 zip)
    $ unzip myfile.zip  (解壓縮 zip 檔, 須安裝 unzip)
  26. 系統管理 :
    $ su  (切換到管理者帳號)
    $ htop  (顯示系統狀態, 列出前幾名耗用 CPU 資源之程序, 記憶體用量, CPU 各核心負載)
    $ ps -aux   (查看有多少程序在執行, 可查得其 PID 與程式名稱 COMMAND)
    $ sudo kill 123  (刪除 PID=123 的執行中程序)
    sudo kill -9 123  (強制刪除 PID=123 的執行中程序)
    sudo pkill python  (刪除目前正在執行中的全部 Python 程序)
    $ clear   (清空畫面)
    pwd   (顯示目前工作目錄)
    $ passwd  (更改密碼)
    $ su   (從現在登入帳號轉改換為系統管理者權限, 須輸入管理者帳號)
    $ exit  (離開系統管理者權限回到原本登入帳號權限)
    $ free -h (檢查記憶體剩下多少)
    $ swapon -s (檢查 swap 虛擬記憶體交換空間大小配置)
    sudo nano /etc/dphys-swapfile (編輯 swap 設定檔, 調整 CONF_SWAPSIZE 參數)
    $ sudo service dphys-swapfile restart (重新起始 swap 交換空間配置服務)
    $ df -h (檢查 SD 卡剩餘多少空間)
    $ du -sh (檢查目前資料夾下的檔案與子目錄總大小)
  27. 使用者管理 :
    $ sudo useradd tony  (新增使用者帳號 tony)
    $ sudo userdel tony   (刪除帳號為 tony 的使用者)
    $ sudo usermod -d /var/www/html/tony tony  (更改帳號 tony 的預設目錄)
  28. Apache+MySQL 伺服器
    sudo apt-get install apache2  (安裝 Apache2 網頁伺服器)
    sudo apt-get install php5 libapache2-mod-php5  (安裝 PHP5 語言解譯引擎)
    $ sudo /etc/init.d/apache2 restart  (重啟 Apache 伺服器)
    sudo service apache2 restart  (重啟 Apache 伺服器)
    $ sudo apt-get install mysql-server mysql-client php5-mysql (安裝 MySQL 伺服器)
    $ sudo apt-get install php5-mcrypt  (安裝  PHP5 安全性模組)
    mysql -u root -p  (以 root 帳號進入 MySQL 命令列, 須輸入密碼)
    systemctl status mysql.service  (顯示 MySQL 服務之狀態 Active/Failed)
    sudo service mysql restart  (重啟 MySQL 伺服器)
    $ use TABLE_NAME  (進入資料表, 可下達 SQL 指令)
    $ exit   (跳出 MySQL 命令列) 
  29. VNC 伺服器
    $ sudo apt-get install tightvncserver   (安裝 VNC 伺服器)
    $ sudo tightvncserver  (啟動與設定 VNC 伺服器)
    $ vncserver :1 (執行 VNC 伺服器)
    vncserver :1 -geometry 1366x768 -depth 16 -pixelformat rgb565 (指定解析度與彩色)
    $ sudo vncserver -kill :1 (結束)
    $ vncpasswd  (修改連線密碼)
    $ service vncserver restart (重新啟動 VNC 伺服器)
  30. GCC :
    gcc -o helloworld helloworld.c  (將 helloworld.c 編譯成 helloworld)
  31. Crontab :
    $ crontab -e (編輯 crontab)
    crontab -l (顯示 crontab)
    crontab -r (刪除 crontab)
    crontab -i (刪除 crontab 前提示)
    sudo cat /var/log/cron.log  (查看 crontab 執行記錄檔)
    sudo nano /etc/rsyslog.conf  (編輯系統紀錄設定檔, 拿掉 cron.* 前之 # 即啟用 cron 紀錄)
    sudo /etc/init.d/rsyslog restart  (重啟系統紀錄設定檔, cron 紀錄設定生效)
  32. 查詢 Debian 版本 :
    cat /etc/debian_version
  33. 查詢螢幕解析度 : 
    tvservice -s    
  34. 查詢 CPU 溫度 :
    $ vcgencmd measure_temp     
  35. 查詢 CPU 頻率 :
    vcgencmd measure_clock arm   
  36. 套件管理 (使用 Debian 套件管理器 dpkg) :
    $ dpkg -i package_file   (安裝套件檔案)
    dpkg --list    (列出目前已安裝之套件)
    dpkg -r package_name   (移除名稱為 package_name 之套件)
    dpkg -P package_name   (移除名稱為 package_name 之套件與配置文件)
    sudo apt-get --purge remove package_name    (刪除套件)
    dpkg  --print-architecture   (顯示作業系統運行之 CPU 架構, 例如 arm64)
    sudo dpkg --add-architecture amd64   (新增 CPU 架構 amd64)
    sudo dpkg --remove-architecture amd64  (移除 CPU 架構 amd64)

從 MobaXterm 進入 X 視窗不是用 startx, 要下 :

$ lxsession&

第五章、 Linux 常用網路指令 (鳥哥)
# GNU / Linux 各種壓縮與解壓縮指令
# Linux / UNIX: Delete a file

2016-03-27 補充 :

為了少敲些字, 密碼我都改成跟帳號一樣 pi. (ak)

沒有留言 :