電影流水帳(2022/09/16~2022/09/30)

Karen Gillan
Karen Gillan
  • The Gray Man (IMDB, Wikipedia),台譯:灰影人。
  • Thor: Love and Thunder (IMDB, Wikipedia),台譯:雷神索爾4-愛與雷霆

The Gray Man

CIA 找被定罪的殺人犯加入 sierra 計劃,遊走於灰色地帶,幫 CIA 處理一些不能在台面上公開說的事情,所以一開始主角 Court 就被遊說加入了這個計劃。

時間過很快,匆匆數年過去,主角 Court 已經是局裡一個頂尖的人物。這次他跟 Dani 一同出任務,這次任務 Court 並不完全是依照計劃殺掉目標,目標仍然死了,但 Court 從目標的口中取得了驚人的訊息。這驚人的訊息就是目標也加入了 CIA 的 sierra 計劃,為什麼會變成目標的原因是因為他知道了 CIA 的一些事情。Court 很驚訝,他從目標給他的隨身碟開始調查,從這隨身碟他得知了 CIA 內部有高層已經在做一些非法的勾當。Court 開始進行追查,但高層得知 Court 可能已經知道,也派出了遊走在灰色地帶的洛伊德追殺 Court。接下來的故事就是精彩刺激的動作橋段跟解謎,最後 Court 殺了洛伊德之後,跟 CIA 達成協議,救出了恩人的女兒。

Thor: Love and Thunder

後面幾部漫威的作品感覺有點力道不夠,又或者是我已經麻木,這集我覺得沒有第三集來的好看。

雷神索爾跟著星際特攻隊一起闖蕩,成功瘦身,然後他感覺到有某個世界有發出求救,就趕了過去。結果看到了碎裂的槌子跟另外一個雷神,那個雷神居然是珍,他驚訝了。打退敵人以後,了解了事情的原委,第一個是格爾因為喪女之痛跟得到死靈劍,所以開始殺神;第二個是珍取得碎裂的槌子後,得到了雷神的力量。索爾跟著珍回到地球,沒多久,格爾也趕到,但他打不贏眾人,就擄走阿斯嘉的孩子們。雷神索爾一行人去找眾神求救,豈料這些神見死不救,索爾他們只好改變計劃,改取得宙斯的閃電矛之後,自己去救人。

眾人找到格爾以後,才發現格爾要的是風暴毀滅者,他想打開通道去到永恆那邊,去消滅所有諸神。經過一番打鬥,索爾跟珍協力打斷了格爾的死靈劍,救出了阿斯嘉的孩子,但格爾仍打開了通往永恆之門,跟著去的雷神則是讓格爾明白,自己想要的是讓女兒復活。後來格爾讓女兒復活,請索爾好好照顧。珍則是因為癌症死去,到了英靈殿。

git-delta

git-delta 是帶有語法高亮的比對工具。

你知道的,git 預設是使用 diff,diff 沒有語法高亮,而且在比對的顯示需要一點時間習慣。

git-delta :delta

安裝

安裝蠻簡單的,提供各種作業系統的安裝方法:Installation – delta

以 Debian/Ubuntu 來說,從下載網頁下載 debian package以後,用 dpkg -i 安裝就可以。

wget https://github.com/dandavison/delta/releases/download/0.15.1/git-delta_0.15.1_amd64.deb
sudo dpkg -i git-delta_0.15.1_amd64.deb

設定

編輯 ~/.gitconfig ,加上以下設定

[core]
    pager = delta

[interactive]
    diffFilter = delta --color-only --features=interactive

[delta]
    features = decorations

[delta "interactive"]
    keep-plus-minus-markers = false

[delta "decorations"]
    commit-decoration-style = blue ol
    commit-style = raw
    file-style = omit
    hunk-header-decoration-style = blue box
    hunk-header-file-style = red
    hunk-header-line-number-style = "#067a00"
    hunk-header-style = file line-number syntax

使用

設定加好以後,在使用以下 git 指令時,就會看到比對了

  • git diff
  • git show
  • git log -p
  • git stash show -p
  • git reflog -p
  • git add -p

也可以直接拿來替代 diff 使用

delta a.txt b.txt

其他還有很多設定可以調整,可以依照自己的需求來調整:Usage – delta

結語

這種可以提升開發速度的工具,要列到建立開發環境的步驟裡,這樣在開發上可以提升效率。

定時自動重啟服務

定時自動重啟服務,第一個最先想到就是用 crontab ,執行 crontab -e 加入

30 3 * * sun /bin/systemctl restart myService

就可以在每周日的 3:30 去重新啟動 myService 這個服務。

那可不可以用 systemd 來解決呢?

How can I configure a systemd service to restart periodically? 這篇有提到 systemd 在 229 這個版本以後有一個設定:RuntimeMaxSec ,這個可以表明服務存活的時間,所以如果是寫 1d ,表示存活一天,然後依照 Restart 設定來決定服務是否重新啟動

