2019/11/26
file descriptor redirection 與 process substitution
是這樣的這邊有個需求想要把 stdout 與 stderr 分別導向至不同的檔案中
這個很簡單
透過 bash 中 > 即可達成
再來 stdout 的 fd 是 1, 而 stderr 的 fd 是 2
組合起來就是
```
command 1> out.log 2> err.log
```
而預設導向的 fd 是 1
於是乎又可以寫成
```
command > out.log 2> err.log
```
接下來變化來了
需求是:
除了把 stdout 與 stderr 分別導向至不同的檔案中, 也要將 stdout 與 stderr 導入至同一個檔案, 並且印出順序要一致
這就會需要用到 process substitution
```
>(list)
# 或
<(list)
```
指令 list 會以非同步方式執行
加上利用 tee 同時導入至檔案與印在螢幕上
組合技如下:
```
command > >(tee stdout.log >> all.log) 2> >(tee stderr.log >> all.log)
```
2019/10/22
修改 root logic volume 注意事項
一班我們如果要重新命名 lv 只要
```
$ lvrename
```
就可以了
但是如果要重新命名 root 也就是啟動系統那顆的話就要小心了
如果缺了步驟, 很有可能你的系統就開不了機了
除了使用 lvrename 去改名外, 還必須執行三個步驟
1. 將 /boot/grub/grub.cfg 下所有相關路徑都改正確
2. 執行 update-grub2 去重新產生開機設定
```
$ update-grub2
```
3. 修改 fstab 路徑
2019/10/04
備份樹莓派 microSD 卡
最近在樹莓派上面跑 docker 但常常每幾個星期就會出現 kernel 或是 library 毀損的訊息
導致如果重開機後 docker service 就無法正常啟動 實在是很困擾我
所以就想說有沒有辦法備份整個安裝好的SD卡 毀損時直接還原就好
2019/08/01
Honeywell HPA-720WTW 開箱
雖然本身不太會過敏, 但是一直以來都很想嘗試用用看空氣清淨機
剛好家裡剛裝潢好, 木工粉塵飛揚與怕櫃子貼皮用的膠水會釋放出甲醛
趁機就開始準備想要入手的空氣清淨機牌子與型號
想到前同事買了 Honeywell, 所以就注意在 HPA-100APTW, HPA-200APTW, HPA-710WTW, HPA-720WTW 這四台上面做參考
當然去特X屋的時候, 也有被推薦 Dyson 的 TP-04 與 HP-04, 但使用情境與價格的因素, 這次就先不考慮囉
做功課做了許久, 在考慮了適用坪數與外型, 最後是決定買 HPA-720WTW
近期可能是因為有新產品要發表了, 所以我最終入手價比原價 18900 或折扣價 17900 還便宜很多!!
2019/03/22
如何修改 visudo 的預設編輯器
由於 ubuntu 預設 visudo 的編輯器是 nano
對於習慣使用 vim 來編輯的使用者來說根本像是天書一樣, 完全不會用
要怎麼修改預設的編輯器呢
如下:
```
$ sudo update-alternatives --config editor
```
```
There are 4 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /bin/nano 40 auto mode
1 /bin/ed -100 manual mode
2 /bin/nano 40 manual mode
3 /usr/bin/vim.basic 30 manual mode
4 /usr/bin/vim.tiny 15 manual mode
Press
```
輸入 3 就會是 vim 了
設定 Ubuntu 18 的 hostname
在 Ubuntu 18 中, 設定 hostname 不像是以前可以直接下 hostname 指令
而是要利用 hostnamectl 去做設定, 如下
```
$ sudo hostnamectl set-hostname new-name
```
2019/03/14
LVM 增加新硬碟以增加容量
最近在幹大事, 之前掛載硬碟一下子就不夠用了
幸好當初是用 LVM 方式創建的
所以只要加入一顆硬碟並且加入到 Volume Group 就可以增加空間了
步驟如下:
原先可用空間剩下 9%
```shell
$ df
/dev/mapper/VG1-DATA 308583232 266262416 26576000 91% /data
```
看一下有哪些 Physical Volume
```shell
$ sudo lvmdiskscan -l
WARNING: only considering LVM devices
/dev/sda3 [ <19.00 GiB] LVM physical volume
/dev/sdb [ 300.00 GiB] LVM physical volume
1 LVM physical volume whole disks
1 LVM physical volume
```
在新硬碟建立 PV
```shell
$ sudo pvcreate /dev/sdc
```
看看是否建成功
```shell
$ sudo lvmdiskscan -l
WARNING: only considering LVM devices
/dev/sda3 [ <19.00 GiB] LVM physical volume
/dev/sdb [ 300.00 GiB] LVM physical volume
/dev/sdc [ 300.00 GiB] LVM physical volume
2 LVM physical volume whole disks
1 LVM physical volume
```
很好, /dev/sdc 也變成 PV 了
接下來把 /dev/sdc 加入到 Volume Group 中
```shell
# 要加入的 Volume Group 名稱為 VG1
$ sudo vgextend VG1 /dev/sdc
```
把 Logic Volume 延伸 (步驟同 增大 Ubuntu 18.04 上 root lvm volume )
```shell
# 延伸 LV
$ sudo lvextend -l +100%FREE /dev/VG1/DATA
# 調整 ext4 大小
$ sudo resize2fs -p /dev/mapper/VG1-DATA
```
可用空間變成 54% 了
```shell
$ df
/dev/mapper/VG1-DATA 618214560 266267944 323619528 46% /data
```
可以繼續幹大事了
從 -flat.vmdk 還原為 .vmdk
由於一時手殘, 不小心把 VM 的檔案全刪了, 幸好 VM 是開啟的狀態, 所以 -flat.vmdk 沒有被刪除
那麼該怎麼還原呢
首先先查看你的 -flat.vmdk 檔案
```
$ ls -al
-rw------- 1 root root 322122547200 Mar 14 05:37 vm-1-flat.vmdk
-rw------- 1 root root 21474836480 Mar 14 05:37 vm-flat.vmdk
```
只剩下兩個 -flat.vmdk
先記下來 這兩個檔案的大小 322122547200 跟 21474836480
實際上還原的指令是:
```
$ vmkfstools -c 322122547200 -a pvscsi -d thin restore-1.vmdk
$ vmkfstools -c 21474836480 -a pvscsi -d thin restore.vmdk
```
其中 -a 的參數是你創建的 SCSI Controller
我是 VMware Paravirtual 則填 pvscsi
也有可能是 LSI Logic 則填 lsilogic
vmkfstools 指令執行完後會產生四個新檔案 ls 看一下
```
-rw------- 1 root root 322122547200 Mar 14 05:37 vm-1-flat.vmdk
-rw------- 1 root root 21474836480 Mar 14 05:37 vm-flat.vmdk
-rw------- 1 root root 322122547200 Mar 14 05:37 restore-1-flat.vmdk
-rw------- 1 root root 21474836480 Mar 14 05:37 restore-flat.vmdk
-rw------- 1 root root 478 Mar 14 05:37 restore-1.vmdk
-rw------- 1 root root 528 Mar 14 05:37 restore.vmdk
```
接下來重點就是 把產生的 restore-1-flat.vmdk 跟 restore-flat.vmdk 刪除
並且重新命名 vm-1-flat.vmdk 跟 vm-flat.vmdk 為 restore-1-flat.vmdk 跟 restore-flat.vmdk
這樣磁碟裡的資料才會回來
那麼該怎麼還原呢
首先先查看你的 -flat.vmdk 檔案
```
$ ls -al
-rw------- 1 root root 322122547200 Mar 14 05:37 vm-1-flat.vmdk
-rw------- 1 root root 21474836480 Mar 14 05:37 vm-flat.vmdk
```
只剩下兩個 -flat.vmdk
先記下來 這兩個檔案的大小 322122547200 跟 21474836480
實際上還原的指令是:
```
$ vmkfstools -c 322122547200 -a pvscsi -d thin restore-1.vmdk
$ vmkfstools -c 21474836480 -a pvscsi -d thin restore.vmdk
```
其中 -a 的參數是你創建的 SCSI Controller
我是 VMware Paravirtual 則填 pvscsi
也有可能是 LSI Logic 則填 lsilogic
vmkfstools 指令執行完後會產生四個新檔案 ls 看一下
```
-rw------- 1 root root 322122547200 Mar 14 05:37 vm-1-flat.vmdk
-rw------- 1 root root 21474836480 Mar 14 05:37 vm-flat.vmdk
-rw------- 1 root root 322122547200 Mar 14 05:37 restore-1-flat.vmdk
-rw------- 1 root root 21474836480 Mar 14 05:37 restore-flat.vmdk
-rw------- 1 root root 478 Mar 14 05:37 restore-1.vmdk
-rw------- 1 root root 528 Mar 14 05:37 restore.vmdk
```
接下來重點就是 把產生的 restore-1-flat.vmdk 跟 restore-flat.vmdk 刪除
並且重新命名 vm-1-flat.vmdk 跟 vm-flat.vmdk 為 restore-1-flat.vmdk 跟 restore-flat.vmdk
這樣磁碟裡的資料才會回來
2019/01/29
LVM 建置指令
每次要建lvm都忘記指令,來記錄一下
```shell
# 先建置分割區, 並且 type 設為8e
# 其實我不太了解如果都是用整顆硬碟的空間, 那麼要不要做這個步驟的差別是什麼(效能?對齊?其他?)
# fdisk <device Point>
$ fdisk /dev/xvdb
# 建立 Physical Volume
# pvcreate <device Partition>
$ pvcreate /dev/xvdb1
# 建立 Volume Group
# vgcreate <vg Name> <device Partition>
$ vgcreate VG1 /dev/xvdb1
# 建立 Logical Volume
# lvcreate -l 100%FREE -n <lv Name> <vg Name>
$ lvcreate -l 100%FREE -n DATA VG1
# 格式化
# mkfs.ext4 -L <label> /dev/<vg Name>/<lv Name>
$ mkfs.ext4 -L DATA /dev/VG1/DATA
# 開機自動掛載
echo "LABEL=DATA /data ext4 defaults 0 0" >> /etc/fstab
```
重灌作業系統後 使用 mdadm 重組你的 raid
前些時間因為升級 ubuntu 版本失敗導致必需重灌
然後就出現以下問題了
當初建好的 RAID5 消失了, 新的 os 不認識它所以顯示成三顆硬碟
這該怎麼辦呢?
其實不用擔心, 由於我們當時是用 mdadm 建置的, mdadm 有方法可以再把它們組起來
```shell
$ mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1
```
平時資料還是要多多備份啊
訂閱:
文章 (Atom)