亚马逊 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。突然间一切都开始正常工作了。