Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: Bash

將執行結果 pipe 給 curl

Posted on 2023 年 5 月 26 日 By 日落 在〈將執行結果 pipe 給 curl〉中有 1 則留言

curl 發送 HTTP POST 的指令大概長這樣:

curl -X POST https://my.domain/path/ \
    --data 'key=values'

如果要讓 curl 讀取 pipe 進來的資料,則改使用 @- :

echo /var/log/http/error.log | \
curl -X POST https://my.domain/path/ \
    --data '@-'
Tags:Bash, Linux

啟動 & 停止 Laravel queue worker in Bash

Posted on 2023 年 4 月 2 日2023 年 4 月 2 日 By 日落 在〈啟動 & 停止 Laravel queue worker in Bash〉中有 5 則留言

Laravel 的 queue worker 與 Horizon 需要透過 artisan queue:work 在背景執行,若可以的話,再使用 systemd 或 supervisor 來監控運作狀態。

不過 systemd 和 supervisor 都需要 root 權限來操作,說起來蠻麻煩的,所以寫了一小段 shell script 來啟動與停止,沒辦法在 worker 中斷時 restart,但可以做 graceful start & shutdown。

啟動 queue worker:

./artisan queue:work \
    --no-interaction --no-ansi >> storage/logs/queue.log 2>&1 &

# 透過 $? 來檢查指令執行是否成功
if [ $? -ne 0 ]; then
    echo "FAILED !"
else
    echo "OK"
fi

停止所有的 queue worker:

# queue:restart 會送訊號給所有的 worker 來 graceful shutdown
./artisan queue:restart --quiet --no-ansi

# 檢查是否所有的 proccess 都停止
while [ 1 ]; do
    QUERY="$(ps -ef | grep queue:work | grep -v grep)"
    if [ -z "${QUERY}" ]; then
        break
    else
        sleep 1
    fi
done
echo "OK"

Laravel Horizon 的操作相對簡單一些。

啟動 Horizon:

./artisan horizon \
    --quiet --no-interaction --no-ansi >> storage/logs/horizon.log 2>&1 &

if [ $? -ne 0 ]; then
    echo "FAILED !"
else
    echo "OK"
fi

停止 Horizon:

artisan horizon:terminate --quiet --no-interaction --no-ansi

# 檢查 proccess 是否終止
while [ 1 ]; do
	QUERY="$(ps -ef | grep horizon | grep -v grep)"
	if [ -z "${QUERY}" ]; then
		echo "OK"
	else
		sleep 1
	fi
done
Tags:Bash, Laravel, Linux

Shell Script 判斷指令執行是否成功

Posted on 2023 年 1 月 22 日2023 年 1 月 22 日 By 日落 在〈Shell Script 判斷指令執行是否成功〉中尚無留言

透過 bash 中的 $? 來讀取前一個指令的狀態 (exit code)。一般來說,正常執行的 exit code 會是 0,若有發生錯誤或其他狀況,exit code 則會是 1 – 255 之間。

正常結束的 exit code:

ls /var
echo $?
0

若發生錯誤,則有其他 exit code:

ls /not-exsit
echo $?
2

在 shell script 中用 if 判斷程式是否要繼續執行:

curl -s https://test.com/install.sh -o install.sh

if [ @? -ne 0 ]; then
    echo "download failed"
    exit
fi

# run install
Tags:Bash, Linux

在 Linux terminal 中使用英文

Posted on 2022 年 5 月 4 日2022 年 5 月 4 日 By 日落 在〈在 Linux terminal 中使用英文〉中尚無留言

現在 Linux 終端機 (teminal) 中的各種說明、操作提示都很人性的翻譯成各國語言,用起來真的很親切 …. 直到你遇到錯誤要上網查資料 XD

將以下幾個參數複製到 .bashrc 檔中,終端機就會全部以英文為主,這樣遇到錯誤訊息要上網查才不會查不到資料:

# put it in .bashrc
export LANG=C
export LANGUANGE="en_US"
Tags:Bash, Linux

Generate Random String in Bash (Linux)

Posted on 2022 年 3 月 13 日2022 年 3 月 13 日 By 日落 在〈Generate Random String in Bash (Linux)〉中尚無留言

在 StackExchange 看到不錯的解法:

tr -dc A-Za-z0-9 </dev/urandom | head -c 16

head 那邊的 16 為字串長度,假如只需要 4 個字的話就改成 4 即可。

另外,上面產生出來的英文字母有分大小寫,可以再搭配 tr 把文字全部轉小寫、或轉大寫:

echo "Hello World" | tr '[:upper:]' '[:lower:]'
Tags:Bash, Linux

文章分頁

上一頁 1 2 3 ... 6 下一頁

其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.