调试Ruby脚本以更改Ubuntu上的时区配置文件

调试Ruby脚本以更改Ubuntu上的时区配置文件,ruby,ubuntu,timezone,Ruby,Ubuntu,Timezone,上面是我为更改ubuntu上的时区配置而编写的ruby脚本。它确实正确地更改了配置文件,但是,脚本的输出并不像预期的那样 假设时区的默认值为America/Toronto。 现在运行命令jruby change_timezone.rb Asia/chungqing,然后输出如下: require 'java' if ARGV.length == 0 puts "Usage: jruby change_timezone.rb America/Toronto" exit end old_

上面是我为更改ubuntu上的时区配置而编写的ruby脚本。它确实正确地更改了配置文件,但是,脚本的输出并不像预期的那样

假设时区的默认值为America/Toronto。 现在运行命令jruby change_timezone.rb Asia/chungqing,然后输出如下:

require 'java'

if ARGV.length == 0
  puts "Usage: jruby change_timezone.rb America/Toronto"
  exit
end

old_zone = File.read("../../../etc/timezone")
puts old_zone
time1 = Time.now
puts "Current Time:"+time1.localtime.to_s

new_zone = ARGV[0]
open('../../../etc/timezone','w') do |f|
  f.puts new_zone.to_s
  f.close
end

new_zone = File.read("../../../etc/timezone")
puts new_zone
time2 = Time.now
puts "Updated Time:"+time2.localtime.to_s
继续使用jruby change_timezone.rb european/Amsterdam命令,最后执行以下操作:

America/Toronto
Current Time:Thu Jul 07 14:43:23 -0400 2011
Asia/Chongqing
Updated Time:Thu Jul 07 14:43:23 -0400 2011 (My Note: +0800 expected!!!)
Asia/Chongqing
Current Time:Fri Jul 08 03:18:25 +0800 2011 (My Note: it actually got updated from last run!!!)
Europe/Amsterdam
Updated Time:Fri Jul 08 03:18:25 +0800 2011 (My Note: +0200 expected!!!)
继续使用jruby change_timezone.rb Europe/Amsterdam(注意:实际上重复了最后一个命令),并获得以下信息:

America/Toronto
Current Time:Thu Jul 07 14:43:23 -0400 2011
Asia/Chongqing
Updated Time:Thu Jul 07 14:43:23 -0400 2011 (My Note: +0800 expected!!!)
Asia/Chongqing
Current Time:Fri Jul 08 03:18:25 +0800 2011 (My Note: it actually got updated from last run!!!)
Europe/Amsterdam
Updated Time:Fri Jul 08 03:18:25 +0800 2011 (My Note: +0200 expected!!!)

有人能找出它为什么不能按预期工作吗?

对于几乎所有Linux发行版,“/etc/localtime”是指向正确时区文件的符号链接,或者是有效时区文件。文件“/etc/timezone”由“dpkg reconfigure tzdata”命令用于在“/etc/localtime”生成(或符号链接)有效的时区文件。最后,时区文件位于“/usr/share/zoneinfo/”。总之,在文件“/etc/timezone”更改后,我认为您错过了最后一步。这是为了运行:


$dpkg重新配置tzdata

因此,如果重新启动脚本,您将获得正确的时区?是的。这就是让我困惑的地方:-(我理解你的意思。正如你从输出中看到的,时间确实发生了变化。奇怪的是,它在第一次运行时没有显示变化。我想知道为什么它没有达到预期。