gpt4 book ai didi

macos - crontab 在我的 Mac 上不执行 'ioreg'

转载 作者:行者123 更新时间:2023-12-03 09:23:45 27 4
gpt4 key购买 nike

我想跟踪我的 Mac 上的电池信息,所以我给 crontab 分配了一个脚本文件,但它不起作用。

#!/bin/bash
#getbattery.sh
CURRENT_CAPACITY=$(ioreg -l -n AppleSmartBattery -r | grep CurrentCapacity | awk '{print $3}')
MAX_CAPACITY=$(ioreg -l -n AppleSmartBattery -r | grep MaxCapacity | awk '{print $3}')
CHARGE=$(echo $CURRENT_CAPACITY $MAX_CAPACITY | awk '{printf ("%i", $1/$2 * 100)}')
echo "$CHARGE""% $(date) "

-

#my crontab content:
*/1 * * * * ~/getbattery.sh >> ~/batteryinfo.txt

为什么 ioreg 在 crontab 中不起作用?如果有人知道我的问题,请告诉我会发生什么。

谢谢。

最佳答案

cron 作业在非常小的环境下运行,包括非常基本的 PATH(只是/usr/bin:/bin)。但 ioreg 位于/usr/sbin 中,因此不会根据该 PATH 作为命令找到它。共有三种简单的解决方案:

  1. 在 crontab 中设置 PATH:

    PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
    */1 * * * * ~/getbattery.sh >> ~/batteryinfo.txt
  2. 在脚本中设置路径:

    #!/bin/bash
    #getbattery.sh
    PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
    CURRENT_CAPACITY=$(ioreg -l -n AppleSmartBattery -r | grep CurrentCapacity | awk '{print $3}')
    # etc...
  3. 在脚本中使用 ioreg(以及不在/bin 或/usr/bin 中的任何其他命令)的显式路径:

    #!/bin/bash
    #getbattery.sh
    CURRENT_CAPACITY=$(/usr/sbin/ioreg -l -n AppleSmartBattery -r | grep CurrentCapacity | awk '{print $3}')
    # etc...

关于macos - crontab 在我的 Mac 上不执行 'ioreg',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25622613/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com