make用户登录时脚本只运行一个实例

时间:2016-02-07 22:27:28

标签: linux bash linuxmint

当我登录Linux Mint安装时,我正在尝试不断运行一些bash脚本。将它们添加到启动应用程序似乎不起作用,因为我检查时它们并不总是运行。我也不想创建脚本的多个实例,因此将它们添加到我的.bashrc或cronjob似乎已经出来了。还有其他建议吗?

示例脚本(当我的电池电量低于30%时警告我):

#!/bin/bash
while :
do
#echo "starting script: $(date)">>battery_log

percent=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "percentage" | grep -o '[0-9]\+')
cpu_temp=$(cat /sys/class/thermal/thermal_zone0/temp | awk '{print "deg C: "$1/1000}')
discharge=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state")
is_discharging=$(echo $discharge | grep -c discharging)

#echo "$percent"
#echo "$cpu_temp"



#echo hello | grep -c he
#if [echo $discharge | grep -c discharging -gt 0 ]; then
    #echo "success"
#fi

#echo "$discharge"
if [ "$is_discharging" -gt 0 ]; then 
    echo "---discharging: $(date)">>battery_log
    if [ "$percent" -lt  30 ]; then 
        #exec 2>>/home/king/Scripts/battery_log.txt
        export DISPLAY=:0
        #export XAUTHORITY=~otheruser/.Xauthority
        #kdialog --msgbox "$(upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage") \n cpu temp:      $(cat /sys/class/thermal/thermal_zone0/temp | awk '{print "deg C: "$1/1000}')"
        kdialog --title "Low Battery" --passivepopup "$(upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage") \n cpu temp:      $(cat /sys/class/thermal/thermal_zone0/temp | awk '{print "deg C: "$1/1000}')" 20
    fi
fi

sleep 300 #5min
done

1 个答案:

答案 0 :(得分:0)

在运行脚本之前,请检查脚本的实例是否已在运行。

pgrep script.sh

如果它已经在运行,那么你可以退出,否则继续脚本。

pgrep script.sh && exit应该可以解决问题。