V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
imherer
V2EX  ›  程序员

Linux crontab 权限问题

  •  
  •   imherer · Dec 1, 2017 · 4467 views
    This topic created in 3074 days ago, the information mentioned may be changed or developed.

    服务器用的 AWS 的 EC2,现在想实现一个功能就是用 crontab 定时执行 pm2 命令,安装 pm2 的时候用了 sudo

    我将要执行的 pm2 命令写成 shell 脚本,直接用 crontab 执行 shell 脚本,但是在执行的时候提示pm2: command not found,直接执行这个 shell 脚本是没问题的

    对 Linux 比较陌生,这个应该是执行 crontab 和我安装的 pm2 命令不是同一个用户? 这种应该怎么处理呢?

    13 replies    2017-12-03 00:12:37 +08:00
    mentalkiller
        2
    mentalkiller  
       Dec 1, 2017 via iPhone
    pm2 命令需要绝对路径,如 /use/bin/pm2 xxx
    mentalkiller
        3
    mentalkiller  
       Dec 1, 2017 via iPhone
    use -> usr
    错别字抱歉
    imherer
        4
    imherer  
    OP
       Dec 1, 2017
    @mentalkiller 我试过绝对路径,因为我的 node 是用 nvm 安装的,报错:/usr/bin/env: node: No such file or directory
    surfire91
        5
    surfire91  
       Dec 1, 2017
    你确定你命令的路径对吗
    imherer
        6
    imherer  
    OP
       Dec 1, 2017
    @surfire91 对的。我用绝对路径执行过命令,没问题
    xiaoz
        7
    xiaoz  
       Dec 1, 2017 via Android
    @imherer which pm2 找出路径
    Cat73
        8
    Cat73  
       Dec 1, 2017
    因为 cron 执行的时候是不带环境变量的,因此你需要自己设置一下 PATH,然后就可以正常使用平台的代码了
    duskx
        9
    duskx  
       Dec 2, 2017 via iPhone
    前面加 source ~/.bash_profile
    daggerjames
        10
    daggerjames  
       Dec 2, 2017
    8 楼是表达 自己加 PATH
    daggerjames
        11
    daggerjames  
       Dec 2, 2017
    @daggerjames 标答
    cy18
        12
    cy18  
       Dec 2, 2017 via Android
    我比较好奇 crontab 里面怎么 sudo ?不需要输密码?
    sutra
        13
    sutra  
       Dec 3, 2017
    @cy18 可以配置 sudo 不需要密码。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2476 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 15:18 · PVG 23:18 · LAX 08:18 · JFK 11:18
    ♥ Do have faith in what you're doing.