Hen*_*nry 6 linux date time timezone
我有一台 Linux 机器,上面只有非常少的可用命令,例如/bin如下所示:
/bin# ls
ash chattr clockdiff dd dumpkmap fdflush gunzip linux32 ls mktemp mt pidof printenv rmdir setserial su tracepath umount watch
busybox chgrp cp df echo fgrep gzip linux64 lsattr more mv ping ps run-parts sh sync tracepath6 uname zcat
cat chmod cpio dmesg egrep getopt hostname ln mkdir mount netstat ping6 pwd sed sleep tar traceroute6 usleep
catv chown date dnsdomainname false grep kill login mknod mountpoint nice pipe_progress rm setarch stty touch true vi
Run Code Online (Sandbox Code Playgroud)
另外,它没有/usr/share/zoneinfo目录。
那么如何使用这些命令设置时区呢?我还需要从另一台主机远程同步时区和日期。
我尝试了TZenv 变量,但它不起作用,例如:
root@xxx:/bin# date
Wed Aug 31 12:02:41 UTC 2023
root@xxx:/bin# TZ=America/New_York date
Thu Aug 31 12:03:50 America 2023
root@xxx:/bin# date
Thu Aug 31 12:04:58 UTC 2023
Run Code Online (Sandbox Code Playgroud)
请注意,设置 TZ 后时间不会改变。
Ste*_*itt 13
如果您没有\xe2\x80\x99t 时区文件,您仍然可以通过在变量中描述来指定时区TZ(请参阅man tzset参考资料)。
最小形式是时区名称,后跟时区到 UTC 的偏移量;因此
\nTZ=CEST-2\nRun Code Online (Sandbox Code Playgroud)\n中欧夏令时或
\nTZ=EDT4\nRun Code Online (Sandbox Code Playgroud)\n东部夏令时间。
\n不同时间偏移(冬季/夏季、夏令时等)之间的转换可以通过指定两个偏移及其更改的日期来描述;man tzset以下为新西兰的例子:
TZ="NZST-12:00:00NZDT-13:00:00,M10.1.0,M3.3.0"\nRun Code Online (Sandbox Code Playgroud)\n当您确实有时区文件时,TZ应该以冒号开头来指示它们的用途:
TZ=:America/New_York\nRun Code Online (Sandbox Code Playgroud)\n
如果您可以将文件传输到其中,那么您可以将所需的时区定义从本地系统复制/usr/share/zoneinfo到/etc/localtime受限系统上。在 Alpine 容器中进行测试:
% docker run --rm -it alpine date
Fri Sep 1 07:15:13 UTC 2023
% docker run --rm -it -v /usr/share/zoneinfo/Asia/Calcutta:/etc/localtime alpine date
Fri Sep 1 12:45:17 IST 2023
Run Code Online (Sandbox Code Playgroud)
您的命令列表包括ash和busybox。IIRC Linux 上 Almquist shell 的常见版本是 dash 和 busybox sh,并且可能像 Alpine 一样,您的大多数命令只是busybox. 通过使用 Alpine 进行测试,我认为它将能够代表您的系统。
如果您拥有 root SSH 访问权限,但它受到某种限制而不允许 SFTP 和 scp,您可以尝试:
ssh limited-server 'cat > /etc/localtime' < /usr/share/zoneinfo/Some/Place
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1284 次 |
| 最近记录: |