如果參數太多,導致 xargs: argument line too long
時,可以使用 -n
參數來限制 argument 數量。
限制每次執行指令時,最多 100 個 arguments:
cat thousand-files | xargs -n 100 rm -fr
軟體開發、伺服器和生活瑣事
如果參數太多,導致 xargs: argument line too long
時,可以使用 -n
參數來限制 argument 數量。
限制每次執行指令時,最多 100 個 arguments:
cat thousand-files | xargs -n 100 rm -fr
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 '@-'
在多台電腦間共用目錄,samba 應該算是最方便的工具了。
安裝 samba:
sudo apt install samba
安裝完成後,可以在 /etc/samba
找到設定檔 smb.conf
。
開啟設定檔,加入目錄共用設定:
[folderName] comment = Samba on Ubuntu path = /home/zeroplex/files/ read only = no browsable = yes
foldername
:在網路上要顯示的名稱,照上面的設定為 \\192.168.0.xxx\folderName
path
:主機上要共用的目錄路徑whois 查詢有時會查不到資料:
$ whois mail.google.com No match for "MAIL.GOOGLE.COM".
可能是查詢時使用的 server 沒有該 domain 的資料。
這時可以直接到 IANA 的 server 查詢:
whois -h whois.iana.org mail.google.com
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