【Linux应用】Linux系统日志上报服务,以及thttpd的配置、发送函数

【Linux应用】Linux系统日志上报服务,以及thttpd的配置、发送函数

文章目录

  • thttpd服务
  • 安装thttpd
  • 配置thttpd服务
  • thttpd函数
  • 日志效果和文件
  • 附录:开发板快速上手:镜像烧录、串口shell、外设挂载、WiFi配置、SSH连接、文件交互(RADXA ZERO 3为例)
    • ZERO 3烧录
    • ZERO 3串口shell
    • 外设挂载
    • 连接WiFi
    • SSH连接
    • SSH的文件交互
    • 换源

thttpd服务

通过thttpd可以进行日志上报等服务
thttpd 是一个简单,小型,可移植,快速且安全的 HTTP 服务器,thttpd搭建的Web服务器支持认证、CGI等服务,功能都比较齐全,常用于嵌入式或桌面系统搭建web服务器使用。
从官网即可下载
下载thttpd

安装thttpd

安装共分以下几步

1. 解压 进入目录
2. ./configure
3. sudo make
4. sudo make install
5. 检验 sudo thttpd -V
6. 添加服务

对应步骤shell为:

tar -xzvf thttpd-2.29.tar.gz
cd thttpd-2.29/
./configure
sudo make
sudo make install
sudo thttpd -V
cd ..
sudo chmod 777 thttpd.conf
sudo chmod 777 thttpd-with-timezone.service
sudo cp thttpd.conf /etc/
sudo cp thttpd-with-timezone.service /etc/systemd/system
cd /etc/systemd/system/
sudo systemctl enable thttpd-with-timezone.service

配置thttpd服务

.conf文件配置内容如下:

# This section overrides defaults
dir=/usr/local/thttpd/www/log
chroot
#user=www# default = nobody
logfile=/var/log/thttpd.log
pidfile=/var/run/thttpd.pid
# This section _documents_ defaults in effect
port=80
# nosymlink# default = !chroot
# novhost
# nocgipat
# nothrottles
host=0.0.0.0
# charset=iso-8859-1

.service服务文件如下:

Description=thttpd Web Server with Timezone Setup
After=network.target local-fs.target[Service]
Type=forking
ExecStartPre=/usr/bin/timedatectl set-timezone Asia/Shanghai
ExecStart=/usr/local/sbin/thttpd -C /etc/thttpd.conf
User=root
Group=root
PIDFile=/var/run/thttpd.pid
Restart=on-failure[Install]
WantedBy=multi-user.target

thttpd函数

log.hlog.cpp
包含以下API:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
void init_log_file();
void write_log(const char* format, ...);
void log_debug(const char* format, ...);
void log_info(const char* format, ...);
void log_warn(const char* format, ...);
void log_error(const char* format, ...);

常用log_info即可 其与printf一样
在这里插入图片描述

日志效果和文件

最后的日志效果:
在这里插入图片描述
保存在如下目录下:
在这里插入图片描述
目录按日期进行存储
在这里插入图片描述

附录:开发板快速上手:镜像烧录、串口shell、外设挂载、WiFi配置、SSH连接、文件交互(RADXA ZERO 3为例)

开发板快速上手:镜像烧录、串口shell、外设挂载、WiFi配置、SSH连接、文件交互(RADXA ZERO 3为例)

ZERO 3烧录

ZERO 3有两种 最本质的就是一个带WiFi一个不带WiFi
在这里插入图片描述

ZERO 3作为一个Linux板 其存储支持从sd卡EFI启动

系统安装则直接通过Balena Etcher来进行
可以使用其Windows版本即可
官方文档:
官方文档快速上手描述

镜像下载则也可以使用官方镜像:
Radxa ZERO 3 Debian Build 6

该镜像是最初的镜像 很多依赖都没有
如果开发的话 可以直接下载第三方镜像 或者自己在原有官方镜像上去安装镜像包等等

烧录很简单 直接用工具选择U盘 选择镜像即可

下图为烧录好了的sd卡
在这里插入图片描述
除了系统分区外 就是一个config分区 其挂载根根目录名称即为config

在这里插入图片描述

ZERO 3串口shell

串口与ZERO 3链接如下图:
在这里插入图片描述
链接后 配置串口为

baudrate: 1500000
data bit: 8
stop bit: 1
parity  : none
flow control: none

启动后 用户名和密码都为radxa
在这里插入图片描述

外设挂载

根据df命令查询系统挂载点
在这里插入图片描述
其做好了的U盘外部存储空间为/config
在这里插入图片描述

连接WiFi

使用如下指令链接WiFi:

nmcli device wifi                                           #扫描WiFi
sudo nmcli device wifi connect <ssid> password <passwd>     #连接WiFi

在这里插入图片描述
连上后 使用ip a命令即可查看连接状态和ip
在这里插入图片描述

SSH连接

使用命令sudo systemctl status ssh查看ssh状态在这里插入图片描述
前提是要安装ssh
如果没有安装 则通过shell安装ssh:

sudo apt-get update
sudo apt-get install openssh-server openssh-sftp-server

