J'ai besoin exacte de la même sortie que "CAT / PROC / UPTIME" DE LINUX ". P>
Par exemple, avec / proc / uptime, vous obtiendriez p>
1884371.64 38646169.12 P> blockQuote>
mais avec une alternative Mac, comme "Uptime", vous obtiendriez p>
20:25 20:26, 6 utilisateurs, moyennes de charge: 3.19 2.82 2.76 P> blockQuote>
J'en ai besoin d'être
exactement fort> comme Cat / Proc / Uptime, mais sur Mac OS X. P>
4 Réponses :
là-bas n'est tout simplement aucun répertoire "/ proc" sur le Macintosh.
sur macos, vous pouvez Faites une commande comme : p> et vous obtiendrez une réponse comme: p>
Donc, je devrais utiliser 'Cut' pour supprimer les premières lettres X, qui serait "kern.boottime: {sec ="? J'ai aussi besoin de supprimer le reste ... Je commence sur ce genre de choses.
Il y a aussi " sysctl -n kern.boottime code>", qui se débarrasse de "
kern.boottime code>" bit. La variable BOOTTIME est une structure et je ne peux pas voir un moyen facile intégré à la commande SYSCTL pour obtenir les variables dans la structure.
obtenu ... puis je viens de convertir au format lisible (ne vous rappelez pas comment): P> 1 jours 00:26:28 p>
blockQuote> p>
Puisque je n'aime pas simplement couper sur les limites dures (en cas de mise en page des modifications de sortie), j'ai opté pour les éléments suivants: tandis que ifs = '=', listre -d "," valeur clé; do Eval "boot_time_ $ clé = '$ valeur'" 2> / dev / null; fait <<< $ (SYSCTL -N -N KERN.BOOTTime | SED 'S /^.*///; S /AC.*.*$//') Code>, vous pouvez alors simplement tirer la valeur dont vous avez besoin de
boot_time_sec code> et peut le convertir avec quelque chose comme
date -jf '% s' "$ s '" $ boot_time_sec " code>
Un petit problème avec cette réponse. Votre Cut code> obtient des caractères entre des positions fixes (de 14 à 18). Cela a travaillé dans votre cas parce que votre système n'était pas debout depuis longtemps, mais pour moi cela a causé des problèmes. J'ai changé la commande
couper code> pour corriger ce petit problème.
sysctl -n kern.boottime | CUT -F4 -D '' | Cut -D ',' -F1 code>.
Si vous voulez la disponibilité dans secondes i> sur Mac, vous pouvez utiliser ts_boot = `sysctl -n kern.boottime | Cut -D "" -f4 | Cut -D "," -f1`; ts_now = `date +% s`; echo $ (($ tts_now- $ ts_boot)); code>
boottime=`sysctl -n kern.boottime | awk '{print $4}' | sed 's/,//g'` unixtime=`date +%s` timeAgo=$(($unixtime - $boottime)) uptime=`awk -v time=$timeAgo 'BEGIN { seconds = time % 60; minutes = int(time / 60 % 60); hours = int(time / 60 / 60 % 24); days = int(time / 60 / 60 / 24); printf("%.0f days, %.0f hours, %.0f minutes, %.0f seconds", days, hours, minutes, seconds); exit }'` echo $uptime Will return something like 1 Day, 20 hours, 10 minutes, 55 seconds
J'écris un script shell pour MacOS et je dois obtenir des heures de disponibilité en quelques secondes. C'est vraiment utile.
Voici ce que je fais pour obtenir les valeurs au lieu de la méthode de coupe où 5 $ est la plage de la chaîne p> exemple p> kern.boottime: { sec = 1604030189, usec = 263821 } Fri Oct 30 09:26:29 2020