我想捕获 docker 事件并在发生某些情况时执行某些操作。有很多方法可以“获取/打印事件”:
# With curl
curl --unix-socket /var/run/docker.sock http:/v1.40/events
# With nc
echo -e "GET /events HTTP/1.0\r\n" | nc -U /var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)
但是有没有办法连续监听并处理每一行/事件?例如:
while EVENT ?magic?; do
ACTION=$(echo $EVENT | jq .Action )
if [ $ACTION -eq "start" ]; then ....; fi
done
Run Code Online (Sandbox Code Playgroud)
解决方案
@Adiii 回答后,一个简短的解决方案:
#!/bin/bash
function handle {
# Check the line is a JSON line:
if [[ ${1:0:1} == "{" ]]; then
# ... You can do here anything ...
# Print: "LOG $line", "LOG" is green …Run Code Online (Sandbox Code Playgroud) 如何运行behat --init -s bugfix以在Bundle中生成Context文件?有没有办法做到这一点?我看到了,Sf2DemoBundle但我没有解决它是如何工作的.
我的文件
# /composer.json
"behat/behat": "dev-master",
"behat/mink": "dev-master",
"behat/mink-extension": "dev-master",
"behat/symfony2-extension": "dev-master",
"behat/mink-goutte-driver": "dev-master",
"behat/mink-browserkit-driver": "dev-master",
"behat/mink-selenium2-driver": "dev-master",
Run Code Online (Sandbox Code Playgroud)
# /behat.yml
default:
suites:
default:
path: %paths.base%/features
contexts: [Behat\MinkExtension\Context\MinkContext]
bugfix:
type: symfony_bundle
bundle: 'TestBugfixBundle'
contexts: ['TestBugfixBundle\Features\Context\WebContext']
extensions:
Behat\Symfony2Extension: ~
Behat\MinkExtension:
default_session: 'symfony2'
sessions:
symfony2:
symfony2: ~
Run Code Online (Sandbox Code Playgroud)
您必须将autoload参数设置为behat:
# /behat.yml
default:
autoload:
'': %paths.base%/src
Run Code Online (Sandbox Code Playgroud)