根据Active判断是否需要重启ssh服务:
重启ssh服务:

sudo systemctl restart ssh

启动后如下:
在这里插入图片描述
Active状态就被设置为了running

开机自启动ssh则使用命令:

sudo systemctl enable --now ssh

在PC上 支持ssh的设备中 使用以下指令链接到板子:

ssh [username]@[IP address] # or ssh [username]@[hostname]

如下图:
在这里插入图片描述

SSH的文件交互

若是在PC上作为主机去访问设备
那么就是在PC的cmd中运行shell

有的终端软件配备了ssh的文件管理传输功能
在这里插入图片描述
连上以后就可以直接搜素到当前目录下的各类文件 以便于实现文件管理
并且可以直接download
在这里插入图片描述

# 复制 Windows 文件到 Linux
scp D:\data\1.txt root@192.168.88.161:/root/data
# 复制 Windows 目录到 Linux(记得加 -r)
scp -r D:\data root@192.168.88.161:/root/data# 复制 Linux 文件到 Windows
scp root@192.168.88.161:/root/data/1.txt D:\data
# 复制 Linux 目录到 Windows(记得加 -r)
scp -r root@192.168.88.161:/root/data D:\data

前提是设备开启了ssh可以被链接
在这里插入图片描述
发过去后便能在板子上看到:
在这里插入图片描述

回传文件夹:
在这里插入图片描述
在这里插入图片描述

如果是Linux设备去连接Windows设备 则需要在Windows里面设置对应的服务 相关教程很多 这里不过多赘述

如果是Linux设备访问Linux设备 则主设备也要指定IP

scp root@192.168.88.161:/root/1.txt root@192.168.88.162:/root# 如果设置了Linux之间的免密登录,可这样写:
scp 192.168.88.161:///root/1.txt 192.168.88.162:///root

换源

Linux系统的源都在/etc/apt/下 一般有两个文件
一个是sources.list 另外一个是sources.list.d目录下的品牌list文件

如树莓派需要备份原本的源:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 
sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak

而radxa的则是:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 
sudo cp /etc/apt/sources.list.d/radxa.list /etc/apt/sources.list.d/radxa.list.bak

将原本的文件进行编辑:

sudo nano /etc/apt/sources.list

注释掉最初的源 并添加新的源:

deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm main contrib non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-updates main contrib non-free-firmware

如图:
在这里插入图片描述
然后再换子目录下的源

sudo nano /etc/apt/sources.list.d/raspi.list

替换成:

deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main

不过很可惜 清华源没有radxa 但是可以换debian的源(/etc/apt/sources.list):

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

换源后 执行

sudo apt-get upgrade
sudo apt-get update

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

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

相关文章

Linux 内核内存管理子系统全面解析与体系构建

一、前言: 为什么内存管理是核心知识 内存管理是 Linux 内核最核心也最复杂的子系统之一&#xff0c;其作用包括&#xff1a; 为软件提供独立的虚拟内存空间&#xff0c;实现安全隔离分配/回收物理内存资源&#xff0c;维持系统稳定支持不同类型的内存分配器&#xff0c;最优…

鼠标的拖动效果

1、变量的设置 let isDragging false; let startX; let startY&#xff1b; let endX; let endY; let box null;isDragging : 表示是否推拽startX、startY&#xff1a;表示起始坐标&#xff0c;相对于元素endX、endY&#xff1a;表示结束坐标&#xff0c;相对于元素box&…

SwaggerFuzzer:一款自动化 OpenAPI/Swagger 接口未授权访问测试工具

SwaggerFuzzer &#x1f310; 一款自动化 OpenAPI/Swagger 接口未授权访问测试工具&#x1f680; 工具介绍&#xff1a;SwaggerFuzzer✨ 核心功能亮点&#x1f680; 快速使用&#x1f9f0; 支持参数 &#x1f4cc; 项目结构&#x1f4e5; 获取与下载 &#x1f310; 一款自动化 …

文献阅读:Exploring Autoencoder-based Error-bounded Compression for Scientific Data

目录 论文简介动机&#xff1a;为什么作者想要解决这个问题&#xff1f;贡献&#xff1a;作者在这篇论文中完成了什么工作(创新点)&#xff1f;规划&#xff1a;他们如何完成工作&#xff1f;离线训练阶段&#xff1a;在线压缩阶段 理由&#xff1a;通过什么实验验证它们的工作…

【业务框架】3C-相机-Cinemachine

概述 插件&#xff0c;做相机需求&#xff0c;等于相机老师傅多年经验总结的工具 Feature Transform&#xff1a;略Control Camera&#xff1a;控制相机参数Noise&#xff1a;增加随机性Blend&#xff1a;CameraBrain的混合列表指定一个虚拟相机到另一个相机的过渡&#xff…

设计一个算法:删除非空单链表L中结点值为x的第一个结点的前驱结点

