Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 返回用户已记录的小时和分钟数的Bash脚本_Linux_Bash_Ubuntu - Fatal编程技术网

Linux 返回用户已记录的小时和分钟数的Bash脚本

Linux 返回用户已记录的小时和分钟数的Bash脚本,linux,bash,ubuntu,Linux,Bash,Ubuntu,我希望我的脚本返回用户在过去7天内登录服务器的小时数和分钟数。我已经写了下面的脚本。但它总是在0小时0分钟内返回。 如果您能帮助我修改,以实现我的目标,我们将不胜感激 #!/bin/sh export LANG=C grep "$(date +"%Y-%m-%d")" /var/log/syslog awk -v d1="$(date --date="-5 min" "+%b %_d %H:%M")&qu

我希望我的脚本返回用户在过去7天内登录服务器的小时数和分钟数。我已经写了下面的脚本。但它总是在0小时0分钟内返回。 如果您能帮助我修改,以实现我的目标,我们将不胜感激

#!/bin/sh

export LANG=C
grep "$(date +"%Y-%m-%d")" /var/log/syslog
awk -v d1="$(date --date="-5 min" "+%b %_d %H:%M")" -v d2="$(date "+%b %_d %H:%M")" '$0 > d1 && $0 < d2 || $0 ~ d2' /var/log/syslog
date_string=$(
who |
sort -k3M -k4n |
awk '{if ($1 ~ user) {print $3, $4, $5;exit}}' user="$1"
)
diff_seconds_between_date_and_now=$(
(
    $(date +%s) - $(date -d "$date_string" +%s)
)
)
printf "Last $(id -u)"
printf " Since "
printf "%s %s\n" "$((diff_seconds_between_date_and_now/604800)) day(s)"
printf "   "
printf "%s %s\n" "$((diff_seconds_between_date_and_now/3600)) hours" "$((diff_seconds_between_date_and_now%3600/60)) minutes"
#/垃圾箱/垃圾箱
导出语言=C
grep“$(日期+%Y-%m-%d”)”/var/log/syslog
awk-v d1=“$(日期--date=“-5分钟”+%b%\u d%H:%M”)”-v d2=“$(日期”+%b%\u d%H:%M”)”“$0>d1&&$0
考虑使用“last”命令:


您在没有管道或存储结果的情况下调用grep请提供一种解决方法
last -s '-7 days' username