Отладка Ruby-скрипта для изменения файла конфигурации часового пояса в Ubuntu - PullRequest
0 голосов
/ 07 июля 2011
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

Выше я написал скрипт ruby, чтобы изменить конфигурацию часового пояса в Ubuntu.Он корректно изменяет файл конфигурации, однако вывод для сценария не такой, как ожидалось.

Предположим, что значением по умолчанию для часового пояса является Америка / Торонто.Теперь запустите команду, jruby change_timezone.rb Asia / Chongqing, затем вот вывод:

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!!!)

Продолжите с командой, jruby change_timezone.rb Europe / Amsterdam, в итоге получите:

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
Current Time:Thu Jul 07 21:21:27 +0200 2011
Europe/Amsterdam
Updated Time:Thu Jul 07 21:21:27 +0200 2011

Может кто-нибудь выяснить, почему это не так?т работает как положено?

1 Ответ

0 голосов
/ 07 июля 2011

Почти для любого дистрибутива Linux '/ etc / localtime' является символической ссылкой на правильный файл часового пояса или является эффективным файлом часового пояса.Файл '/ etc / timezone' используется командой 'dpkg-reconfigure tzdata' для генерации (или символической ссылки) файла эффективного часового пояса в / etc / localtimeНаконец, файлы часовых поясов находятся в / usr / share / zoneinfo /.В итоге я думаю, что вы пропустите один последний шаг после изменения файла / etc / timezone.Это для запуска:

$ dpkg-переконфигурировать tzdata

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...