Arm Linux 设置系统日期时间的方法

news2024/11/14 20:09:58

一、设置系统日期时间的方法

1.命令行工具
date 命令:是Linux系统中用于查看和设置系统时间的常用命令行工具。通过date -s选项,可以手动设置系统时间。

sudo date -s "YYYY-MM-DD HH:MM:SS"

hwclock 命令:用于查询和设置硬件时钟(RTC,实时时钟)。虽然它主要用于硬件时钟,但也可以用来将硬件时钟的时间同步到系统时钟,或者将系统时钟的时间写入硬件时钟。

//查看硬件时钟
sudo hwclock --show
//设置硬件时钟(需要管理员权限)
sudo hwclock --set --date="YYYY-MM-DD HH:MM:SS"

timedatectl 命令( systemd 系统):在使用 systemd 的 Linux 发行版中,timedatectl 是一个用于查询和更改系统日期和时间的命令行工具。它提供了比date命令更丰富的功能和选项。

//设置系统时间
sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"
//设置时区
sudo timedatectl set-timezone "Asia/Shanghai"

2.NTP(网络时间协议)
NTP本身不是一个函数或命令,但它是一种用于同步计算机时间的协议。在Linux系统中,可以使用NTP客户端(如 ntpd、chronyd 等)来自动从网络上的时间服务器同步时间。
也可以通过编写C语言程序来配置NTP客户端,最好通过调用系统命令(如 ntpdate)或使用NTP客户端的库(如果可用)来实现类似的功能。
3.系统调用和库函数(间接方法)
在某些情况下,需要编写C语言程序来调用系统命令(如使用 system() 函数)或执行其他间接操作来设置系统时间。
4.settimeofday() 函数
在ARM Linux上使用C语言设置系统日期和时间,通常需要调用 settimeofday() 函数,该函数是 POSIX标准 的一部分,用于设置系统的当前时间。不过,由于 settimeofday() 需要超级用户权限,因此需要以root用户身份运行程序。

二、代码测试

2.1 系统调用

测试代码

#include <stdio.h>  
#include <string.h>  
 #include <time.h>
 
int main(int argc,char*argv[])
{  
    FILE *fstream=NULL;    
    char buff[1024];  
    char cmd[1024];  
    time_t now;  
    memset(buff,0,sizeof(buff));  
    memset(cmd,0,sizeof(cmd));  
    sprintf(cmd,"sudo date -s \"%d-%d-%d %d:%d:%d\"",2024,8,7,9,50,0);
    printf("%s\r\n",cmd);
    if(NULL==(fstream=popen(cmd,"r"))) // cmd 指令   
    {   
            fprintf(stderr,"execute command failed: %s",strerror(perror));    
            return -1;    
    }   
    printf("%s\r\n","haha-start");  
    while(NULL!=fgets(buff, sizeof(buff), fstream)) // 获取 cmd 指令返回的数据信息
    {
            printf("%s",buff);  
    }
    printf("%s\r\n","haha-end");  
    pclose(fstream);  // 关闭

    // 验证系统时间是否已更改(可选)
    time(&now);  
    printf("系统时间已设置为: %s", ctime(&now));  
    return 0;   
}

测试结果
在这里插入图片描述

在这里插入图片描述

2.2 settimeofday() 函数

测试代码如下:

#include <stdio.h>  
#include <time.h>  
#include <sys/time.h>  
#include <stdlib.h>  
  
int main() 
{  
    struct timeval tv;  
    struct tm tm_new;  
    time_t now;  
  
    // 获取当前时间(以秒为单位)  
    time(&now);  
  
    // 将time_t转换为struct tm  
    // 注意:localtime()返回的是指向静态内存的指针,每次调用可能会覆盖之前的结果  
    struct tm *tm_now = localtime(&now);  
    if (tm_now == NULL) 
    {  
        perror("localtime");  
        return EXIT_FAILURE;  
    }  
  
    // 复制当前时间,以便修改  
    tm_new = *tm_now;  
  
    // 假设我们要将时间设置为2023年10月1日 12:00:00  
    tm_new.tm_year = 2023 - 1900; // 年份,从1900年开始计数  
    tm_new.tm_mon = 10 - 1;       // 月份,从0开始计数  
    tm_new.tm_mday = 1;           // 日  
    tm_new.tm_hour = 12;          // 小时  
    tm_new.tm_min = 0;            // 分钟  
    tm_new.tm_sec = 0;            // 秒  
  
    // 将struct tm转换回time_t  
    // 注意:mktime()会修改传入的struct tm,将其标准化(比如月份从0调整为1-12)  
    now = mktime(&tm_new);  
    if (now == (time_t)-1)
     {  
        perror("mktime");  
        return EXIT_FAILURE;  
    }  
  
    // 设置tv_sec  
    tv.tv_sec = now;  
    // 如果需要,也可以设置tv_usec(微秒)  
    tv.tv_usec = 0;  
  
    // 调用settimeofday()设置系统时间  
    // 注意:这需要root权限  
    if (settimeofday(&tv, NULL) == -1) 
    {  
        perror("settimeofday");  
        return EXIT_FAILURE;  
    }  
  
    // 验证系统时间是否已更改(可选)  
    printf("系统时间已设置为: %s", ctime(&now));  
  
    return EXIT_SUCCESS;  
}

