linux系统

谈谈Linux内核驱动的coding style

百般思念 提交于 2020-03-26 11:54:56
最近在向Linux内核提交一些驱动程序,在提交的过程中,发现自己的代码离Linux内核的coding style要求还是差很多。当初自己对内核文档里的CodingStyle一文只是粗略的浏览,真正写代码的时候在很多细节上会照顾不周。不过, 在不遵守规则的程序员队伍里,我并不是孤独的。如果去看drivers/staging下的代码,就会发现很多驱动程序都没有严格遵守内核的coding style,而且在很多驱动程序的TODO文件里,都会把"checkpatch.pl fixes"作为自己的目标之一(checkpatch.pl是用来检查代码是否符合coding style的脚本)。 不可否认,coding style是仁者见仁、智者见智的事情。比如Microsoft所推崇的匈牙利命名法,在Linus看来就是及其脑残(brain damaged)的做法。也许您并不赞成Linus制定的coding style,但在提交内核驱动这件事上,最好还是以大局为重。对于这么一个庞大的集市式的开发来说,随意书写代码必将带来严重的可维护性的灾难。 一些辅助工具 当代码量达到一定程度时,手动去检查和修改coding style是非常繁琐的工作,幸好,我们还有一些工具可以使用。 scripts/checkpatch.pl 这是一个检查代码是否符合内核编码规范的的脚本。顾名思义

linux - 守护进程脚本

半腔热情 提交于 2020-03-26 11:17:46
cat >daemon.sh <<EOF #!/bin/sh while true; do #启动一个循环,定时检查进程是否存在 server=\`ps aux | grep server | grep -v grep\` if [ [ ! \$server ]]; then #如果不存在就重新启动 nohup server -c 1 >> server.log & #启动后沉睡10s sleep 10 fi #每次循环沉睡10s sleep 5 done 来源: 51CTO 作者: f1yinsky 链接: https://blog.51cto.com/f1yinsky/2421878

Linux 虚拟机 generating /run/initramfs/rdsosreport.txt问题

