【问题标题】:Bash Script that works with Jenkins to move into a specific directory and remove the oldest folder in that directory与 Jenkins 一起使用以移动到特定目录并删除该目录中最旧的文件夹的 Bash 脚本
【发布时间】:2015-12-23 05:41:48
【问题描述】:

我有一个作为 Jenkins 用户 ssh 进入的 devbox,正如标题所说,我想运行一个 bash 脚本,该脚本将移动到特定目录并删除最旧的目录。我知道具体目录的位置。

例如,

ssh 服务器 [移动/查找/任何东西到 home/deploy 并在 deploy 中找到最旧的目录并删除它以及其中的所有内容]

理想情况下,这是单线。不确定如何在 sshing 作为 Jenkins 任务的一部分时运行多行。我读了一些关于它们的 Stack Overflow 帖子,但不明白。特别是“这里的文件”。

文件结构类似于 home/deploy,并且在 deploy 目录内有 3 个文件夹:oldest、new 和 latest。它应该选择最旧的(因为它的创建日期,并且 rm -rf 它)

我知道这个任务会删除最旧的目录:

rm -R $(ls -lt | grep '^d' | tail -1  | tr " " "\n" | tail -1)

有什么方法可以调整上面的代码来删除我知道的目录中的目录?

【问题讨论】:

    标签: bash jenkins


    【解决方案1】:

    您可以将脚本传递给 ssh。将以下脚本另存为

    #!/bin/bash
    cd ~/deploy
    rm -R $( ls -td */ | tail -n 1 )
    

    delete_oldest.sh 并将其传递给 ssh,如下所示

    ssh server -your-arguments-here < delete_oldest.sh
    

    编辑:

    如果你想把脚本放在远程机器上,首先你可以 将脚本从本地机器复制到远程机器到您的 像这样使用 scp 的主文件夹:

    scp delete_oldest.sh your_user_name@remotemachine:~
    

    然后你可以做类似的事情:

    ssh your_user_name@remotemachine './delete_oldest.sh'
    

    './delete_oldest.sh' 假定您当前位于远程计算机上的主文件夹中,当您使用 ssh 时会出现这种情况,因为默认登录文件夹将始终是主文件夹。

    请在继续之前使用测试文件夹进行尝试。

    【讨论】:

    • 我的论点是什么?我只是将 bash 脚本保存在主目录中,还是在任何地方都可以? @sjsam
    • 参数是常用的 ssh 参数。您可能没有任何参数,没关系。您可以将脚本保存在任何地方并提供完整路径,如/path/to/delete_oldest.sh
    • 我将它放在部署文件夹中。如果我错了,请纠正我,但我会运行: ssh server
    • 脚本应该存在于您提供 ssh 的计算机中。如果您在 machine1 上发出 ssh 命令,则该脚本也应该存在于 machine1 中。
    • 我想把它放在我的远程机器上,我通过 SSH 连接的机器,而不是我通过 SSH 连接的机器。那有意义吗? =/ @sjsam
    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 2013-12-28
    • 2014-09-03
    • 2022-10-23
    相关资源
    最近更新 更多