我试图更新我拥有的服务器yum update,但由于服务器内存不足而中止。我杀死了一些不需要的进程并运行yum-complete-transaction,但似乎陷入了疯狂的循环。
[root@syd-01 ~]# uname -a
Linux syd-01.*******.net 2.6.32-358.23.2.el6.x86_64 #1 SMP Wed Oct 16 18:37:12 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
如果有任何有关如何解决此问题的建议,我将不胜感激。下面是循环的摘录(实际上要长得多):
--> Processing Dependency: libtinfo.so.5()(64bit) for package: util-linux-ng-2.17.2-12.14.el6_5.x86_64
---> Package net-tools.x86_64 0:1.60-110.el6_2 will be erased
--> Processing Dependency: net-tools for package: initscripts-9.03.40-2.el6.centos.4.x86_64
---> Package nss-softokn-freebl.x86_64 0:3.14.3-3.el6_4 will be erased
--> Processing Dependency: libfreebl3.so()(64bit) for package: glibc-2.12-1.132.el6_5.4.x86_64
--> Processing Dependency: libfreebl3.so()(64bit) for package: p11-kit-trust-0.18.5-2.el6_5.2.x86_64
--> Processing Dependency: libfreebl3.so()(64bit) for package: p11-kit-0.18.5-2.el6_5.2.x86_64
--> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3)(64bit) for …Run Code Online (Sandbox Code Playgroud) 是否有可能打开到远程服务器的 sftp 连接并在 shell 的同一行中执行 sftp 命令。
像这样的东西:
sftp user@example.com && put /tmp/test.txt /tmp/
Run Code Online (Sandbox Code Playgroud)
其中 put 是 sftp 命令。
我的想法是将文件从本地服务器从 bash 脚本放到远程服务器,其中远程服务器上只允许使用 sftp。
我有一个 JSON 文件,我需要更新一个特定的值。
{
"Comment": "comment",
"test": {
"enabled": true
},
"enabled": true,
"otherStuff": blah,
"otherStuff2": blah,
"otherStuff3": blah,
}
Run Code Online (Sandbox Code Playgroud)
我想将第二个“启用”的值更改为 false。使用 JQ Parser,我可以使用jq '.enabled '轻松检索它,但我不确定操作 JSON 的最佳方法是什么。
JSON 是我从 API 获得的响应,将来可能会发生变化,我不能依赖之前/之后的行或值。
我创建了一个在 Ubuntu 实例重新启动时运行的脚本。
crontab -e
Run Code Online (Sandbox Code Playgroud)
然后将其添加到脚本中:
@reboot /home/ubuntu/startup.sh
Run Code Online (Sandbox Code Playgroud)
脚本如下所示:
#!/bin/bash
tmux new-session -d -s my_server
tmux send-keys -t my_server:0 ". /home/ubuntu/venv/bin/activate" C-m
tmux send-keys -t my_server:0 "cd ~/canonicaliser_api" C-m
tmux send-keys -t my_server:0 "git checkout new-schema" C-m
tmux send-keys -t my_server:0 "git pull" C-m
tmux send-keys -t my_server:0 "cd ~/canonicaliser_api/canonicaliser/workers" C-m
tmux send-keys -t my_server:0 "python person_worker.py" C-m
Run Code Online (Sandbox Code Playgroud)
重新启动后,我执行 atmux attach以查看结果。
$ . /home/ubuntu/venv/bin/activate
cd ~/canonicaliser_api
(venv)$ (venv)$ git checkout new-schema
git pull
cd ~/canonicaliser_api/canonicaliser/workers
python person_worker.py
Already …Run Code Online (Sandbox Code Playgroud) 我想编写一个由我的开发构建服务器执行的脚本,该脚本将在构建和运行新容器之前删除任何“类似”的 docker 容器。
下面是我需要的 bash 脚本的伪代码
var name = $1
var number_of_results = # of containers returned from $(docker ps -a | grep "$name")
if(number_of_result > 0)
docker rm -f $(docker ps -a | grep "$name")
Run Code Online (Sandbox Code Playgroud) 我想弄清楚如何删除旧的日志文件,我使用的是 Centos 6.5,在我的系统中/var/log我看到了这些旧的日志文件
messages
messages-20150802
messages-20150802
Run Code Online (Sandbox Code Playgroud)
/var/log/httpd目录中也一样
access_log
access_log-20150802
access_log-20150809
access_log-20150816
access_log-20150823
Run Code Online (Sandbox Code Playgroud)
我需要删除以数值结尾的旧文件,但保留一次主要文件。我可以用什么命令来做到这一点。
提前致谢
我注意到 /tmp 中有很多空文件,它们的名称类似于“/tmp/tmp.tMIHx17730”。我运行审计规则,我发现 mktemp 正在创建它,这不是很有帮助。
如何找出哪个脚本调用 mktemp 来创建这些文件?我可以使用 auditd 捕获父进程 ID/命令行吗?
更新:我相信我有父进程 ID (ppid=17729),但脚本很快退出,我找不到脚本。我也可以设置 auditd 来获取父进程命令行吗?
更新 2:这是我如何设置 auditd 以显示写入 tmp 的内容:
auditctl -w /tmp -k tmpfiles
Run Code Online (Sandbox Code Playgroud)
然后:
ausearch -k tmpfiles|grep "tmp."
Run Code Online (Sandbox Code Playgroud)
然后我选择一个文件然后我做
ausearch -k tmpfiles -f /tmp/tmp.tMIHx17730
Run Code Online (Sandbox Code Playgroud)
这向我展示了创建文件和父进程 pid 的进程。我需要设置某种进程启动侦听器来捕获该 pid 的最新进程
我在 Centos 7.2 上。昨天我已经将 bash 更新到了 bash-4.2.46-19.el7.x86_64 版本,现在登录时我得到了这个:
-bash: /usr/share/bashdb/bashdb-main.inc: 没有那个文件或目录
-bash:警告:无法启动调试器;调试模式已禁用
当然我可以安装 bashdb 但我不想调试。在我进行更新之前,此问题不存在。似乎调试是全局激活的。我还没有配置调试(检查 .bashrc 和 /etc/bashrc)。
还没有找到摆脱这个的解决方案。我能做什么?
我希望我的 bash 脚本能够检测是否已经存在具有特定名称的 AWS RDS 实例。
这是我尝试过的:
#!/usr/bin/env bash
DBINSTANCEIDENTIFIER=greatdb
EXISTINGINSTANCE=$(aws rds describe-db-instances \
--db-instance-identifier="$DBINSTANCEIDENTIFIER" \
--输出文本\
)
我希望得到一个空列表,或者结果为零 - 但我收到一条错误消息:
调用 DescribeDBInstances 操作时发生错误 (DBInstanceNotFound):未找到 DBInstance greatdb。
有谁知道如何在没有错误消息的情况下正确找出实例是否存在?
我在 bash 变量 ( ) 中有一个域名$TARGET,并且我想以可靠的A方式在 bash 脚本中获取它的 IPv4(记录)地址(我还想获取 IPv6AAAA记录(如果存在))。
即 bash/unix 命令将: (i) 打印 DNS 解析的 IP 地址(并且仅是 IP 地址) (ii) 如果没有找到该域的 DNS 记录,则不向 stdout 打印任何内容(或非零退出) (iii) 让我选择索取A或AAAA记录。
host "$TARGET"打印出很多人类可读的内容,但我不愿意解析它们。
dig +short看起来很有希望,但在某些情况下,它还会打印我不理解或不关心的其他警告消息。
$ dig +short -t A "$TARGET"
;; Warning: Client COOKIE mismatch
1.2.3.4
Run Code Online (Sandbox Code Playgroud)
Debian 测试/书呆子。Bash v5.2(通过 apt 安装)