Cron表达:
# m h dom mon dow command
*/1 * * * * /home/sysadmin/sample.sh
Shell脚本内容:
#!/bin/bash
clear
Vardate=`date`
topresult=`top -n 1| grep Cpu`
# CPUStatus=$Vardate"\t"$topresult
# echo $CPUStatus >> /tmp/data.log
echo $Vardate" "$topresult >> /tmp/data.log
当我手动执行脚本时,我得到了所需的输出。这是:
Wed Sep 23 02:42:47 MDT 2015 Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
但是当cronjob执行它时,输出如下:
Wed Sep 23 02:42:47 MDT 2015
这可能是什么原因?
答案 0 :(得分:2)
使用top"批次"模式。
取代:
topresult=`top -n 1| grep Cpu`
使用:
topresult=`top -b -n 1| grep Cpu`
-b:批处理模式操作 在批量模式'中开始,这对于将输出从顶部发送到其他程序或文件非常有用。 在此模式下,top将不接受输入并在迭代之前运行 限制你使用' -n'命令行选项或直到被杀死。
答案 1 :(得分:0)
您可以使用此脚本:
def msgbox(self,hwnd,msg,thid,pid):
MB_OK = 0x0
MB_OKCXL = 0x01
MB_YESNOCXL = 0x03
MB_YESNO = 0x04
MB_HELP = 0x4000
ICON_EXLAIM=0x30
ICON_INFO = 0x40
ICON_STOP = 0x10
MB_TOPMOST=0x40000
MB_SYSTEMMODAL=0x1000
"""
HEX VALUE LINK
https://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm
"""
writeLogs = WriteLogs(
pathLog = app_config['path_logs'] +"\\"+strftime("%Y_%m_%d")+".log",
timedate = time.strftime("%m/%d/%Y %I:%M:%S %p")
)
writeLogs.appendLogA(msg)
ctypes.windll.user32.MessageBoxA(hwnd, msg+str(operatorMessage), "[Error]", MB_OK | ICON_STOP | MB_SYSTEMMODAL)