【问题标题】:Makefile task halt on error, can I continue run it?Makefile 任务因错误而停止,我可以继续运行它吗?
【发布时间】:2012-03-01 08:37:35
【问题描述】:

在我的 makefile 中有一个同步配置文件的任务

redis:
    mkdir -p /var/lib/redis
    mkdir -p /var/log/redis
    useradd --system --home-dir /var/lib/redis redis
    chown redis.redis /var/lib/redis
    chown redis.redis /var/log/redis
    cp ./scripts/redis-server.d.conf /etc/init/redis-server.conf
    cp ./scripts/redis.conf /etc/redis.conf
    restart redis

但是当我第二次运行时:

useradd --system --home-dir /var/lib/redis redis
useradd: user 'redis' already exists

如您所见,它在 useradd 上停止,我可以继续运行它吗?

【问题讨论】:

标签: bash makefile


【解决方案1】:

问题是useradd 命令返回错误代码。

您可以按照here 的说明在命令前添加破折号(实际上,我发现这是一个重复的问题):

-useradd --system --home-dir /var/lib/redis redis

或者,使该命令始终返回成功代码的解决方法是将其与true 组合如下:

useradd --system --home-dir /var/lib/redis redis || true

【讨论】:

  • 假设来自useradd 的任何错误都是因为用户已经存在,这有点尴尬。更好的解决方法是检查用户是否已经存在,如果不存在,则尝试创建它。
猜你喜欢
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 2019-04-07
相关资源
最近更新 更多