在远程开发过程中,确保本机时间与远程机时间一致非常重要,特别是对于依赖时间戳的操作(例如 ROS 中的 TF 变换)。以下是一些同步本机与远程机时间的方法:
方法一:使用 ntpdate
同步时间
在本机上同步时间
安装 ntpdate
:
sudo apt-get install ntpdate
使用 ntpdate
同步时间:
sudo ntpdate ntp.ubuntu.com
在远程机上同步时间
安装 ntpdate
:
sudo apt-get install ntpdate
使用 ntpdate
同步时间:
sudo ntpdate ntp.ubuntu.com
方法二:使用 chrony
同步时间
chrony
是一个更现代的网络时间协议 (NTP) 实现,它比 ntpdate
更高效,更适合于系统时间同步。
在本机上安装 chrony
sudo apt-get install chrony
启动并启用 chrony
服务:
sudo systemctl start chrony
sudo systemctl enable chrony
在远程机上安装 chrony
安装 chrony
sudo apt-get install chrony
启动并启用 chrony
服务:
sudo systemctl start chrony
sudo systemctl enable chrony
方法三:手动同步时间
获取本机时间
获取本机时间:
date +"%Y-%m-%d %H:%M:%S"
记下输出的时间,例如 2024-06-27 12:34:56
。
设置远程机时间
SSH 连接到远程机:
ssh user@remote_machine
使用 date
命令设置远程机时间:
sudo date -s "2024-06-27 12:34:56"
方法四:使用 rsync
同步文件时间戳
有时可能需要同步文件时间戳而非系统时间,这时可以使用 rsync
:
安装 rsync
(如果尚未安装):
sudo apt-get install rsync
使用 rsync
同步文件时间戳:
rsync -avz --times user@remote_machine:/path/to/remote/files /path/to/local/files
总结
以上方法可以确保本机和远程机的时间同步,具体选择哪种方法取决于你的实际需求和环境。对于 ROS 等时间敏感的应用,推荐使用 ntpdate
或 chrony
进行自动时间同步。
通过脚本同步本机时间到远程机上:
#!/bin/bash
#本地机安装 sudo apt-get install sshpass
# 这个脚本可以设置时间
# 远程机器的用户名、密码和IP地址
REMOTE_USER="sukai"
REMOTE_PASSWORD="sukai123456"
REMOTE_HOST="10.9.162.109"# 获取本机时间
LOCAL_TIME=$(date +"%Y-%m-%d %H:%M:%S")# 打印本机时间
echo "Local time: $LOCAL_TIME"# 在远程机器上设置时间
sshpass -p $REMOTE_PASSWORD ssh -o StrictHostKeyChecking=no $REMOTE_USER@$REMOTE_HOST "echo $REMOTE_PASSWORD | sudo -S date -s \"$LOCAL_TIME\""# 检查远程机器的时间是否已更新
sshpass -p $REMOTE_PASSWORD ssh -o StrictHostKeyChecking=no $REMOTE_USER@$REMOTE_HOST "date"
设置ssh:
clion远程开发,及设置ssh