切换到 root 用户,指令

su

编译程序,并执行,测试结果如下

gcc test.c -o test

在这里插入图片描述
退出 root 用户,指令

exit

或者
先编译,指令为

sudo gcc test.c -o test

再切换到 root 用户执行即可

su

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1993959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8月8日复习内容(基础的文件IO操作)

man手册 主要分为以下几个章节&#xff1a; User Commands&#xff08;用户命令&#xff09;&#xff1a;这一章节包含了普通用户&#xff08;非root用户&#xff09;可以执行的命令。这些命令通常用于日常的文件管理、文本编辑、程序执行等任务。 System Calls&#xff08;系…

【JavaEE初阶】常见的锁策略及synchronized实现原理

目录 &#x1f333; 常见的锁策略 &#x1f6a9; 乐观锁 vs 悲观锁 &#x1f6a9; 重量级锁 vs 轻量级锁 &#x1f6a9; 自旋锁 vs 挂起等待锁 &#x1f6a9; 可重入锁 vs 不可重入锁 &#x1f6a9; 公平锁 vs 非公平锁 &#x1f6a9; 互斥锁 vs 读写锁 &#x1f384; …

2024年8月8日(python基础)

一、检查并配置python环境&#xff08;python2内置&#xff09; 1、检测是否安装 [rootlocalhost ~]# yum list installed| grep python [rootlocalhost ~]# yum -y install epel-release 2、安装python3 [rootlocalhost ~]# yum -y install python3 最新版3.12可以使用源码安…

数据结构.

1:基本大纲 数据结构、算法线性表&#xff1a;顺序表、链表、栈、队列树&#xff1a;二叉树、遍历、创建查询方法、排序方式 2:数据结构&#xff08;逻辑结构&#xff0c;存储结构&#xff0c;操作&#xff08;数据的运算&#xff09;&#xff09; 2.1&#xff1a;数据&#xf…

RabbitMQ面试题汇总

RabbitMQ面试题 一、RabbitMQ基础1. 什么是RabbitMQ&#xff0c;它的基本架构是怎样的&#xff1f;2. RabbitMQ支持哪些协议&#xff1f;3. 说一下AMQP协议&#xff1f;4. 为什么要使用RabbitMQ&#xff1f;5. MQ的应用场景有哪些&#xff1f;6. 解耦、异步、削峰是什么&#x…

【Linux之·工程构建·Cmake】

系列文章目录 文章目录 前言一、概述二、CMake的基本概念2.1 CMake的工作原理和基本组成部分2.2 CMakeLists.txt文件的结构和语法2.2.1 变量操作2.2.2 注释2.2.3 日志2.2.4 宏定义 2.3 CMakeLists.txt文件的作用 三、CMake的常用命令和变量3.1 常用的CMake命令和变量3.1.1 字符…

多尺度病理图像纹理特征作为肺腺癌预后预测的新指标|文献精读·24-08-09

小罗碎碎念 这一期推文分享的文献是2022年发表于 Journal of Translational Medicine 的一篇文章&#xff0c;目前IF6.1。 这篇文章值得刚入门病理AI领域的老师/同学仔细研读&#xff0c;因为思路清晰&#xff0c;该讲到的流程基本都涉及了&#xff0c;详细讲述了病理图像的各种…

PyTorch基于深度神经网络的语音情绪识别

