GNU/Linux >> Linux の 問題 >  >> Linux

現在のタイムゾーンを「Region/City」として取得

Stéphane Chazelas によるこのコメントで、彼は次のように述べています。

<ブロック引用>

timedatectl systemd です timedated を照会するもの dbus 以上 と timedated タイムゾーンの名前を導出します (Europe/London など) ) readlink() を実行することによって /etc/localtime で . /etc/localtime の場合 がシンボリック リンクでない場合、タイムゾーン定義ファイルにその情報が含まれていないため、その名前を派生させることはできません。

これと tonioc のコメントに基づいて、次のようにまとめました。

#!/bin/bash
set -euo pipefail

if filename=$(readlink /etc/localtime); then
    # /etc/localtime is a symlink as expected
    timezone=${filename#*zoneinfo/}
    if [[ $timezone = "$filename" || ! $timezone =~ ^[^/]+/[^/]+$ ]]; then
        # not pointing to expected location or not Region/City
        >&2 echo "$filename points to an unexpected location"
        exit 1
    fi
    echo "$timezone"
else  # compare files by contents
    # https://stackoverflow.com/questions/12521114/getting-the-canonical-time-zone-name-in-shell-script#comment88637393_12523283
    find /usr/share/zoneinfo -type f ! -regex ".*/Etc/.*" -exec \
        cmp -s {} /etc/localtime \; -print | sed -e '[email protected]*/zoneinfo/@@' | head -n1
fi

タイムゾーンについては、地理位置情報を使用できます:

$ curl https://ipapi.co/timezone
America/Chicago

または:

$ curl http://ip-api.com/line?fields=timezone
America/Chicago

http://wiki.archlinux.org/index.php/time#Time_zone


Linux
  1. /dev/shm/ と /tmp/ はいつ使用する必要がありますか?

  2. Linux の日付を UTC/GMT +1 に変更するには?

  3. 現在のモニター解像度またはモニター名 (LVDS、VGA1 など) を取得する方法

  1. Linux の /etc/init.d と /etc/rcX.d ディレクトリの間の接続は何ですか?

  2. 自動化されたスクリプトを使用してタイムゾーンを設定する

  3. /etc/hosts と /etc/resolv.conf の違い

  1. Linuxでタイムゾーン設定を変更するにはどうすればよいですか?

  2. CentOS / RHEL :削除された /etc/passwd ファイルから回復する方法

  3. /etc/issues をセットアップして eth0 の IP アドレスを表示する方法