linux
文章平均质量分 75
lemontree1945
这个作者很懒,什么都没留下…
展开
-
Linux 系统守护进程管理 --(start-stop-daemon)
目录一、功能二、格式2.1 搜索匹配的过程2.2选项2.2.1匹配选项2.2.2只对–start有效的选项2.2.3只对–停止有效的选项2.2.4其他选项三、应用3.1 启动进程3.1.1 强制启动3.1.2 默认启动3.1.3 启动进程,并生成进程的PID文件3.2停止进程3.2.1 使用进程名称停止进程3.2.2 使用PID文件停止进程一、功能启动或停止系统守护进程。二、格式start-stop-daemon [–原创 2022-05-10 16:17:45 · 3424 阅读 · 0 评论 -
ubuntu里设置从串口登录
1) Create a file called /etc/init/ttyS0.conf containing the following:# ttyS0 - getty## This service maintains a getty on ttyS0 from the point the system is# started until it is shut down again.start on stopped rc or RUNLEVEL=[2345]stop on runl.转载 2021-06-10 16:04:59 · 1648 阅读 · 0 评论 -
Linux模块加载流程及如何让系统开机自动加载模块
Linux模块加载Linux系统加载哪些内核模块,和配置文件有关系。模块保存在/lib/modules/下。使用/etc/modules-load.d/来配置系统启动时加载哪些模块。使用/etc/modprobe.d/下配置模块加载时的一些参数,也可以利用blacklist来屏蔽模块的自动加载。例如,在安装NVIDIA显卡驱动时,需要屏蔽开源的nouveau驱动,就可以将其加入blacklist。如何添加一个自己编译的模块将编译好的.ko模块放到目录/lib/modules/`uname转载 2021-06-10 15:41:42 · 2329 阅读 · 0 评论 -
Linux之systemd服务配置及自动重启
layout: posttitle: Linux之systemd服务配置及自动重启date: 2019-09-09tags: linuxLinux之systemd服务配置及自动重启0 背景在linux上开发时,往往需要将自己的程序做成服务,并且实现服务开机自动重启,以及服务崩溃后自动重启功能,本文就对该功能的实现做简单介绍,实现方法很简单,使用linux系统的systemd即可实现1 systemd介绍历史上,linux的启动一直采用init进程,比如$ sudo /etc/转载 2021-06-09 08:43:34 · 1097 阅读 · 0 评论 -
Systemd 入门教程:命令篇
Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。本文介绍它的基本用法,分为上下两篇。今天介绍它的主要命令,下一篇介绍如何用于实战。一、由来历史上,Linux 的启动一直采用init进程。下面的命令用来启动服务。$ sudo /etc/init.d/apache2 start# 或者$ service apache2 start这种方法有两个缺点。一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一.转载 2021-06-09 08:28:15 · 213 阅读 · 0 评论 -
Linux 守护进程的启动方法
"守护进程"(daemon)就是一直在后台运行的进程(daemon)。本文介绍如何将一个 Web 应用,启动为守护进程。转载 2021-06-09 08:09:56 · 486 阅读 · 0 评论 -
setsockopt函数功能介绍
功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#include <sys/types.h>#include <sys/socket.h>int g...原创 2020-10-20 10:22:06 · 2140 阅读 · 0 评论 -
epoll实现socket通信
epoll是Linux特有的I/O复用函数,它在实现和使用上与select和poll有很大差异。epoll使用一组函数来完成任务,而不是单个函数。epoll把用户关心的文件描述符上的事件放在内核的一个事件表中,无需像select和poll那样每次调用都要重复传入文件描述符集或事件集,但epoll需要一个额外的文件描述符,来唯一标示内核中的这个事件表,这个文件描述符使用epoll_create函数来创建。 epoll是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用.转载 2020-08-23 22:22:35 · 6774 阅读 · 0 评论 -
Makefile.am和makefile.in生成Makefile
很多时候,我们在网上下载的linux开源软件都会遇到一个问题,就是源码里面没有直接的makefile,但是它有Makefile.am和makefile.in或者它有Makefile.am和configure.in,这里就不详细解释他们直接的关联,直接给出如何操作生成makefile。具体操作步骤如下:1. 执行aclocal,产生aclocal.m4文件aclocal是一个perl 脚...原创 2019-11-14 16:22:26 · 601 阅读 · 0 评论 -
Linux应用程序设置进程调度策略
在用户空间,调用sched_setscheduler()函数,函数原型如下:[cpp] view plain copy print?int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param); 参数说明:pid: 须指定调度策略进程的pi转载 2017-11-30 15:21:20 · 2022 阅读 · 0 评论 -
linux 下各errno的意义
errno.00 is: Successerrno.01 is: Operation not permittederrno.02 is: No such file or directoryerrno.03 is: No such processerrno.04 is: Interrupted system callerrno.05 is: Input/output error转载 2017-11-30 15:17:47 · 290 阅读 · 0 评论 -
linux中进程的用户管理
linux中进程的用户管理每个进程都拥有真实的用户、组(uid、gid),有效的用户、组(euid、egid),保存的设置用户、组(suid、sgid),还有linux中专门用于文件存储存取的用户、组id(fsuid、fsgid对于unix系统没有这两个fields)。现说明进程中每种类型用户的功能:(1)真实的用户、组(uid、gid):进程的真正所有者。每当用户在shell终端登录时,转载 2017-11-27 15:36:33 · 4626 阅读 · 0 评论 -
Linux Setuid(SUID)和Setgid(SGID) sticky bit
1、setuid和setgid的解说 setuid和setgid位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令。比如我们用普通用户运行passwd命令来更改自己的口令,实际上最终更改的是/etc/passwd文件,我们知道/etc/passwd文件是用户管理的配置文件,只有root权限的用户才能更改: [root@localhost ~转载 2017-11-25 16:58:20 · 562 阅读 · 0 评论 -
linux 查看端口号
linux 查看端口号命令 (2011-09-27 15:51:02)转载▼标签: 杂谈分类: LINUXLinux下如果我们需要知道2809号端口的情况的话,我们可以这样,如下命令: $netstat -pan|grep 2809 tcp 0 0 0.0.0.0:2809 0.0转载 2017-07-13 10:03:17 · 705 阅读 · 0 评论 -
linux SPI分析
下面有两个大的模块:一个是SPI总线驱动的分析 (研究了具体实现的过程)另一个是SPI总线驱动的编写(不用研究具体的实现过程)SPI总线驱动分析 1 SPI概述 SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口,是Motorola首先在其MC68HCXX系列处理器上定义转载 2017-06-20 09:34:35 · 432 阅读 · 0 评论 -
关于udelay(); mdelay(); ndelay(); msleep();
在Linux Driver开发中,经常要用到延迟函数:msleep,mdelay/udelay.虽然msleep和mdelay都有延迟的作用,但他们是有区别的.mdeday还忙等待函数,在延迟过程中无法运行其他任务.这个延迟的时间是准确的.是需要等待多少时间就会真正等待多少时间.而msleep是休眠函数,它不涉及忙等待.你如果是msleep(10),那实际上延迟的时间,大部分时候是转载 2017-06-15 14:23:33 · 536 阅读 · 0 评论 -
kobject_create_and_add解析
本文源码均来自linux 3.14.3版本/lib/kobject.c文件/** * kobject_create_and_add - 动态创建一个kobject结构并注册到sysfs * * @name: kobject的名称 * @parent: kobject的parent kobject of this kobject, 如果有的话 * * 该方法动态创建一转载 2017-06-14 13:54:43 · 7051 阅读 · 0 评论 -
sysfs接口函数的建立_DEVICE_ATTR
最近在弄Sensor驱动,看过一个某厂家的成品驱动,里面实现的全都是sysfs接口,hal层利用sysfs生成的接口,对Sensor进行操作。说道sysfs接口,就不得不提到函数宏 DEVICE_ATTR原型是#define DEVICE_ATTR(_name, _mode, _show, _store) \struct device_attribute dev_attr_转载 2017-06-14 13:50:13 · 232 阅读 · 0 评论 -
linux 创建内核线程
Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合理以及不合理的请求)。内核需要多个执行流并行,为了防止可能的阻塞,支持多线程是必要的。内核线程就是内核的分身,一个分身可以处理一件特定事情。内核线程的调度由内核负责,一个内核线程处于阻塞状态时不影响其他的内核线程,因为其是调度的基本单位。这与用户线程是不一样的。因为内核线程只运行在内核态,因此,它只能使用大于PAGE_OFFS转载 2017-06-12 11:22:21 · 2443 阅读 · 0 评论 -
linux work queue
Linux中的work queue (2011-04-20 17:09:14)转载▼标签: 杂谈分类: Linux工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在转载 2017-06-12 11:18:29 · 381 阅读 · 0 评论 -
解析Linux内核模块的链接顺序
关键字:Linux 昨天晚上把我们设备的内核升级到最新的Linux-3.3上去了,这个版本主要新特性包括:合并了来自Android项目的内核代码,支持新的架构TI C6X,改进了Btrfs文件系统的balance操作、新的除错工具和RAID restripping;新的虚拟网络交换机Open vSwitch;支持EFI引导固件;改进内存管理等,这里我们比较感兴转载 2017-11-30 16:42:33 · 884 阅读 · 0 评论 -
取当前进程对应之静态映像文件的绝对路径/proc/self/exe
提供一个linux advanced programming 上的得到绝对路径目录的函数:char* get_self_executable_directory (){ int rval; char link_target[1024];//目标地址 char* last_slash; size_t result_length;//结果的长度 char* re转载 2017-11-30 17:23:06 · 1436 阅读 · 0 评论 -
linux内存操作--ioremap和mmap
对于一个系统来讲,会有非常多的外设,那么这些外设的管理都是通过CPU完毕。那么CPU在这个过程中是怎样找到外设的呢?虽然在一个系统中会有诸多的外设,在每一个外设的接口电路中会有多个port。可是假设系统可以每一个port都被赋予一个详细的地址值。那么在系统中就能轻易的找到不论什么一个外设。系统在管理的时候。无论是内存还是外设都须要分配一个内存地址。对于一个32bit的系统来讲,可寻址的范围转载 2017-12-11 14:25:04 · 661 阅读 · 0 评论 -
strcpy ,strncpy ,strlcpy地用法
strcpy ,strncpy ,strlcpy地用法好多人已经知道利用strncpy替代strcpy来防止缓冲区越界。但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。1. strcpy我们知道,strcpy 是依据 \0 作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。strcpy 常规的实现代码如下(来自 OpenBSD转载 2017-12-20 10:27:18 · 255 阅读 · 0 评论 -
linux usb驱动中的urb详解
linux 内核中的 USB 代码和所有的 USB 设备通讯使用称为 urb 的东西( USB request block). 这个请求块用 struct urb 结构描述并且可在 include/linux/usb.h 中找到. 一个urb 用来发送或接受数据到或者从一个特定 USB 设备上的特定的 USB 端点, 以一种异步的方式.一个 USB 设备驱动可能分配许转载 2017-12-20 14:19:41 · 10676 阅读 · 0 评论 -
vim Ctrl+S锁定屏幕
由于windows下编程习惯了保存就ctrl+s,在vim下ctrl+s整个putty终端就死了,遇到好几次这种情况,网上查了下原来ctrl+s在LINUX里是锁定屏幕的快捷键,解锁ctrl+q就可以了转载 2017-12-20 15:36:02 · 319 阅读 · 0 评论 -
module_param的使用
在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param ()module_param宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中,具体定义如下:#define module_param(name, type, perm)module_param_named(name, nam转载 2017-12-20 16:57:54 · 399 阅读 · 0 评论 -
Linux的chattr与lsattr命令详解
PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了。通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chat转载 2017-12-04 11:06:11 · 259 阅读 · 0 评论 -
Linux中__init、__devinit等初始化宏解析和入口函数
一、初始化宏1.1、定义 在内核里经常可以看到__init, __devinit这样的语句,这都是在init.h中定义的宏,gcc在编译时会将被修饰的12内容放到这些宏所代表的section,编译器通过这些宏可以把代码优化放到合适的内存位置,以减少内存占用和提 高内核效率。 其典型的定义如下:12 #define __init __sectio转载 2017-12-21 10:01:31 · 300 阅读 · 0 评论 -
linux usb键盘驱动详解
1.首先我们通过上节的代码中修改,来打印下键盘驱动的数据到底是怎样的先来回忆下,我们之前写的鼠标驱动的id_table是这样: 所以我们要修改id_table,使这个驱动为键盘的驱动,如下图所示: 然后修改中断函数,通过printk()打印数据:我们先按下按键A为例,打印出0x04,如下图: 我们再同时按下按键A和S,打印出0x04,0X16, 如下图:转载 2017-12-21 15:03:06 · 4181 阅读 · 0 评论 -
linux struct input_event结构体详解
查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键模拟,具体 方法就是操作/dev/input/event1文件,向它写入个input_event结构体就可以模拟按键的输入了。linu原创 2017-12-21 15:53:00 · 13092 阅读 · 0 评论 -
用户空间与内核空间数据交换的方式------seq_file
一般地,内核通过在procfs文件系统下建立文件来向用户空间提供输出信息,用户空间可以通过任何文本阅读应用查看该文件信息,但是procfs 有一个缺陷,如果输出内容大于1个内存页,需要多次读,因此处理起来很难,另外,如果输出太大,速度比较慢,有时会出现一些意想不到的情况, Alexander Viro实现了一套新的功能,使得内核输出大文件信息更容易,该功能出现在2.4.15(包括2.4.15)以后转载 2017-12-22 11:12:58 · 189 阅读 · 0 评论 -
用户空间与内核空间数据交换的方式(1)------debugfs
内核开发者经常需要向用户空间应用输出一些调试信息,在稳定的系统中可能根本不需要这些调试信息,但是在开发过程中,为了搞清楚内核的行为,调试信息非常必要,printk可能是用的最多的,但它并不是最好的,调试信息只是在开发中用于调试,而printk将一直输出,因此开发完毕后需要清除不必要 的printk语句,另外如果开发者希望用户空间应用能够改变内核行为时,printk就无法实现。因此,需要一种新的机制转载 2017-12-22 11:40:14 · 210 阅读 · 0 评论 -
Linux-USB鼠标驱动
参考/drivers/hid/usbhid/usbmouse.c(内核自带的USB鼠标驱动)1.本节需要用到的宏如下:struct usb_device_id usbmouse_id_table []=USB_INTERFACE_INFO(cl,sc,pr); USB_INTERFACE_INFO()设置usb_driver驱动的id_table成员cl:转载 2017-12-19 16:54:46 · 1470 阅读 · 0 评论 -
Linux init详解 (0,1,2,3,4,5,6)
init是Linux系统操作中不可缺少的程序之一。 所谓的init进程,它是一个由内核启动的用户级进程。 内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Li转载 2018-01-15 17:04:52 · 1403 阅读 · 0 评论 -
linux下PS1命令提示符设置
次文来自我的一片博文: 前些天安装了centos6.0。自己也尝试着使用命令行来提高自己,但是,苦于每次键入的命令都是一个黑乎乎的颜色,而且前面的什么设备名称啊、主机名称啊、当前路径啊什么的,自己用起来就是感觉不爽的很!这不,消停不下的我,在这里研究了一番:讲自己的命令提示符弄得还慢漂亮滴!(呵呵,反正我觉得漂亮)。 好了,先来说说什么是PS1,PS1是linux里头的一个默认的转载 2018-01-16 09:35:16 · 392 阅读 · 0 评论 -
SELINUX简介
1. 简介 SELinux(Security-Enhanced Linux) 是美国国家安全局「NSA=The National Security Agency」 和SCC(Secure Computing Corporation)开发的 Linux的一个扩张强制访问控制(MAC)安全模块,是 Linux® 上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访原创 2018-01-24 10:04:19 · 28 阅读 · 0 评论 -
Shell脚本IF条件判断和判断条件总结
IF条件判断1、基本语法:if [ command ]; then符合该条件执行的语句fi2、扩展语法:if [ command ];then符合该条件执行的语句elif [ command ];then符合该条件执行的语句else符合该条件执行的语句fi3、语法说明:bash shell会按顺序执行if语句,如果command执行后转载 2018-01-24 15:22:42 · 2041 阅读 · 0 评论 -
Linux内核中container_of宏的理解
对 typeof 的理解:实际上, typeof 并不是宏定义,它是GCC的关键字,是GCC特有的特性。如果只知道一个变量的名字要得到其类型,并不是宏定义能够完成的,这需要编译时的信息。所以,typeof 操作是GCC内置的功能,在内核头文件和Glibc头文件中都是找不到typeof的宏定义的。对 offsetof 的理解:offsetof 是一个真正的宏,它定义在内核转载 2018-01-08 09:35:01 · 238 阅读 · 0 评论 -
strcpy和strcat
strcat() 会将参数 src 字符串复制到参数 dest 所指的字符串尾部;dest 最后的结束字符 NULL 会被覆盖掉,并在连接后的字符串的尾部再增加一个 NULL。strcpy 会把dest所指的字符串,包含'\0',全部copy原创 2018-01-08 09:47:24 · 472 阅读 · 0 评论