[Service]
Restart=always
RuntimeMaxSec=1d

以上設定就表示,服務存活一天,一天後重新啟動。

但這樣的設定,無法指定時間。

若需要指定時間,就需要使用 systemd timer 來進行

首先建立一個 oneshot 的 service ,新增 /etc/systemd/system/my_program.service

[Unit]
Description=Restart service

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl try-restart myService.service

這個 service 就只重新啟動 myService.service。接著加入 timer 設定,新增 /etc/systemd/system/my_program.timer

[Unit]
Description=Do something daily

[Timer]
# OnCalendar=daily
OnCalendar=*-*-* 3:30:00
Persistent=true

[Install]
WantedBy=timers.target

新增好以後,設定啟用這個 timer

systemctl daemon-reload
systemctl enable --now my_program.timer

這樣就可以在每天的 3:30 重新啟動 myService 這個服務了。

這方法跟 crontab 相比,需要管理兩個檔案,好處是可以統一使用 systemctl 來管理,各有好處。

以上介紹了三種方法,多知道一些,未來就可以因應各種情況來做搭配使用。

參考資料

cockpit 改 port

cockpit 是 RHEL 現在主打的 web console,透過網站介面,就可以管理主機。Debian/Ubuntu/RHEL 都有把這個套件包進去。

預設在安裝以後,是不啟用的,需要使用以下指令來啟用

sudo systemctl enable cockpit.socket

port 的預設值是 9090,若需要改 Port 的話,可以透過以下指令來覆寫之前的設定

sudo systemctl edit cockpit.socket

編輯以後,輸入以下內容

[Socket]
ListenStream=
ListenStream=PORT_NUMBER

把 PORT_NUMBER 改為想要的 port 就可以。

修改完畢以後,用以下指令重新載入跟啟動

sudo systemctl daemon-reload
sudo systemctl restart cockpit.socket

RHEL8修復磁碟

Red Hat Enterprise Linux (RHEL) 7, 8, 9 的方法都一樣。

  1. 拿 RHEL 安裝光碟開機
  2. 開機選單進入 Troubleshooting
  3. 進入 Rescue a Red Hat Enterprise Linux System
  4. 進入終端機

有終端機就好辦事了。

Software RAID 就用 mdadm --assemble --scan ,這主要是用 RAID 工具去掃描磁碟並重組 RAID 。執行完,要用 cat /proc/mdstat 檢查看看。

LVM 就用 lvm vgchange -ay 去尋找並啟用 LVM。啟用成功以後,可以再檢查 LVM 相關設定看看 (/etc/lvm) 以及 Kernel 的開機參數 cat /proc/cmdline

先用 lsblk 或是 df -h 看看目前的磁碟跟掛載的分割區,通常無法掛載或是掛載成唯讀時,都表示可能有問題,這時候要用適當的修復指令去修復。

各種檔案系統的修復指令

  • ext2/ext3/ext4: e2fsck -fvy /dev/sdX
  • xfs: xfs_repair /dev/sdX
  • ReiserFS: reiserfsck /dev/sdX
  • Btrfs: btrfsck /dev/sdX
  • vfat: fsck.vfat /dev/sdX

修復好,可以掛載以後,要再把分割區掛載起來,檢查一下裡面的設定,例如 /etc/fstab ,/etc/lvm 等等的。

大致上是這樣,關於修復這部份,我覺得蠻吃經驗的,也需要對 Linux 開機過程有足夠的認識,這樣會比較好解決。

最後附帶一提,Ubuntu 也是用類似的方法來處理,Ubuntu 比較好的地方是用 LiveCD 開機完以後,有桌面環境可以用,這時就可以開終端機或是磁碟分割工具來使用,甚至也可以配置網路,用瀏覽器去查找資料來處理。

nice and renice

之前在準備考試時,看到的一篇文,裏面有解說跟實驗,寫的很好。

A brief guide to priority and nice values in the linux ecosystem

以下做筆記

  1. Linux 裡每個程序有 CPU 優先權,這個值是可以使用 nice 跟 renice 調整的,主要是讓程序可以得到更多一點的 CPU 使用權。
  2. nice 指令是啟動程序時就要帶入優先權的: nice -n 10 your_prog
  3. renice 指令可以在啟動程序之後去做調整: renice -n 10 -p pid
  4. 優先權的值是依照使用者身份而定,root 可以設定 -20~19 ,一般使用者可以設定 0~19
  5. 優先權的數值愈小,表示優先權越高,Kernel 裡面的計算方式是用 “優先權的數值 + 20” 。

一般來說很少會去調整這個優先權,都是讓 Kernel 自行去調控。

禁用ctrl+alt+del

這個其實我不太會去關掉,但蠻多公司都會把這個關閉,避免不小心按到,導致伺服器重新開機。另外跟安全漏洞也有關係,有人會利用這個熱鍵來做壞事。

