如何在snap安裝時執行我們的hook指令碼

2021-07-26 03:46:06 字數 1965 閱讀 7696

對於有些snap應用來說,我們很希望在snap安裝時能夠執行我們的一段指令碼來做一些我們想要做的事,比如建立乙個資料夾等.那麼我們如何能得到這個事件呢?在我們的先前的文章"如何為我們的ubuntu core應用進行設定"中,我們已經展示了如何設定我們的snap應用.在那裡面的configure指令碼在設定時會被呼叫.事實上,它在安裝時也會被自動呼叫.下面,我們以如下的例子來說明:

在上面的例子中,我們的configure指令碼如下:

#!/bin/sh

echo "this is called during the installation!"

exit 1

這是乙個非常簡單的指令碼程式.在我們的安裝過程中,它返回的值是"1",表明它是失敗的.那麼這個應用將不被成功安裝:

error: cannot perform the following tasks:

- run configure hook of "hello-install" snap if present (this is called during the installation!)

name version rev developer notes

classic 16.04 17 canonical devmode

core 16.04.1 716 canonical -

grovepi-server 1.0 x1 devmode

packageproxy 0.1 3 ogra -

pi2 16.04-0.17 29 canonical -

pi2-kernel 4.4.0-1030-3 22 canonical -

snapweb 0.21.2 25 canonical -

顯然通過上面的展示,helloworld-install沒有被安裝到我們的系統中去.

如果我們把configure指令碼修改為:

#!/bin/sh

echo "this is called during the installation!"

exit 0

這個指令碼的返回值為"0",表明它的安裝是成功的.

hello-install 1.0 installed

name version rev developer notes

classic 16.04 17 canonical devmode

core 16.04.1 716 canonical -

grovepi-server 1.0 x1 devmode

hello-install 1.0 x1 -

packageproxy 0.1 3 ogra -

pi2 16.04-0.17 29 canonical -

pi2-kernel 4.4.0-1030-3 22 canonical -

snapweb 0.21.2 25 canonical -

我們可以在系統的/var/log/syslog中找到這個指令碼執行時的輸出:

顯然指令碼在安裝時有被正常執行.我們可以通過執行這樣乙個hook來對我們的應用做一些初始化,從而為接下來的應用的執行鋪好基礎.

如何在程序程序終止時執行函式

通過linux系統呼叫來完成這個操作,atexit 和on exit atexit 函式原型 include int atexit void function void 示例 include include include include static void my handler void in...

如何在Linux終端同時執行多個Linux命令

在一行中執行兩個或多個命令可以節省大量時間,並在linux中提高效率。在linux中,有三種方法可以在一行中執行多個命令 使用 符號執行多條命令 其中最簡單的是分號 使用方式如下 cmd1 cmd2 cmd3cmd1將首先執行,不管cmd1執行成功還是出現錯誤,cmd2都會在它之後執行,當cmd2命...

如何在Linux環境下實現定時執行PHP的計畫任務

實踐操作如下 1 工具 putty.exe 2 伺服器環境 ubuntu linux系統 thinkphp 3.1.3 php5.6 mysql 4 然後,在專案根目錄下建立cron.php,如下 url timeout 60 data array header array ch curl init...