我在 Amazon Linux 实例上安装了 httpd 软件包,并且/etc/httpd/目录包含子目录:
会议/
conf.d/
conf.modules.d/
我注意到这些是配置目录。
它们之间有什么区别?
Amazon Linux 2
实例由 Ansible Playbook 操作,该手册一个接一个地执行多个yum
任务。
需要对下面的语法进行哪些具体更改才能使后续
yum
任务运行而不会因进程冲突而停止?
目前,yum
下面的第二个任务失败了,因为 Ansible 不知道如何处理听到前一个yum
任务尚未释放yum
lockfile
.
这yum
是调用下面的第二个任务时文件的当前错误消息:
TASK [remove any previous versions of specific stuff] ************************************************************************************************************************************
fatal: [10.1.0.232]: FAILED! => {"changed": false, "msg": "yum lockfile is held by another process"}
Run Code Online (Sandbox Code Playgroud)
两个连续的yum
任务目前写成如下:
- name: Perform yum update of all packages
yum:
name: '*'
state: latest
- name: remove any previous versions of specific stuff
yum:
name: thing1, thing2, thing3, thing4, thing5, …
Run Code Online (Sandbox Code Playgroud) 可以使用哪些特定语法从 Amazon Linux EC2 实例内的命令行返回该实例的私有 IP 地址?
到目前为止,我想出了以下几点:
# Get private IP from inside the instance by filtering inside the following:
instanceid=$(curl http://169.254.169.254/latest/meta-data/instance-id)
echo $instanceid
aws ec2 describe-instances --instance-id $instanceid --region us-west-2
Run Code Online (Sandbox Code Playgroud)
但是,如您所见,如果您自己在 EC2 实例中键入这些命令,以上 3 行会导致大量输出,手动过滤会很混乱。
有人可以建议一两行代码来简单地返回实例的私有 ip 而没有其他信息吗?
我需要使用加密强度高(认证要求)、高质量(通过行业标准随机性测试)且性能合理(见下文)的 PRNG。
最初,我认为它会在最新的 Ubuntu LTS 上运行,并计划从中读取/dev/urandom
,因为根据我的信息,从内核版本 5.18 开始,它似乎满足了所有条件。
性能方面,{ timeout --foreground 1s cat /dev/urandom; } | wc -c
在 M1 Mac(仅供参考)上运行实现了约 450MB/s 的吞吐量,并且我从 x86-64 Ubuntu 22.04.2 LTS VM 中获得了类似的结果。
读取 40kB 块的 C++ 程序实现了更高的约 1GB/秒吞吐量,但我无法在其上运行编译和运行可执行文件(尽管我假设 shell 命令和可执行文件之间的比率相似)。
然而,事实证明它将部署在虚拟机中运行的 Amazon Linux 2(内核版本 5.10)上,这意味着RNG 的算法和性能改进将无法使用。
我的问题是:
/dev/urandom
仍然满足原始要求,即:提供加密的强伪随机数,并且还通过行业标准随机性测试,吞吐量至少为 1MB/秒?我无法访问有问题的环境,但尝试使用早期内核版本的几个在线 shell 产生了不一致的结果:在几个系统(kernel 5.4和kernel 5.15/dev/random
)上,我从和获得了相同的吞吐量/dev/urandom
,根据我的理解意味着相同的质量,但在另一个系统(也是内核 5.4)上,/dev/random
被阻止并给出 0-200B/s 之间的结果(即bytes,没有前缀),表明 的/dev/urandom
质量已下降(除非我误解了某些内容)。
然而,根据 …
我正在使用亚马逊 Linux。我有一个脚本来启动和停止服务,用 bash 编写,位于
/etc/init.d/wildfly
Run Code Online (Sandbox Code Playgroud)
例如,在不同的运行级别,我有符号链接来确保脚本启动和停止
/etc/rc.d/rc3.d/S80wildfly
/etc/rc.d/rc2.d/S80wildfly
Run Code Online (Sandbox Code Playgroud)
但是我的问题是,我需要怎么做才能保证服务失败了,可以自动重启?我在 CentOS 上阅读,您可以使用指令创建一个文件(例如“wildfly.service”)
Restart=always
RestartSec=3
Run Code Online (Sandbox Code Playgroud)
Amazon Linux 上的等效指令位于何处?
在我的 crontab 中,我设置了以下 bash 函数并将其应用于我的工作。表示要在日志中添加时间戳。
adddate() {
while IFS= read -r line; do
printf '%s %s\n' "$(date)" "$line";
done
}
30 06 * * * root $binPath/zsh/test.zsh | adddate 1>>$logPath/log.csv 2>>$errorLogPath/error.txt
Run Code Online (Sandbox Code Playgroud)
但是当我看到error.txt
bash 功能不能很好地工作时。
/bin/bash: adddate: command not found
这一切的根本原因在哪里呢?
如果有人有意见,请告诉我。
谢谢
在 Amazon Linux 2 中运行的 bash 脚本试图测试文件是否存在。然后,如果它确实存在,脚本应该删除该文件。
每次脚本运行时都会抛出以下错误。需要在脚本中更改哪些内容才能使错误不再成为问题?
File "/home/username/write_hosts.sh", line 3
if [ -f /home/username/hosts ]
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
这是整个脚本:
#!/usr/bin/env bash
if [ -f /home/username/hosts ]
then
rm /home/username/hosts
fi
declare -a arr_of_tags=("this-master" "this-worker")
for i in "${arr_of_tags[@]}"
do
echo ["$i"] >> /home/username/hosts
echo "About to test ip array for $i"
declare -a arr_of_ips=$(aws ec2 describe-instances --region us-west-2 --query "Reservations[*].Instances[*].PrivateIpAddress" --filter "Name=tag:Name,Values=$i" --output=text)
for j in "${arr_of_ips[@]}"
do
echo "$j" >> /home/username/hosts
done
done
Run Code Online (Sandbox Code Playgroud)
根据@steve 的建议,我得到以下信息: …
amazon-linux ×7
amazon-ec2 ×4
aws ×3
rhel ×2
ansible ×1
apache-httpd ×1
autostart ×1
bash ×1
cron ×1
ip-address ×1
random ×1
services ×1
yum ×1
zsh ×1