搜尋

搜尋結果

「斷捨離工作坊」吸引澳門市民參加 倡減負情緒提升生活品質
文化創意
陳康妮・2023-10-06

【《大灣區時報》消息】澳門斷捨離學會(Macao Declutter Association)於9月27日(星期一)在澳門新口岸區舉辦了一場主題為「客廳斷捨離工作坊」的活動,吸引多位澳門市民參加。活動旨在教導參加者如何利用斷捨離的理念和方法,整理和美化自己的客廳空間,提升生活品質和幸福感。 活動由澳門斷捨離學會主席陳康妮女士(Miss Connie)親自主持,她首先介紹了斷捨離的定義和原則,並分享了她自己實踐斷捨離的經驗和收穫。她說,斷捨離不僅是一種整理收納的技巧,更是一種生活哲學和心理療法,可以幫助人們擺脫對物品的過度依賴和執著,減少負面情緒和壓力,重視內在價值和自我實現。 接著,陳主席透過互動環節分享幫助參加者明確自己對物品的需求和喜好,並學會放棄不需要的東西。陳主席表示,希望通過這次活動,讓更多的澳門市民認識和學習斷捨離的智慧,並將其應用於日常生活中,提升個人和社會的幸福感和生活質量。 澳門斷捨離學會是一個非牟利的社團組織,成立於2020年12月,旨在推廣斷捨離的理念和方法,並組織各種相關的活動和服務。目前該學會已有超過26000名會員,在Facebook上設有專頁和群組,歡迎有興趣的市民加入。該學會也在小紅書平台上註冊為社會服務組織,並接受各種形式的支持和合作。

排程執行任務 | Linux Schedule Job
科技新知
MacauYeah・2023-09-07

在Linux底下,crontab是一個最簡單建立Schedule Job的方法。大家用crontab e 就可以進入設定。 # crontab e 1 optrun.sh 其中每個星號,順序代表的是分、時、日、月、星期。上面的例子就是不論何月何日何時,只要每一分鐘就執行一次optrun.sh Singleton Job 問題是,實際情況下,你想執行程式的時間都不一定會少於1分鐘。所以你總是有機會上一個job未跑完,下一個job就開始了。為了保障自已,需要一些參考機制,去決定是否讓job開始跑。 有些情況,可能你會想用job server去做監管,但若只為單線執行的工作,起一個job server還是會增加管理上的複雜性。 最簡單的做法,就是根據不同的程式語言,使用file lock(鎖上)的機制,先上鎖,再做事。但要注意考慮有沒有出現異常情況,令你自己反鎖自己。即是你的process死了,但不懂自己解鎖,這樣以後你也不能再執行了。 在Linux Bash Shell下,就有一個很簡單的做法,就是使用flock指令。用它的最大好處,就是從OS層面下,去鎖上。只要process結束了,不論正常還是不正常結束,都會自動解鎖。 以下例子就是在執行optrun.sh前,先要取得tmprun.lockfile的鎖。如果沒法取鎖,就自動放棄執行後面的指令。 flock n tmprun.lockfile optrun.sh # crontab e 1 flock n tmprun.lockfile optrun.sh Timeout 引入singleton的概念後,其實會引發另一個問題。因為異常的情況,還有機會是不生不死,process hang。所以我們還需要設定一個最大的執行時間,讓你的process在異常的情況下,被強行清走。 例如,ping指令在linux預設是永遠不會自動停止的,可以模擬process hang的情況。如果我們想定時從外部收走ping process,就可以使用timeout指令。以下指令就是2分鐘後殺指ping process。 # in file optrun.sh timeout 2m ping localhost # to check process id, you could use # gt; ps aux grep ping # you will see two different id for ping and timeout 配合errorcode使用,你可能還會在想在timeout時送出一個email通知自已。 # in file optrun.sh timeout 2m ping localhost exitCode=$ if $exitCode eq 124 ; then echo quot;timeoutquot; # enter email alert with timeout elif $exitCode gt 0 ; then echo quot;exit with errorquot; # enter email alert with timeout else echo quot;exit normalquot; fi 配合docker使用,你可能需要考慮signal怎樣傳遞。 在筆者測試的環境中,似乎SIGTERM會被擋,也有可能是SIGTERM太強,它只把前景的docker container run收走,但其內的ping process還在docker daemon中行走。所以最後改用SIGINT,讓docker container run可以好好地把SIGINT傳入其內。 # It seems that docker captured the SIGTERM. Send SIGINT instead # in file optrun.sh timeout signal=SIGINT 10s docker container run rm pingtest c 20 exitCode=$ if $exitCode eq 124 ; then echo quot;timeoutquot; # enter email alert with timeout elif $exitCode gt 0 ; then echo quot;exit with errorquot; # enter email alert with timeout else echo quot;exit normalquot; fi Full demo, github repo cronjobWithDocker