前言
我們可以運用 flock 幫助我們管理任務的流程。
在執行多腳本的時候,這個功能非常的方便。
flock
flock -s /tmp/lock1.lock sleep 3
flock -s /tmp/lock1.lock echo "task 2"
flock -x /tmp/lock1.lock echo "task 3"
說明
指定說明
- -s : 代表此檔案為 shared lock,可以同時被多程式執行。所以擁有此 lock 的程式都可以馬上執行
- -x:代表指定的檔案為 exclusive lock,只能同時被一個程式執行。
程式碼說明
上面的程式碼中,表示我們透過 /tmp/lock1.lock 這個檔案來做為我們任務的管理器
(其中不論是路徑、檔名、副檔名我們都可以任意更改,只需指定一個檔案即可。)
- flock -s /tmp/lock1.lock sleep 3 : 執行第一個任務 sleep 3
- flock -s /tmp/lock1.lock echo “task 2” : 執行第二個任務 echo “task 2”
- 此指令也擁有 lock1.lock,由於是 shared lock (-s),所以可以直接執行
- flock -x /tmp/lock1.lock echo “task 3”: 執行第三個任務 echo “task 3”
- 此指令也擁有 lock1.lock,由於是 exclusive lock (-x),所以一次只能被執行一支 (需等待前一支程式執行完才能執行)
結果
我們執行上述的腳本後,發現結果為:
1. sleep 3、echo task2 同時執行
2. 等待 sleep 的 3 秒後,echo task3 才被執行。
也就是說,我們可以完全確保什麼指令可以先被執行,
什麼指令需要等到前一個任務的 (lock) 被釋放後,才能夠被執行。
Reference
⭐Linux 指令 相關文章整理 (此表最後手動整理時間:2022/10/5) ⭐: |
---|
⭐Linux 終端機 (terminal) 操作、shell 篇⭐: |
1. | (terminal指令 常用總整理)【Linux】linux/ubuntu/mac 基礎終端機 (terminal) 指令 & 基礎知識總整理,初學者/新手 必須知道的基礎指令 & 基礎知識大全(持續更新) |
2. | (terminal快速鍵 常用總整理)【Linux】linux/ubuntu/mac 基礎終端機 (terminal) 快速鍵/小技巧,初學者/新手 必須知道的一些實用功能!(持續更新) |
3. | 【Linux】好用的終端機管理工具 – tmux (類似 screen 的進階版) |
4. | 【Linux】終端機小技巧 – default start screen treminal,無縫接軌任何電腦,繼續使用同一個 terminal 殘留下來的訊息 |
5. | 【Linux】z,zim 套件中最快搜尋指定資料夾的套件,以後不用 cd 之後再慢慢 tab 尋找路徑了! |
6. | 【Linux】zim (+zsh) – 也許是目前最快也最實用的 linux terminal 與套件,直接把終端機開發效率飆升到最高 |
7. | 【Linux】終端機小技巧 – sudo 補上快速完成 (終端機指令小祕技) |
8. | 【Windows】也許是 windows 上最貼近 linux 的 terminal,安裝 fluent terminal,在 windows 上使用 zsh (oh-my-zsh) |
9. | 【Linux】透過 screen 讓 terminal 內的工作內容可以無縫接軌到任何電腦 (儲存當下 terminal 內容),並可以繼續操作 |
⭐Linux 基礎指令篇⭐: |
1. | 【嗡嗡精選】ubuntu 個人自用小抄 (last update: 2022/6/24) |
2. | 【Linux】(作業系統基礎知識) 簡單理解「相對路徑」與「絕對路徑」,程式設計 初學者/新手 必須知道的路徑知識總整理 |
3. | 【Linux】linux ubuntu 中利用 mkdir 建立資料夾 相關參數總整理 (必定建立資料夾、修改資料夾權限 777) |
4. | 【Linux】linux ubuntu 使用 terminal (終端機) 關機 shutdown、重新開機 reboot 的方法 |
5. | 【Linux】小知識 source 與 bash 執行 script 的差別 |
6. | 【Linux】在 ubuntu terminal 中 執行關機、重新開機指令 (shutdown, reboot) |
7. | 【Linux】在 terminal 中 設定 ssh alias (bashrc, zshrc 中使用 alias) |
8. | 【Linux】Ubuntu 上安裝軟體的方式筆記 apt, apt-get, dpkg 總整理 |
9. | 【Linux】在 Linux 中查看 cpu, gpu 資訊 |
⭐Linux 搜尋相關⭐: |
1. | 【Linux 搜尋相關 #1】在 terminal 的各種搜尋大全, ack, grep, find 個人經常使用情境整理 |
2. | 【Linux 搜尋相關 #2】linux ubuntu 使用 grep, awk, xargs 尋找需要的資料,快速濾出/篩選 結果欄位 所需要的資訊 (內附圖文說明) filter column |
3. | 【Linux 搜尋相關 #3】linux, ubuntu 使用 ps, grep, pgrep 找到 執行中程式的相關資訊 與 pid (ps aux, ps -ef) |
|