目录 单链表的存储结构定义如下 快慢指针法 三指针法版本① 三指针法版本② 单链表的存储结构定义如下 typedef struct{Elemtype data;struct Node* next; }LNode,*LinkList; 快慢指针法 void deleteprex(LinkList L, Elemtype e) {if (L NULL || L->next NULL ||…

【Qt】:设置新建类模板

完整的头文件模板 #ifndef %FILENAME%_H #define %FILENAME%_H/*** brief The %CLASSNAME% class* author %USER%* date %DATE%*/ class %CLASSNAME% { public:%CLASSNAME%();~%CLASSNAME%();// 禁止拷贝构造和赋值%CLASSNAME%(const %CLASSNAME%&) delete;%CLASSNAME%&a…

​**​CID字体​**​ 和 ​**​Simple字体​**​

在PDF中&#xff0c;字体类型主要分为 ​​CID字体​​ 和 ​​Simple字体​​ 两大类&#xff0c;它们的主要区别在于编码方式和适用场景。以下是它们的详细对比&#xff1a; ​​1. CID字体&#xff08;CID-keyed Fonts&#xff09;​​ CID&#xff08;Character Identifie…

计组_导学

2025.05.31:老汤讲408计组学习笔记 导学 第1章计算机系统概述:对计算机系统有全局的认识第2章总线系统:简单且独立,不会依赖其他内容,它是被依赖的第3章主存储器:只有了解主存储器的内部结构,才能理解在主存中是如何存储二进制的第4章数据的表示与运算:各种编码以及计算…

【GPT模型训练】第二课:张量与秩:从数学本质到深度学习的基础概念解析

这里写自定义目录标题 张量&#xff08;Tensor&#xff09;的定义关键特点&#xff1a;示例&#xff1a; 张量的秩&#xff08;Rank&#xff09;示例&#xff1a;“秩”的拼音常见混淆点 总结 张量&#xff08;Tensor&#xff09;的定义 在数学和物理学中&#xff0c;张量是一…

RabbitMQ work模型

Work 模型是 RabbitMQ 最基础的消息处理模式&#xff0c;核心思想是 ​​多个消费者竞争消费同一个队列中的消息​​&#xff0c;适用于任务分发和负载均衡场景。同一个消息只会被一个消费者处理。 当一个消息队列绑定了多个消费者&#xff0c;每个消息消费的个数都是平摊的&a…

【Linux操作系统】基础开发工具(yum、vim、gcc/g++)

文章目录 Linux软件包管理器 - yumLinux下的三种安装方式什么是软件包认识Yum与RPMyum常用指令更新软件安装与卸载查找与搜索清理缓存与重建元数据 yum源更新1. 备份现有的 yum 源配置2. 下载新的 repo 文件3. 清理并重建缓存 Linux编辑器 - vim启动vimVim 的三种主要模式常用操…

73常用控件_QFormLayout的使用

目录 代码⽰例: 使⽤ QFormLayout 创建表单. 除了上述的布局管理器之外, Qt 还提供了 QFormLayout , 属于是 QGridLayout 的特殊情况, 专 ⻔⽤于实现两列表单的布局. 这种表单布局多⽤于让⽤⼾填写信息的场景. 左侧列为提⽰, 右侧列为输⼊框 代码⽰例: 使⽤ QFormLayout 创…

兰亭妙微 | 医疗软件的界面设计能有多专业?

从医疗影像系统到手术机器人控制界面&#xff0c;从便携式病原体检测设备到多平台协同操作系统&#xff0c;兰亭妙微为众多医疗设备研发企业&#xff0c;打造了兼具专业性与可用性的交互界面方案。 我们不仅做设计&#xff0c;更深入理解医疗场景的实际需求&#xff1a; 对精…

鸿蒙开发修改版本几个步骤

鸿蒙开发修改版本几个步骤 比如&#xff1a;5.0.4&#xff08;16&#xff09;版本改为5.0.2&#xff08;14&#xff09;版本 一、项目下的build-profile.json5 "products": [{"name": "default","signingConfig": "default&qu…

Flask 基础与实战概述

一、Flask 基础知识 什么是 Flask? Flask 是一个基于 Python 的轻量级 Web 框架(微框架)。 特点:核心代码简洁,给予开发者更多选择空间。 与 Django 对比: Django 创建空项目生成多个文件,Flask 仅需一个文件即可实现简单应用(如 "Hello, World!")。 Flask …

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…

Java严格模式withResolverStyle解析日期错误及解决方案

在Java中使用DateTimeFormatter并启用严格模式&#xff08;ResolverStyle.STRICT&#xff09;时&#xff0c;解析日期字符串"2025-06-01"报错的根本原因是&#xff1a;模式字符串中的年份格式yyyy被解释为YearOfEra&#xff08;纪元年份&#xff09;&#xff0c;而非…

Java中的泛型底层是怎样的

Java 泛型深入底层原理解析&#xff1a;类型擦除与桥方法的真相 一、Java中的伪泛型 Java 从 JDK 1.5 引入泛型之后&#xff0c;大大提升了代码的类型安全性与可读性。但泛型的底层实现并不像 C 的模板机制那样是“真正的泛型”&#xff0c;Java 的泛型是伪泛型&#xff0c;在…