【问题标题】:ssh cronjob with while executes only 1 time带有while的ssh cronjob只执行1次
【发布时间】:2017-07-21 19:25:19
【问题描述】:

我写了一个 cronjob,它应该通过过滤器和正则表达式获取快照,然后运行一个 while 循环来删除所有快照。

cronjob 运行后,我看到只有第一个项目被删除,尽管它必须删除更多。

这是脚本:

*/5 * * * * sudo gcloud compute snapshots list --filter="creationTimestamp<$(date -d "-1 day" "+%Y-%m-%d")" --regexp "(.*my-instance-name.*)" --uri | while read SNAPSHOT_URI; do gcloud compute snapshots delete $SNAPSHOT_URI; done

我认为问题是在命令之后它询问“你想继续(Y/n)吗?”

为什么,第一个默认是 Y,但可能其他的,它会等待 Y/n,这就是它只删除第一个的原因。

谁能帮我弄清楚如何修复它,以便删除从过滤器中选择的所有快照?

【问题讨论】:

    标签: linux ssh cron google-cloud-platform


    【解决方案1】:

    使用 -q 进行完全模式删除快照而不询问 y/n 可能会有所帮助

     */5 * * * * sudo gcloud compute snapshots list --filter="creationTimestamp<$(date -d "-1 day" "+%Y-%m-%d")" --regexp "(.*my-instance-name.*)" --uri | while read SNAPSHOT_URI; do gcloud -q compute snapshots delete $SNAPSHOT_URI; done
    

    【讨论】:

    • 谢谢。我试图在最后写 -q 但它没有用。在 do gcloud 之后它工作正常。
    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多