用 systemd 的話,蠻簡單的,ctrl+alt+del 被設定為一個 target,所以可以用 systemctl disablesystemctl mask 來關閉。

systemctl disable ctrl-alt-del.target
systemctl mask ctrl-alt-del.target

但是,systemd 有埋一個機關,就是兩秒內連續按下七次,他仍然會重新開機 ( man systemd-system.conf 可找到),所以最好也在 /etc/systemd/system.conf 裡加入以下設定

CtrlAltDelBurstAction=none

然後重新載入設定

systemctl daemon-reexec

若是在 RHEL 8 使用 GUI,還需要加一個地方,新增 /etc/dconf/db/local.d/00-disable-CAD ,內容如下

# /etc/dconf/db/local.d/00-disable-CAD 
[org/gnome/settings-daemon/plugins/media-keys]
logout=''

新增以後,執行 dconf update 來讓設定生效。

電影流水帳(2022/09/01~2022/09/15)

152555_TH029744
Mckenna Grace
  • Ghostbusters: Afterlife (IMDB, Wikipedia),台譯:魔鬼剋星未來世。
  • Space Cowboys (IMDB, Wikipedia),台譯:太空大哥大。

Ghostbusters: Afterlife

故事的起點我覺得起的不錯,之前有看到這片的訪談,主要的演員原本都不願意出來演,一方面是有位演員已經身故,一方面也是沒有好的故事題材,後來就是因為這個新的故事讓大家都願意出來,終於促成這個故事。

故事發生在一個偏僻的小鎮,Callie 的父親就是之前 Ghost buster 的成員 Spengler ,Spengler 走了,再加上 Callie 的經濟狀況不佳,只好帶著兩個孩子回去父親住的小鎮,接收父親的遺產。Spengler 本身就家徒四壁,只留下那個房子。Callie 一家人來到這小鎮以後,女兒 Phoebe 頻頻遇到怪事,他沒有跟媽媽說,反倒自己去摸索。Phoebe 是個非常關鍵的角色,透過她的調查,把周遭的人、事、物都串了起來。

Spengler 之前離開 Ghost buster ,主要是 Ghost buster 慢慢沒落,失去了名氣,再者是在這小鎮發現了 Gozer ,他在此設置機關來鎮壓,並設法捕捉。他死去的那天,就是他試著捕捉,但失敗。在 Callie 一家人來到這小鎮以後,Gozer 的法力也愈來愈強大,機關慢慢失去效力。經過幾次事件,Gozer 找到了兩個使徒,一個是 Callie,一個是 Phoebe 的老師 Gary,透過他們的幫助,Gozer 逃離了 Spengler 設下的機關。Phoebe 透過祖父留下的資料,知道了 Gozer 的事情,他不想讓祖父的努力白費,就聯絡了之前 Ghost buster 的成員,並且自己跟哥哥、哥哥的朋友,一同設下機關來對抗 Gozer。但他們對捉鬼機關不熟悉,眼看 Gozer 很快就要打贏。這時候之前 Ghost buster 的隊員跟祖父的鬼魂出現,一同對抗 Gozer ,最終封住 Ghozer。

Space Cowboys

時間一開始是 1958 年,一個原本要上太空的小組因為經費的緣故,被裁撤了,小組成員 Frank 跟 Hawk 因為這事情鬧翻,相互指責,總之,後來就解散了。

經過幾十年後,NASA 有了狀況, NASA 之前幫俄國發射一顆衛星,並且做維護,可是這顆衛星大限已到,而且沒辦法遙控處理,上面的系統正巧就是 Frank 設計的。NASA 的主事者 Bob 就是裁撤 Frank 一組人的人,因為之前裁撤的事情,Bob 跟 Frank 鬧的不愉快。但是,事情發生了也沒辦法,只好找 Frank 回來幫忙。Frank 想圓之前的夢想,就跟 Bob 談了條件,只要讓 Frank 上太空,就願意幫忙。Bob 沒辦法,只能答應。

Frank 去找了 Hawk 等人回來,開始接受身體檢查跟體能訓練,在一邊體能訓練的同時,也教授第二組人該如何維修,這是 Bob 要求的。經過一番波折以後,兩組人一同順利上了太空開始維修。Frank 跟 Hawk 卻發現這顆衛星有很大的問題。俄國人在這顆衛星上擺了彈頭,這下問題大了,一方面是誠信問題,當初找 NASA 幫忙發射,你卻擺了彈頭,另一方面是如果墜毀炸到人,這死傷恐怕很慘重。第二組人是年輕人,只想完成任務,卻出了狀況,Frank 幾個人只能幫忙擦屁股,避免讓彈頭掉到地球。所以 Hawk 犧牲自己,利用動力設備,把這彈頭往太陽推,其他人則利用剩下的設備設法平安降落。最後,剩下的人順利返回地球。

故事蠻有意思的,在處理情感的部份,有些不是很完整,所以顯得有點突兀。