2020年11月30日 星期一

Linux 切換 process 到背景執行

在 Linux,如果要同時跑多個指令,可以利用 nohup 將 process 放到背景執行

nohup /path/my_program &

預設執行結果存到 ./nohup.txt。


如果不想儲存執行結果

nohup /path/my_program >/dev/null &


也可以自訂儲存路徑

nohup /path/my_program >my_log.txt &


如果 standard error 也是輸出到畫面上,個別儲存的方式是

nohup /path/my_program >my.out 2>my.err & 


合併儲存的方式是 

nohup /path/my_program 2>&1 my_log.txt &


以上是 nohup 常用操作。


nohup 有個缺點是不能把背景執行切換到前景,這時就需要另一個工具:screen。 


首先,啟動 process

screen

 

接著執行你需要的指令,例如

tail -f /var/log/kernal.log


再來把 process 切換到背景執行,所要使用的是鍵盤快速鍵操作

Ctrl + A + D


你會回到執行 screen 前的 bash 環境,這時候 process 已經切換到背景執行,可以使用 ps 指令確認。 


process 切換到背景執行的好處是:可以登出,不怕斷線。


如果想要回到指令畫面,看執行結果,先找到 process ID

screen -ls

會得到類似的畫面

 There is a screen on:

        3449.pts-0.ip-10-44-204-199     (Detached)

1 Socket in /var/run/screen/S-ssm-user.

3449 就是 process ID

切換到前景執行的指令是

screen -r 3449


以上是 screen 常用操作。 

2020年10月26日 星期一

cURL 常用範例

印出 Header 和 Response

curl -i

印出 Handshake、Header 和 Response

curl -v

印出 Handshake 和 Header

curl -v -o /dev/null -s https://www.example.com/

指定域名解析成特定 IP Address

curl --resolve www.example.com:443:127.0.0.1 https://www.example.com/

設定 Header


curl -H 'User-Agent: Pingdom.com_bot_version_1.4_(http://www.pingdom.com/)' https://www.example.com/

重新導向 301 或 302 頁面

curl -L https://www.example.com/

指定 HTTP 1.0

curl --http1.0 https://www.example.com/

指定 IPv6

curl -6 https://www.example.com/

2020年7月21日 星期二

Open Folder In VSCode on macOS

問題

想在 Finder 中,點選資料夾,從快捷選單中,以 VSCode 開啟資料夾。

解決辦法

使用 Automator 自己做一個。

1. 在「啟動台」搜尋「Automator」

2. 點選「檔案」->「新增」

3. 選擇「快速動作」,點選「選擇」

4. 右側欄位「工作流程接收目前的」選擇「檔案或檔案夾」,拖拉左側選單中「工具程式」的「執行 Shell 工序指令」至右側

5. 右側欄位「傳遞輸入」選擇「作為引數使用」,指令欄位填入「"/Applications/Visual Studio Code.app/Contents/MacOS/Electron" "$@"」

6. 「檔案」->「儲存」

7. 將快速動作儲存為「Open VSCode」,點選「儲存」

8. 開啟 Finder,選擇一個資料夾,開啟快捷選單,可以在選單內看到「Open VSCode」項目

2020年5月19日 星期二

Git - Merge/Pull Request 重新 rebase

程式開始撰寫前,先從 develop branch 分支出 feature 分支
$git checkout -b feature/demo origin/develop

撰寫完程式,push commit 前,可以先合併遠端分支,確保程式同步
$git fetch --all 
$git pull --rebase origin develop

透過 GitLab 或 GitHub 網頁,發送 Merge/Pull request
$git push -u origin feature/demo

如果發送 request 後,因為某些因素,分支需要再同步一次,此時需要強制覆蓋遠端分支
$git fetch --all 
$git pull --rebase origin develop 
$git push -f origin feature/demo