• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung

Hilfe @ Battery-Logger

Schoppy

Erdapfel
Registriert
29.04.14
Beiträge
2
Hallöchen meine Lieben.

Ich bin schon sehr lange fleißiger Leser dieses Forums. Bisher konnte ich meine Fragen immer durch fleißiges Lesen selber beantworten und habe daher noch keine Beiträge erstellen müssen. Ich habe daher noch sehr wenig Erfahrung was wohin gehört. Ich hoffe jedoch, dass ich mit meinem ersten für mich unlösbaren Problem hier richtig bin.

Ich möchte zwecks Studium das Batterieverhalten von Li-Ionen Akkus am Beispiel von MacBooks untersuchen. Hierzu hatte ich vor mit Hilfe einiger Automatisierungen eine Logdatei im Hintergrund erstellen zu lassen, die ich dann von Freunden zur Analyse einsammle. So weit so gut.

Ich habe auch ein Weg gefunden, wie ich mit Hilfe eines Skriptes und CronTab eine Datei erstellen lassen kann, die EIGENTLICH meinen Wünschen entspricht. Bei manueller Ausführung aus dem Terminal funktioniert auch alles wunderbar nur wenn ich das Skript dann von CronTab in festgelegten Intervallen ausführen lassen will treten Fehler auf!

Hier mal der von mir verwendete Code:
batlog.sh:
Code:
date +%s | awk 'BEGIN { ORS = " " }{print}' >> ~/Batterie/batlog.txt
ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = " " } /"CurrentCapacity"/{ print $3}' >> ~/Batterie/batlog.txt
ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = " " } /MaxCapacity/{ print $3}' >> ~/Batterie/batlog.txt
ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = " " } /CycleCount/{ print $3}' >> ~/Batterie/batlog.txt
ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = " " } /DesignCapacity/{ print $3}' >> ~/Batterie/batlog.txt
ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = " " } /ExternalConnected/ {
if($3=="Yes")print "1";
else print "0";
}' >> ~/Batterie/batlog.txt
ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = " " } /IsCharging/ {
if($3=="Yes")print "1";
else print "0";
}' >> ~/Batterie/batlog.txt
ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = " " } /FullyCharged/ {
if($3=="Yes")print "1";
else print "0";
}' >> ~/Batterie/batlog.txt
ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = " " } /Temperature/{ print $3/100}' >> ~/Batterie/batlog.txt
ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = " " } /^      "Voltage"/{ print $3}' >> ~/Batterie/batlog.txt
ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = " " } /CellVoltage/{ print $3}' >> ~/Batterie/batlog.txt
echo "" >> ~/Batterie/batlog.txt

batlog.txt:
Code:
Date CycleCount DesignCycleCount9C MaxCapacity CurrentCapacity DesignCapacitydate
1398736620 (CornTab)

1398744668 5456 5456 301 1000 6700 1 0 1 31,34 8341 (4169,4172,0,0) (Terminal)

CornTab Eintrag:
Code:
* * * * bash ~/Batterie/batlog.sh

Nun zu meiner Frage:
Wie kann es sein, dass bei ein und dem selben Skript zwei völlig unterschiedliche Ergebnisse entstehen!?
 
Zuletzt bearbeitet:

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
Du solltest bei solchen Skripten vollständige Pfadangaben machen. Cron findet in deinem Fall wahrscheinlich ioreg nicht, probier's mal mit /usr/sbin/ioreg.
Es reicht außerdem ioreg nur einmal aufzurufen:

Code:
echo -e "$(date +%s)$(/usr/sbin/ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = " " } /"CurrentCapacity"|MaxCapacity|CycleCount|DesignCapacity|ExternalConnected|IsCharging|FullyCharged|Temperature|^      "Voltage"|CellVoltage/{ print $3}'  | awk '{$8=$8/100;print}' | sed 's/Yes/1/g;s/No/0/g')\n"
 

Schoppy

Erdapfel
Registriert
29.04.14
Beiträge
2
Vielen Dank Pill,

nun funktioniert das Skript wie gewünscht und das Daten Sammeln kann beginnen. Zu meiner Entschuldigung, ich bin Maschinenbau-Student und hab mich doch recht schwer getan überhaupt bis zu diesem Punkt zu kommen.

MfG,
Schoppy