【图书推荐】《PyTorch语音识别实战》-CSDN博客 《PyTorch语音识别实战&#xff08;人工智能技术丛书&#xff09;》(王晓华)【摘要 书评 试读】- 京东图书 (jd.com) 情绪数据的获取与标签的说明 首先是语音情绪数据集的下载&#xff0c;在这里使用瑞尔森情感语音和歌曲视听数…

动态规划求解最小斯坦纳树(证了一天两夜)

最小斯坦纳树 给定点的“最小生成树”问题。 背景 给定无向连通图 G ( V , E ) G(V,E) G(V,E)&#xff0c;给出包含 k k k 个结点的点集 S S S&#xff0c;包含点集 S S S 的连通图被称作 斯坦纳树。但我们关注的是如何求出包含点集 S S S 的最小连通图 G ′ ( V ′ ,…

One-hot编码和Multiple-hot编码

在推荐系统和机器学习中&#xff0c;我们通常会遇到两种类型的编码方式&#xff1a;One-hot 编码和 Multiple-hot 编码&#xff08;有时也称为 Multi-hot 编码&#xff09;。这两种编码方式用于将分类数据转换为数值表示&#xff0c;以便机器学习模型能够处理这些数据。 1、On…

国产开源大模型都有哪些?

随着ChatGPT引领的大模型热潮&#xff0c;国内的公司开始相继投入研发自己的人工智能大模型&#xff0c;截止到2023年10月&#xff0c;国产公司的大模型有近百个&#xff0c;包括一些通用大模型&#xff0c;比如百度的文心一言&#xff0c;也有特定领域的专用大模型&#xff0c…

电力时代的液冷-EAK水冷电阻器的来源

当电气设备出现故障时&#xff0c;我们经常会表述成“这个东西烧了”。为什么用“烧”而不是“破”了或“坏”了呢?因为在电气产品中&#xff0c;一部分的电能会在使用的过程中通过电阻和电感的作用转化为热&#xff0c;如果因为设计或故障原因&#xff0c;产生的热没有被有效…

python自动化笔记:os模块和异常处理

目录 一、os模块1.1、常用方法1.2、其他方法&#xff08;了解即可&#xff09; 二、异常处理 try except2.1、语法格式1&#xff1a;2.2、语法格式2&#xff1a;指定异常类别&#xff0c;捕获异常2.3、语法格式3&#xff1a;try-finally 语句无论是否发生异常都将执行最后的代码…

〖基础篇1〗ROS2 Foxy Ubuntu 20.04 (Focal Fossa)安装教程

目录 一、linux Ubuntu 20.04 (Focal Fossa)安装二、linux VPN安装三、linux anaconda安装&#xff08;可选&#xff09;四、linux ROS2 foxy安装1. 设置语言环境2. 设置DEB软件源3. 安装开发工具和依赖4. 安装ROS2 foxy桌面版本5. 运行示例 一、linux Ubuntu 20.04 (Focal Fos…

常见框架漏洞详解③!!

Apache Apache 是世界使⽤排名第⼀的 Web 服务器软件。它可以运⾏在⼏乎所有⼴泛使⽤的计算 机平台上&#xff0c;由于其跨平台和安全性被⼴泛使⽤&#xff0c;是最流⾏的 Web 服务器端软件之⼀。 apache⽬录结构&#xff1a; bin&#xff1a;存放常⽤命令⼯具&#xff0c;如h…

颠倒字符串中的单词(LeetCode)

题目 给你一个字符串 &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&#xff1a;输入字符串 中可能会存在前导空格、尾随…

CSDN机器人与僵shi粉测试(真人看看)

​哈哈哈一起玩个游戏 发现老是莫名其妙有很多关注点赞与收藏&#xff0c;关注的几百个人应该都是机器人 此博文用于检测平台机器人阅读量 —>如果是真人请务必随便留言<— 可以根据阅读量与评论判断机器人数量 不用点赞收藏有机器人就行 机器人统一特征是在2019年左右…

【C++ 面试 - 基础题】每日 3 题(七)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

ImportError: DLL load failed while importing _rust: 找不到指定的程序的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

网络协议四 物理层,数据链路层

从这一节开始学习 五层模型。学习方法是从最底层物理层开始学习 七层模型 五层模型 各个层用的协议&#xff0c;以及加上协议后的称谓 各个层的作用 应用层&#xff1a;可以认为是原始数据&#xff0c;该数据称为 报文&#xff0c;用户数据。 运输层&#xff1a;也叫传输层&am…