---
# System prepended metadata

title: Linux 教學

---

# Linux 教學

＃　Virtual box
[Virualbox 教學](https://ithelp.ithome.com.tw/articles/10203924) 
## class 1 linux基本指令
### sudo passwd root
```
#設定root密碼
```
### sudo su
```
#進入su使用者
```
### ifconfig
```bash=
網路卡名稱
硬體位址MAC
inet addr
inet6 addr
RX TX
```
### iwconfig
```bash=
#查看wifi網卡
```
### sudo apt-get update
```bash=
#更新套件清單
```

### sudo apt-get upgrade
```bash=
#針對更新表 去更新套件
```

### ls 
```bash=
l # 列出檔案 , 並顯示是否為資料夾
ls -a # 查看所有檔案包含影藏檔案
ls -la # 查看所有檔案與資訊
ll # 查看所有檔案與資訊, 並顯示是否為資料夾
```
### mkdir
```bash=
mkdir classA #創建資料夾
```

### pwd
```bash=
pwd #查看目前完整路徑
```

### find
```bash=
find . -name filename #搜尋 檔案
find classA #搜尋資料夾
```

### cd
```bash=
cd classA #前往資料夾
cd .. #前往上一層目錄
. #當下目錄
```

### nano 
```bash=
nano class1.text
ctrl + o #存
ctrl + x #離開
ctrl + k #剪下單行
alt + 6 #複製單行
ctrl + 6 #反白模式
ctrl + u #貼上
ctrl + w #搜尋
```

### sudo apt-get install vim
```bash=
#安裝 套件
```

### vim 
```bash=
vim class1.text
a 或i # 進入編輯模式
ESC #跳出編輯模式
:wq #不是編輯狀態下 , 寫入並離開
dd #跳出編輯模式時刪除整行
v #反白模式
yy #複製整行
y #複製
p #貼上
shift + /(就是打問號 <?>) #?關鍵字 搜尋 

```

### cp filename 
```bash=
cp filename ../某資料夾 #複製檔案到上一層的某資料夾
cp filename 某資料夾/#複製檔案到下一層的某資料夾
```

### rm filename
```bash=
rm filename #刪除檔案
rm -r filename #刪除資料夾
```

### mv filename
```bash=
mv filename ../某資料夾
mv filename 某資料夾/
```


### chmod rwx 421 user group other
777 = alluser can read write 和執行
r = 4
w = 2
x = 1

3組rwx 分別為user group other
所是全開是777

```bash=
chmod 777 class2.text
```

## class2 壓縮備份排程

### 查看所有disk
```
sudo fdisk -l
```
### 將sd卡格式化（若未切磁碟請查fdisk 磁碟切割）
```
sudo mkfs -t ext4 /dev/sda2
```
### 掛載磁碟
```
mkdir mntsd32
mount -t ext4 /dev/sda2 mntsd32/
df -h 查看
```
### 卸載磁碟
```
umount mntsd32
```
### 將磁碟複製到另一個磁碟
```
sudo dd if=/dev/mmcblk0 of=/dev/sda
```
### 將磁碟打包成img檔 , 並壓縮
```
sudo dd if=/dev/sda | gzip > raspi4_201907_tensorflow.img.gz
```

### 將img 還原到disk
```
dd if=/tmp/raspbian.img of=/dev/mmcblk0 bs=4M 
```
### 目錄壓成rar 並設定密碼
```
rar a -p1234 kk.rar kk
-m5 為最大壓縮程度 , 0為不壓縮只打包 , 範圍0-5
```
### 解壓縮rar
```
mkdir dd
rar x -p1234 kk.rar dd
```

### 壓縮tar.gz
```
tar zcvf file_name.tar.gz dir_name
```
### 解壓縮tar.gz
```
tar zxvf file_name.tar.gz
```
### 使用bash進入virtualenv與離開
```
cd ~/KKKKK/VMpython3/
source ./bin/activate
deactivate
```
### 查看排程
```
crontab -l
```
### 建立bash檔
```
cd ~/KKKKK/VMpython3/
source ./bin/activate
cd ~/test/kk
python aaa.py
deactivate
```
### python測試程式
```
import os
import datetime
import json
import cv2

date_time = datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")
print(date_time)
```
### crontab 參數
```
@reboot	每次重新開機之後，執行一次。
@yearly	每年執行一次
@annually 每年執行一次
@monthly 每月執行一次
@weekly	每週執行一次
@daily	每天執行一次
@hourly	每小時執行一次
------------------------------
> MIN HOUR DOM MON DOW CMD
MIN  0-59
HOUR 0-23
DOM  1-31
MON  1-12
DOW  0-6
CMD  你要做的事
------------------------------
> MIN HOUR DOM MON DOW CMD
* 在不同參數填入代表該參數的每個範圍都執行
, 可於多個時間點執行
- 選出參數範圍
/n n是number的意思 可用於每幾小時或其他時間
example : 
*/30 9-18 * * 1-5 /home/kevin/test/kk/cak.sh
我要每個禮拜一到五的9點到18點每30分鐘執行一次cak.sh
```
### 範例 1
```
@hourly /home/kevin/test/kk/cak.sh
```
### 編輯crontab
```
sudo nano /etc/crontab
或是
sudo crontab -e
```
### example
```
MAILTO="qrewytty@gmail.com"
*/30 * * * 1-5 /home/kevin/test/kk/cak.sh
```