亚马逊 linux ec2 上的 yum 锁定问题
yum lock issue on amazon linux ec2
我在亚马逊 linux 服务器 (ami id- ami-0a887e401f7654935
) 上使用此 shell 命令,由 aws datapipeline 启动。
#!/bin/bash
sudo yum install -y amazon-linux-extras
sudo amazon-linux-extras enable python3.8
sudo yum install -y python3.8
pip3.8 install --user pipenv
echo "PATH=$HOME/.local/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
aws s3 cp s3://bucketname/datapipeline/scriptfolder/ /home/ec2-user/ --recursive
mkdir -p /home/ec2-user/input
cd /home/ec2-user/
pipenv install --ignore-pipfile
echo "installation done"
pipenv run python3 main.py
每次我 运行 几分钟后低于错误。
errorMsg : Memory : 46 M RSS (262 MB VSZ)
Started: Tue Mar 16 01:47:44 2021 - 00:01 ago
State : Running, pid: 3746
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: yum
Memory : 139 M RSS (430 MB VSZ)
Started: Tue Mar 16 01:47:44 2021 - 00:03 ago
State : Running, pid: 3746
我尝试在最后一个 echo 命令后添加此 rm -f /var/run/yum.pid
,但它给了我同样的错误。你能帮忙吗?
为 yum 获取 运行 PID,如果它是 运行,则终止 PID;
ps aux|grep yum
然后
kill -9 PID
我一直在为这个确切的问题而苦苦挣扎:
Existing lock /var/run/yum.pid: another copy is running as pid 3114. Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum
Memory : 31 M RSS (247 MB VSZ)
Started: Thu Sep 23 21:42:19 2021 - 00:02 ago
State : Running, pid: 3114
我什至在我的用户数据中添加了调试:
#!/bin/bash
echo "## var run" > /tmp/yum.out
ls -la /var/run/ >> /tmp/yum.out
echo "## contents of pid file" >> /tmp/yum.out
cat /var/run/yum.pid >> /tmp/yum.out
echo "## PS output" >> /tmp/yum.out
ps -ef >> /tmp/yum.out
...
我通过该输出发现 A> 没有 /var/run/yum.pid 文件,并且 B> 在 ps -ef 的输出中没有 pid 3114。本质上是一个幻影 pid。
通过大量的反复试验,我最终对我的用户数据进行了一次更改,为我彻底解决了这个问题。我将 /bin/bash 更改为 /bin/sh。突然间一切都开始正常工作了。
我在亚马逊 linux 服务器 (ami id- ami-0a887e401f7654935
) 上使用此 shell 命令,由 aws datapipeline 启动。
#!/bin/bash
sudo yum install -y amazon-linux-extras
sudo amazon-linux-extras enable python3.8
sudo yum install -y python3.8
pip3.8 install --user pipenv
echo "PATH=$HOME/.local/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
aws s3 cp s3://bucketname/datapipeline/scriptfolder/ /home/ec2-user/ --recursive
mkdir -p /home/ec2-user/input
cd /home/ec2-user/
pipenv install --ignore-pipfile
echo "installation done"
pipenv run python3 main.py
每次我 运行 几分钟后低于错误。
errorMsg : Memory : 46 M RSS (262 MB VSZ)
Started: Tue Mar 16 01:47:44 2021 - 00:01 ago
State : Running, pid: 3746
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: yum
Memory : 139 M RSS (430 MB VSZ)
Started: Tue Mar 16 01:47:44 2021 - 00:03 ago
State : Running, pid: 3746
我尝试在最后一个 echo 命令后添加此 rm -f /var/run/yum.pid
,但它给了我同样的错误。你能帮忙吗?
为 yum 获取 运行 PID,如果它是 运行,则终止 PID;
ps aux|grep yum
然后
kill -9 PID
我一直在为这个确切的问题而苦苦挣扎:
Existing lock /var/run/yum.pid: another copy is running as pid 3114. Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum
Memory : 31 M RSS (247 MB VSZ)
Started: Thu Sep 23 21:42:19 2021 - 00:02 ago
State : Running, pid: 3114
我什至在我的用户数据中添加了调试:
#!/bin/bash
echo "## var run" > /tmp/yum.out
ls -la /var/run/ >> /tmp/yum.out
echo "## contents of pid file" >> /tmp/yum.out
cat /var/run/yum.pid >> /tmp/yum.out
echo "## PS output" >> /tmp/yum.out
ps -ef >> /tmp/yum.out
...
我通过该输出发现 A> 没有 /var/run/yum.pid 文件,并且 B> 在 ps -ef 的输出中没有 pid 3114。本质上是一个幻影 pid。
通过大量的反复试验,我最终对我的用户数据进行了一次更改,为我彻底解决了这个问题。我将 /bin/bash 更改为 /bin/sh。突然间一切都开始正常工作了。