有些话、适合烂在心里 提交于 2020-03-26 11:16:23
Centos 7 断电导致 generating /run/initramfs/rdsosreport.txt 问题 物理断电,有时候会出现 generating “/run/initramfs/rdsosreport.txt” entering emergencymode. exit the shell to continue type “journalctl” to view system logs. you might want to save “/run/initramfs/rdsosreport.txt” to a usb stick or /boot after mounting them and attach it to a bug report。 处理步骤: 1. 切换到 /dev/mapper 目录 查找 *-root 文件,*代表通配符 (如centos系统,文件为:centos-root)。 cd /dev/mapper 2. 执行 xfs_repair /dev/mapper/*-root 或 xfs_repair /dev/mapper/*-root -L   xfs_repair /dev/mapper/*-root   xfs_repair /dev/mapper/*-root -L   最后reboot就行了 * 注意:   两个命令不一定哪个能成功

Linux Centos7安装anaconda3和jupyter

天涯浪子 提交于 2020-03-26 11:13:07
Linux Centos7安装anaconda3和jupyter notebook 安装anaconda3 anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 一、下载安装文件链 下载地址1(官方网站) 下载地址2(清华开源镜像) 下载地址主页面如下图所示,选择适合的版本下载到linux系统中 二、将下载好的文件上传到Linux系统中 使用xftp或xshell中使用rz命令等方式。 三、上传完毕后,开始安装 1、执行命令安装 [root@localhost application]# pwd /root/application [root@localhost application]# ls Anaconda3-5.0.1-Linux-x86_64.sh [root@localhost application]# sh Anaconda3-5.0.1-Linux-x86_64.sh 2、修改环境变量 1) 打开全局环境变量配置文件/etc/profile vim /etc/profile 2) 在全局配置文件中加入 export PATH=/root/anaconda3/bin:$PATH 3) 使环境变量立即生效 source /etc/profile` PS:第一步和第二步可以合并为: echo "export

Linux nfs

谁说胖子不能爱 提交于 2020-03-26 10:52:31
nfs简介 1.1 nfs特点 ●NFS (Network File System) 即网络文件系统,是FreeBSDP支持的文件系统中的一种, 它允许网络中的计算机之间通过TCP/IP网络共享资源。 ●在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。 ●nfs适用于Linux与Unix之间实现文件共享,不能实现L inux与Windows间的文件共享功能。 ●nfs是运行在应用层的协议,其监听于2049/tcp和2049/udp套接字上 ●nfs服务只能基于IP进行认证,这也是它的缺点之一 TCP/IP协议: TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。 OSI七层模型: 应用层 网络服务与最终用户的一个接口。 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP 表示层 数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层) 格式有,JPEG、ASCll、DECOIC、加密格式等 会话层 建立、管理、终止会话。(在五层模型里面已经合并到了应用层) 对应主机进程,指本地主机与远程主机正在进行的会话

Linux下PHP扩展pdo_mysql

北慕城南 提交于 2020-03-26 10:26:17
PHP扩展的安装方式通常分为两种: 1. 随同PHP编译 2. 生成单独的.so文件 PHP编译安装之后可能需求扩展一些组件比如pdo_mysql,gd什么的,好在php5中有一个phpize工具可以帮助我们轻松的扩展PHP而不需要重新编译PHP,笔者在扩展pdo_mysql却遇了一些问题,特与大家分享: 情况描述: phpinfo()显示 pdo support enabled pdo drivers sqlite2, sqlite 没有支持mysql 最初按时下面的方法来扩展【 注意下面这个方法没有成功 】: 在php的原码安装包里,进入到etc/pdo_mysql里。假设你的php是安装在/www/bin/php里的。执行/www/bin/php/bin/phpize ./configure –with-php-config=/usr/local/php/bin/php-config 经过configure就可以make了 make make install 注意pdo_mysql的全路径,我的是: /usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so 然后在/usr/local/lib/php.ini 加上一句: extension=/usr/local/php/lib/php

linux入门系列19--数据库管理系统(DBMS)之MariaDB

左心房为你撑大大i 提交于 2020-03-26 09:50:31
前面讲完Linux下一系列服务的配置和使用之后,本文简单介绍一款数据库管理系统(MySQL的兄弟)MariaDB。 如果你有MySQL或其他数据的使用经验,MariaDB使用起来将非常轻松。 本文讲解Centos7默认的数据MariaDB,由于是入门系列文章因此不会深入讲解,后面有机会在单独深入。 一、MariaDB产生背景 数据处理是软件的核心,软件的本质就是处理数据,包括输入输入、处理、输出。目前数据库主要分为关系型数据库和非关系型数据,关系型数据库主要有:SQLServer、Oracle、MySQL、MariaDB等;非关系型数据库(NoSQL)包含:Redis、HBase、MongoDB等等。 相信大家都听过或者用过MySQL数据库,它是一款市场占有率非常高的数据库管理系统,技术成熟、配置步骤相对简单,而且具有良好的可扩展性。 但是由于Oracle公司在2009年收购了MySQL的母公司Sun,因此MySQL项目也随之纳入了Oracle。被收购后,虽然MySQL仍然保持着开源软件的身份,但是却申请了多项商业专利,这就不禁让人担心其会被逐渐商业化。 一方面,MySQL本身是一款开源软件,是全球极客、程序员等技术高手在开源社区的大旗下的公共智慧结晶,自己的劳动成果被其他公司商业化自然也伤了一大批开源工作者的心

Linux安装pdo_mysql模块

烂漫一生 提交于 2020-03-26 09:48:38
网站不能访问 查看apache日志 PHP Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' (PHP 5.3.29) 网站php代码是用pdo模块去访问mysql数据库 #查看php中pdo是否支持mysql php -m | grep -i pdo_mysql #何为pdo POD(PHP Data Object)扩展在PHP5中加入,PHP6中将默认识用PDO连接数据库,所有非PDO扩展将会在PHP6被从扩展中移除。该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题。 #下载pdo_mysql源码 wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz tar -zxv -f PDO_MYSQL-1.0.2 cd PDO_MYSQL-1.0.2 /usr/local/bin/phpize #必须安装有 m4 autoconf ./configure --with-php-config=/usr/local/bin/php-config --with-pdo-mysql=/usr/local/mysql make && make install #pdo_mysql

Linux sed进阶

帅比萌擦擦* 提交于 2020-03-26 09:18:15
一、多行命令 在使用sed编辑器的基本命令时,所有的sed编辑器命令都是对单行数据执行操作。sed编辑器也可以对多行数据进行处理,包含了3个可用来处理多行文本的特殊命令。 1》N:将数据流中的下一行加进来创建一个多行组来处理。 2》D:删除多行组中的一行。 3》P:打印钓竿组中的一行。 1.单选的next命令 小写n命令会告诉sed编辑器移动到数据流下一文本行,而不用重新回到命令的最开始再执行一遍。通常sed编辑器会在移动到数据流中的下一文本行前,在这行上执行所有定义好的命令。 $ cat data4 This is the header line This is data line This is the last line $ sed '/header/{n;d}' data4 This is the header line This is data line This is the last line 2.合并文本行 单行next命令会将数据流中的下一文本行移动到sed编辑器的工作空间(称为模式空间)。多行版本的next命令(用大写N)会将下一文本行加到已经在模式空间中的文本上。 这样的作用是将数据流中的两个文本行合并到同一个模式空间。文本行仍然用换行符分隔,但sed编辑器现在会将两行文本当成一行来处理。 $ cat data2 line1 line2 line3 line4

Linux设备(\\dev)介绍

风格不统一 提交于 2020-03-26 09:06:35
linux是文件型系统,所有硬件如软件都会在对于的目录下面有相应的文件表示。对于dev这个目录,我们知道它下面的文件,表示的是linux的设 备。在windows系统中,设备大家很好理解,象硬盘,磁盘指的是实实在在硬件。而在文件系统的linux下面,都有对于文件与这些设备关联的。访问它 们就可以放到实际硬件,想想还是linux灵活了。变成文件,操作该多简单了。不用调用以前com,prt等接口了。直接读文件,写文件就可以向设备发送 读或者写操作了。 按照读写存储数据方式,我们可以把设备分为以下几种:字符型设备,块设备,伪设备。 一、设备分类 字符型设备 字符设备是指每次与系统传输1个字符的设备。这些设备节点通常为传真、虚拟终端和串口调制解调器、键盘之类设备提供流通信服务,它通常不支持随机存 取数据。 字符设备在实现时,大多不使用缓存器。系统直接从设备读取/写入每一个字符。例如,键盘这种设备提供的就是一个数据流,当你敲入“cnblogs”这个字 符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由七个字符组成的数据流。它们是顺序的,先返回c,最后是s。 块设备 块设备是指与系统间用块的方式移动数据的设备。这些设备节点通常代表可寻址设备,如硬盘、CD-ROM和内存区域。 块设备通常支持随机存取和寻址,并使用缓存器。操作系统为输入输出分配了缓存以存储一块数据