我有一台带有死机笔记本电池的Powerbook ......每次我断开它的电源时,日期都会回到1969年。这会导致网络身份验证,钥匙串访问等问题。我写了一个启动执行此脚本的守护程序,以便在启动时将日期设置为更合适的位置,这非常有效。
#!/bin/bash
date 0101122014
现在我只希望它只在年份是1969年才能运行,这样如果时间正确,它将不会被取消。
就像......
#!/bin/bash
YEAR="date +%Y"
if [ $YEAR = 1969 ] ;
then date 010112002014
else exit 0
fi
我知道语法是完全关闭的,只是想知道我想做什么。在此先感谢您的帮助。
答案 0 :(得分:3)
执行此命令设置日期:
sudo ntpdate -u time.apple.com
ntpdate
将在指定的时间服务器中查询当前日期/时间,然后更新当地时间。
注意:脚本中的错误为YEAR="date +%Y"
:只是将字符串date +%Y
分配给YEAR
。但是你想执行date +%Y
并分配结果:
YEAR=$(date +%Y)
相关:
答案 1 :(得分:2)
另一种方法
#!/bin/bash
monfile="/tmp/.com.example.touchfile"
#if have OK (current) date set the file modification time
have_current_date() {
date > "$monfile"
}
#set the date from the last file modification time
have_wrong_date() {
[ -f "$monfile" ] || touch -t 201401010101 "$monfile"
eval $(stat -s "$monfile") #get the file modification time to shell variable
date -f '%s' $st_mtime #set the date to "last" file modification time
}
#main program
YEAR=$(date +%Y)
case "$YEAR" in
2014) have_current_date ;;
*) have_wrong_date ;;
esac
正在做什么
$monfile
- 将文件修改时间设置为当前时间答案 2 :(得分:1)
YEAR=$(date +%Y)
甚至:
[ $(date +%Y) = 1969 ] && date 010112002014
或者,使用if
:
if [ $(date +%Y) = 1969 ]
then date 010112002014
fi
答案 3 :(得分:1)
使用if
的简单:
if [ $(date +%Y) = 1969 ]
then date 010112002014
else exit 0
fi
答案 4 :(得分:0)
所以我得到了你的帮助和帮助的所有设置它很棒。我使用了一个脚本和一个启动守护进程来设置,保存&通过ntp设定时间。在这里他们是:)有一百万种皮肤猫的方法这就是我剥皮的方法。
继承剧本:
#!/bin/bash
#Load variables from .conf file
. /usr/share/fixes/time/time.conf
#Variables
DATE=$(date +%m%d%H%M%Y)
#Check year & set time from variable in .conf file
[ $(date +%Y) = 1969 ] && date $TIME
#Update time via ntp server
ntpdate -u $(systemsetup -getnetworktimeserver|awk '{print $4}')
#Save time to variable in .conf file
sed -i -e "s/^TIME=.*/TIME=$DATE/" /usr/share/fixes/time/time.conf
exit 0
&安培;为OSX启动守护进程.plist,每3分钟运行一次脚本:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.fix.settime</string>
<key>ProgramArguments</key>
<array>
<string>./usr/share/fixes/time/time-fix.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>180</integer>
</dict>
感谢所有帮助过的人,我真的很感激,感觉我再一次从大家那里学到了一些东西。