我很擅长使用 bash 脚本编写,而且我正在学习正则表达式和一些 sed 用法。学习 awk 是否仍然值得,因为那里有所有替代方案。意见?
作为迁移脚本的一部分,我必须 chmod 和 chown 数十万个文件。每个命令大约需要一个半小时才能完成。我意识到这两个操作可以同时运行,从而减少了运行时间,我通过在 shell 中测试证实了这一点。
我知道使用“&”将命令推入后台的技巧,但我需要确保在继续执行脚本的其余部分之前完成两个进程。
谢谢
我使用运行的 bash 脚本
/usr/bin/ssh -f -N -T -L8888:127.0.0.1:3306 serveradmin@34.324.234.23
Run Code Online (Sandbox Code Playgroud)
但是,当我运行 bash 脚本时,它会等待.. 我看到连接出现但脚本没有退出.. 就像它在等待 SSH 进程完成一样,因为当我手动杀死它时,bash 脚本完成为好。
任何想法如何解决这个问题?
更新: 我已经编写了这个脚本..cron 进程是一个变成僵尸的进程.. 实际的脚本运行得很好,抱歉,使用 ps -auxf 我得到:
root 597 0.0 0.7 2372 912 ? Ss Jul12 0:00 cron
root 2595 0.0 0.8 2552 1064 ? S 02:09 0:00 \_ CRON
1001 2597 0.0 0.0 0 0 ? Zs 02:09 0:00 \_ [sh] <defunct>
1001 2603 0.0 0.0 0 0 ? Z 02:09 0:00 \_ [cron] <defunct>
Run Code Online (Sandbox Code Playgroud)
当我杀死 ssh 时,不复存在的人消失了..为什么他们会不复存在?
我有一个脚本,它将 (scp) .war 文件复制到 tomcat 的 webapps 和 .war 文件提取,在 ubuntu 系统上的 webapps 目录下创建一个文件夹。我的脚本的下一行是重新启动 tomcat,它在 .war 被提取之前立即执行,这会导致问题
是否有可能让它在执行脚本的下一行之前等待几秒/分钟。该脚本是普通的 ubuntu 命令。
我正在尝试从脚本中取消设置所有环境变量。该脚本运行良好,但如果我运行 env 它仍然显示所有变量集。
如果我从 CLI 运行命令,它会起作用并且变量未设置。
unset `env | awk -F= '/^\w/ {print $1}' | xargs`
Run Code Online (Sandbox Code Playgroud)
知道如何从脚本运行它吗?
另外,知道如何从脚本中获取 /etc/profile 吗?这也行不通。
我需要设置名称相同但路径不同的变量,具体取决于我的用户需要的实例。
稍后编辑:
好的,我最终得到了这个(不是很优雅,但无论如何)解决方案:
. script
Run Code Online (Sandbox Code Playgroud)
其中包含:
unset `env | awk -F= '/^\w/ {print $1}'|egrep -v "HOSTNAME|TERM|SHELL|HISTSIZE|SSH_CLIENT|SSH_TTY|USER|LS_COLORS|KDEDIR|MAIL|PATH|INPUTRC|PWD|LANG|HISTIGNORE|SSH_ASKPASS|TEST|SHLVL|HOME|LD_ASSUME_KERNEL|LOGNAME|SSH_CONNECTION|LESSOPEN|HISTTIMEFORMAT|G_BROKEN_FILENAMES|_"|xargs`
source env_variable_file
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个大目录需要从本地服务器同步到我的 Web 服务器,我正在寻找最有效的方法来做到这一点。该目录包含 14k 个目录中的 113k 个文件,大小约为 5GB。每个文件/目录的本地到远程比较即使很少更改也需要几个小时才能完成。
本机为Win7,远程为CentOS 5.5
我当前的 setep 正在使用与 WinSCP 的脚本同步,但如上所述,通过单个 SCP 连接在目录中爬行需要几个小时。需要更新的文件数量应该比整体集少得多,我想找到一种在本地编写同步脚本的方法,记录哪些文件已更改,然后只访问 Web 服务器以上传新文件.
有什么建议?
我需要定期清空一个文本文件而不删除它(我知道它有多少行)。
我试过这个:
创建了一个执行以下脚本的 cron
other lines from the script here
sed '1,14d' file.txt>file.txt
Run Code Online (Sandbox Code Playgroud)
如果我从终端运行它,它工作正常,但是当我运行 cron 时,它会执行第一部分(“此处脚本中的其他行”部分),但它不会清空文件。
注意:该文件有 777 个权限,所以我认为它与权限无关。
我想要一个(bash)脚本来重命名多个远程 linux 服务器上的文件,知道怎么做吗?谢谢。
首先,我不能使用组策略,因为我们的团队不管理它。该公司是一家庞大的 FTSE 公司,拥有一支涵盖您能想到的 IT 各个方面的团队。
我们的团队需要一种通过批处理文件或使用 Windows Installer 和 .msi 文件的脚本远程安装程序的方法。
到目前为止,我已经成功地使用 psexec 安装了 Java(见下文)
psexec \\pcname -u *username* -p *password* -i
msiexec.exe /a "msilocation\install.msi"
Run Code Online (Sandbox Code Playgroud)
这没有任何问题。但是我想要一些比这更自动化的东西。
但是,我想要做的是能够从我的机器运行脚本或批处理文件,以便在列出的所有远程工作站上安装 msi。我很确定你可以在批处理文件中列出工作站,但我可能错了。
老实说,如果我必须在脚本或批处理文件中进行修复,我不会大惊小怪。我只是不能使用组策略等。
首先,我希望我没有重复另一个帖子。如果是这样,我会立即删除。
我浏览了这个网站上的许多问题/答案,试图找到我应该使用的脚本语言,我看到很多人推荐 PowerShell,特别是如果他们像我一样完全不熟悉脚本。
我工作的环境大约有 150 台机器,装有从 XP 到 Server 2008 R2 Enterprise 的各种 MS 操作系统。
我看到我的一位同事在他所做的很多事情中都使用 CSSCRIPT……我们给他起了个绰号——脚本之王。他把代码牢记在心,以至于他甚至不知道关于我如何学习它或哪种脚本语言最适合我的任何好的建议。
正如我所说,我正在查看 PowerShell,因为其他帖子似乎暗示了这一点。我不想在所有 150 台机器上都安装一些东西来让我的脚本工作。我希望能够远程运行一个脚本来移动文件、更新文件、收集有关机器及其注册表和其他各种信息的情报等。
在这两种脚本语言或任何其他脚本语言之间(因为我确实对此完全陌生并想学习),有什么建议?
如果这是重复的,我深表歉意。我找不到与这个特定问题有关的任何内容,但有很多非常密切相关。