我从developers.google.com/gmail/actions/getting-started中获取了一些示例,并将它们从me@gmail.com发送到me@gmail.com.
我通过www.google.com/webmasters/markup-tester/验证了该来源,并且它正确识别了快速操作.
我使用邮件客户端来嵌入正确的html语法...在收到gmail后我用"显示原始版本"验证了邮件客户端没有弄乱原始html语法.
Gmail使用spf身份验证,该身份验证通过下拉用户界面中"mailed-by:gmail.com"的存在进行验证.
尽管如此,快速行动无法显示......我甚至重复了谷歌日历中的电子邮件的语法,这显示了一个快速行动...仍然没有快速行动......
developers.google.com/gmail/actions/testing-your-schema
发件人和收件人是同一帐户的所有电子邮件都会忽略注册要求,并可用于自我测试.
自我测试从未成功过.如何测试快速操作?
根据Spring 的文档,我添加了一个关闭钩子:
SpringApplication app = new SpringApplication(App.class);
DefaultProfileUtil.addDefaultProfile(app);
appContext = app.run(args);
appContext.registerShutdownHook();
Run Code Online (Sandbox Code Playgroud)
但是,@PreDestroy如果应用程序在启动后进行编辑,则不会调用该方法kill。
import org.springframework.stereotype.Service;
import javax.annotation.PreDestroy;
import javax.annotation.PostConstruct;
@Service
public class Processor {
public Processor() {
...
}
@PostConstruct
public void init() {
System.err.println("processor started");
}
//not called reliably
@PreDestroy
public void shutdown() {
System.err.println("starting shutdown");
try {Thread.sleep(1000*10);} catch (InterruptedException e) {e.printStackTrace();}
System.err.println("shutdown completed properly");
}
}
Run Code Online (Sandbox Code Playgroud)
我所看到的只是processor started...
processor started
^C
Run Code Online (Sandbox Code Playgroud)
如果我等待至少 30 秒让 spring 完成启动,然后执行kill该过程,那么@PreDestroy带注释的函数就会被调用。
processor …Run Code Online (Sandbox Code Playgroud) $ ssh root@123.123.123.123
123.123.123.123# pkill -f "stalled process name"; commands_to_restart; some_more_commands;
many many lines of output demonstrating success
123.123.123.123# exit;
Run Code Online (Sandbox Code Playgroud)
一切正常
$ ssh root@123.123.123.123 "pkill -f "\""stalled process name"\"";"\
> "commands_to_restart; some_more_commands;";
Run Code Online (Sandbox Code Playgroud)
没有输出,什么都不做。
$ ssh root@123.123.123.123 "echo "\""pkill -f "\"\\\"\""stalled process name"\"\\\"\""; "\
> "commands_to_restart; some_more_commands;"\"";";
pkill -f "stalled process name"; commands_to_restart; some_more_commands;
Run Code Online (Sandbox Code Playgroud)
所以......报价转义的两个阶段按预期工作......
如何获得单层引号转义以使用 ssh/bash?由于引用在两层中完美运行,我觉得它与引用的关系不大,而与ssh终端处理的某些方面有关。然而,据我所知,这些命令只对标准输出进行简单和常规的 IO 操作,没有输入。