簡體   English   中英

crontab在我的Mac上不執行'ioreg'

[英]crontab doesn't execute 'ioreg' on my mac

我想在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. 在腳本中設置PATH:

     #!/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... 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM