红联Linux门户

Linux帮助
  • shell多行注释详解

    2016-08-27 - 在我们写 shell 脚本的时候,特别在调试的时候经常需要注释多行命令,但在每一行前输入 # ,显得有些麻烦。 基于 shell 命令的灵活性,我们可以使用下面的方法: 方法一(这是比较稳妥的作法):可以采用 HERE DOCUMENT 特性,实现多行注释,比如 COMMENT .....

  • 如何在Snap系统中进行交叉汇编如何在Snap系统中进行交叉汇编

    2016-08-26 - 在这篇文章中,我们将介绍如何在snap系统中进行交叉汇编来把我们的应用编译并安装到目标机器中.我们知道目前Snap支持ARM及x86芯片.在我们的Classic 16.04的系统中,我们很容易地编译出我们想要的在x86上的snap文件,但是我们如何生产为ARM板生产相应的armh...

  • 程序异常监视脚本

    2016-08-25 - 这是应朋友要求帮助写的一个简单的程序异常监视脚本,主要通过分析日志文件中的异常信息关键词,检测到关键词则可以认为程序运行异常,重启线程。 脚本依赖linux下的crontab提供的定时器定时执行日志分析脚本。 为了帮助更轻松看懂脚本,这里简单讲解下几个...

  • 嵌入式linux系统重新加载DNS配置

    2016-08-25 - 对于通过wifi等移动网络联网的的嵌入式系统而言,当wifi环境发生变化(如连接新的wifi)时,DNS路由器地址很可能会被更新。在这种情况下,应用程序的DNS也要及时更新,不然应用程序的网络可能会不通,当通过http等协议访问服务器的时候,返回couldnt resolve...

  • Thor-os:使用C++编写的操作系统Thor-os:使用C++编写的操作系统

    2016-08-25 - thor-os是我在Github上看到的一个项目,它是使用C++和少量汇编语言编写的64位操作系统。这个项目是主要是为了学习。 thor-os的源代码:https://github.com/wichtounet/thor-os 特性: 目前只支持x86_64架构 抢占式多进程 键盘鼠标驱动 ACPI支持 读写ATA硬盘...

  • Linux c数组大小的限制

    2016-08-25 - 由于在处理一个大文件时,需要使用到一个很大的数组。然而,运行是显示报错。 include stdio.h #include memory.h int main() { int length = 10000000; char block[length]; memset(block,0,sizeof(block)); return 0; } Segmentation fault (core dumped)...

  • Linux C堆与栈的区别

    2016-08-25 - 一、预备知识程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) 一般由程序员分配释放, 若程序员不释放,程...

  • shell中产生随机数的方法

    2016-08-24 - echo $RANDOM RANDOM是shell内置的随机数 for i in `seq 10000`;do echo $RANDOM 1.txt;done 产生10000个随机数 cat 1.txt |awk {if(length($0)=3)print}|wc -l 统计随机数中小于等于3位数的个数 echo $((RANDOM %10)) 产生0-9的随机数 echo $RANDOM |md5sum...

  • shell统计文件里面特定字符串出现次数

    2016-08-23 - 下面三个方法都可以完成这个需求: 1.第一种方法:使用grep命令进行统计 grep -o 字符串 file | wc -l 2.第二种方法:使用awk命令进行统计 awk -v RS=@#$j {print gsub(/字符串/,)}file 3.第三种方法:另一种使用awk命令进行统计的方法 awk {s+=gsub(/字符串...

  • shell实现N位自动补零和日期循环

    2016-08-23 - 用awk的printf就可以补位: # 仅适用于数字 printf %04d\n 86 echo 86|awk {printf(%04d\n,$0)} 下面是我实际应用中使用的一个脚本,目的是批量修改hdfs上的文件名,输入两个参数即可,就是开始时间和结束时间,然后用whil去循环。 #example------nohup sh h...

  • shell脚本输出1-1000内的偶数

    2016-08-23 - 我们可以通过for循环结合seq来进行使用。 start=0; total=0; for i in $(seq $start 2 1000); do total=$(($total+$i)); done; echo $total; seq的使用指南: seq [OPTION]... LAST seq [OPTION]... FIRST LAST seq [OPTION]... FIRST INCREMENT LAST seq 10...

  • 检查硬盘告警的脚本

    2016-08-23 - 改编自网络: #!/bin/bash mail=xxxx@xxx.com; mailflag=true logfile=/root/check/checkdisk.log #limit is 90 cat /dev/null $logfile; #count ,how many disks 90%; count=`df | grep -v mnt|grep -c -E 9[19]%\|100%`; if [ $count -gt 0 ]; then echo T...

  • 远程硬盘资源监控通用脚本

    2016-08-23 - 一、建立一个通用shell脚本,通过ssh执行df命名获取对端硬盘信息。注意增加执行权限。 [iptv@ting-wo disk]$ more diskmonitor.sh #!/bin/bash mailflag=true #check parameters count if [ $# -ne 6 ];then echo 6 parameters needed:taskname client_ip_li...

  • 让程序清晰可读,并在vim中设置行号让程序清晰可读,并在vim中设置行号

    2016-08-22 - 源代码是写给人看的,或许是别人,或许是自己。 几个月可能还记得清楚,一两年的时间后,很少能准确回忆起当时的细节。 尽管first能够完成工作,但让程序清晰可读是一个良好的编程习惯,它不光易于理解,而且可以更容易的维护与修改。 所以对first.c源代码进...

  • python实现进度条

    2016-08-22 - 先说一下文本系统的控制符: \r: 将光标移动到当前行的首位而不换行; \n: 将光标移动到下一行,并不移动到首位; \r\n: 将光标移动到下一行首位。 环境: root@ubuntu16:/alex/py/jingdutiao# python3 Python 3.5.2 (default, Jul5 2016, 12:43:10) [GCC...

  • shell script编程小结--附带实例

    2016-08-22 - 前言 shell作为编程中不可或缺的一部分,平日里,我们经常会在shell中输入一些命令。有时候也需要完成一些复杂的操作,重复的输入多条相同的命令,过于费时和无趣。所以掌握shell script就显得非常有必要了,可以让你用编程的方式调用繁多的命令行工具。 最...

  • Gradle极速打包方案Gradle极速打包方案

    2016-08-22 - 简介 关于急速打包,笔者平时也是用这种常规方式打包编译的,速度比较慢,尤其是在渠道比较多的的时候笔者整理了一些网络上的资料,大致有两类方案,作个小结。 方案 1.使用美团的方案 美团使用的是python打包,脚本也并不复杂。 大致思路是,可以将我们的ap...

  • c语言qsort()函数中compare()函数参数写法

    2016-08-22 - linux的man手册中提供了一个比较函数的示例: #include stdio.h #include stdlib.h #include string.h static int cmpstringp(const void *p1, const void *p2) { /* The actual arguments to this function are pointers to pointers to char, but strcmp(3...

  • 制作一个Linux下炫酷吊炸天的log输出工具制作一个Linux下炫酷吊炸天的log输出工具

    2016-08-22 - 先看一下最后的效果: 先说一下上面打印的内容: 1.最前面的是log输出的级别,现在有NOTICE、INFO、DEBUG、WARN、ERR 5个log输出等级。 2.紧接着的是该条log输出的时间,前面的时间是秒,后面的时间是微妙。 3.然后是这条打印语句所在的文件,函数和行号 4....

  • Linux驱动开发——__stringify

    2016-08-21 - 在Linux内核中有一个宏__stringify,在include/linux/stringify.h定义如下: #ifndef __LINUX_STRINGIFY_H #define __LINUX_STRINGIFY_H /* Indirect stringification. Doing two levels allows the parameter to be a * macro itself. For example, compile...

  • linux编程中printf显示不加换行的缓冲问题

    2016-08-21 - 最近在编写linux网络编程时,总是遇到这样的事,程序逻辑没错误,但是程序运行到某个地方就停在那里了,后来才发现在prinrf()中加入换行能正常运行了,如 printf(123); 改成 printf(123\n); 就好了。 参考:在学习调试linux的线程测试程序时,发现了一个加换...

  • Linux下获取网络接口信息

    2016-08-21 - Linux下的网络接口信息在shell下可以很方便地使用ifconfig查看。同样,使用C/C++也可以很方便地获取接口信息。 netdevice是一个低级别的访问Linux网络设备的方法。此方法通过ioctl来获取网络接口的相关信息。 这里需要借助net/if.h头文件中定义的ifreq结构体...

  • linux下iconv编码转换的用法

    2016-08-21 - 一共需要三步: 1.iconv_t iconv_open(const char *tocode, const char *fromcode); //用这个函数获得句柄(iconv类型的返回值) 参数:tocode是转换后的编码类型,fromcode是转换前的编码类型。 编码类型有很多根据自己实际需要填参数。 2.size_t iconv(ico...

  • 通过shell脚本删除代码里面定义但未使用的变量

    2016-08-21 - 对于大的工程尤其是测试工程,会有很多的编译告警,尤其是定义但未使用的变量,数量太多修改起来很费时,所以通过脚本解决。 首先:先将编译的日志保存下来。 例如:gcc -o tets test.c log.log 21 之后在你编译的目录运行脚本./replace_unused.sh log.log即...

  • Linux平台下Python脚本编程入门(二)Linux平台下Python脚本编程入门(二)

    2016-08-20 - 在Linux 平台下 Python 脚本编程入门(http://www.linuxdiyf.com/linux/23409.html)系列之前的文章里,我们向你介绍了 Python 的简介,它的命令行 shell 和 IDLE(译注:python 自带的一个 IDE)。我们也演示了如何进行算术运算、如何在变量中存储值、还有...

  • Linux非阻塞connect

    2016-08-19 - 套接字执行I/O操作有阻塞和非阻塞两种模式。在阻塞模式下,在I/O操作完成前,执行操作的函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回-1,而不管I/O是否完成,该函数所在的线程会继续运行。 客户...

  • Linux平台下Python脚本编程入门(一)Linux平台下Python脚本编程入门(一)

    2016-08-18 - 众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写。大多数人会认为 Bash (或者其他的 shell 语言)用起来很方便,但一些强大的语言(比如 Python)会给你带来一些其它的好处。 首先,我们会使用 Python 的命令行工具,还...

  • linux多线程之读写锁

    2016-08-17 - 基本概念: 读写锁也叫做共享互斥锁。 当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞。当读写锁在读加锁状态,所有试图以读模式对它进行加锁的线程都可以得到访问权。 与互斥量相比,读写锁在使用之前必须初始化,在释...

  • linux多线程之互斥锁

    2016-08-17 - 基本概念: 互斥变量是用pthread_mutex_t数据类型表示的。在使用互斥变量以前,必须首先对它进行初始化,可以把它设置为常量PTHREAD_MUTEX_INITIALIZER(只适用于静态分配的互斥量),也可以通过调用pthread_mutex_init函数进行初始化。如果动态分配互斥量(例...

  • linux多线程之条件变量linux多线程之条件变量

    2016-08-16 - 基本概念: 条件变量是线程可用的另一种同步机制。条件变量给多个线程提供了一个会合的场所。条件变量与互斥量一起使用时,允许线程以无竞争的方式等待特定条件发生。 条件变量本身是互斥量保护的。线程在改变条件状态之前必须首先锁住互斥量。 在使用条件变...

  • linux多线程之自旋锁linux多线程之自旋锁

    2016-08-16 - 基本概念: 何谓自旋锁?它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。...

  • linux多线程之屏障linux多线程之屏障

    2016-08-16 - 基本概念: 屏障(barrier)是用户协调多个线程并行工作的同步机制。屏障允许每个线程等待,直到所有的合作线程都达到某一点,然后从该点继续执行。 一、初始化与销毁 PTHREAD_BARRIER_DESTROY(P) POSIX Programmers ManualPTHREAD_BARRIER_DESTROY(P) NAME...

  • linux驱动ioctl函数

    2016-08-16 - 一、ioctl的简介: 虽然在文件操作结构体structfile_operations中有很多对应的设备操作函数,但是有些命令是实在找不到对应的操作函数。如CD-ROM的驱动,想要一个弹出光驱的操作,这种操作并不是所有的字符设备都需要的,所以文件操作结构体也不会有对应的函...

  • linux下如何处理命令行参数getopt函数

    2016-08-16 - 方法一 在Linux这类操作系统中,有大量的命令行处理程序,之前测试SPI的时候./mxc_spi_test1.out -D 0 -s 1000000 -b 8 E6E0 参数非常多,这么多的命令行参数它是怎么去分析的呢? 首先第一种方法是 freescale提供的例程里一种方法。 for(i = 1; i argc; i++...

  • Qt简单串口调试助手源码Qt简单串口调试助手源码

    2016-08-16 - 对于一个做嵌入式的人来讲,最熟悉的上位机软件就是串口调试助手了,所以开始学Qt的时候,就想着要实现一个串口调试肋手,今天终于写的差不多了,把他共享出来。也感谢那些网上开源的人们对我的帮助,谢谢! 1.开发环境ubuntu16.04+Qt5.6.1 2.串口调试助手效...

  • xenomai与普通linux进程之间通信——XDDP(nRT->RT)xenomai与普通linux进程之间通信——XDDP(nRT->RT)

    2016-08-16 - 上次测试了,从xenomai实时层到linux普通进程之间的通信。 有朋友评论,并指出反向如何?非实时到实时进程之间的通信 并提出了非常好的一个问题,非实时进程向实时进程传说数据的时候,实时进程如何知道有数据发来,并实时响应? 第一阶段,我先研究了下,没...

  • xenomai与普通linux进程之间通信——XDDP(RT->nRT)xenomai与普通linux进程之间通信——XDDP(RT->nRT)

    2016-08-16 - * * XDDP-based RT/NRT threads communication demo. * * Real-time Xenomai threads and regular Linux threads may want to * exchange data in a way that does not require the former to leave * the real-time domain (i.e. secondary mode). Message...

  • arm-linux-gcc4.4.3编译s3c2410平台linux内核

    2016-08-15 - 写在前面:2.6.14版本的内核用arm-linux-gcc4.4.3没有编译成功,下载2.6.37版本的内核用arm-linux-gcc4.4.3编译通过。 一、首先下载linux内核: linux-2.6.14.tar.bz2 下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2 二、解压l...

  • 在Windows上打造出自己的Linux开发环境在Windows上打造出自己的Linux开发环境

    2016-08-15 - PS:最新版的win10内嵌了Linux子系统,默认是关闭的,在这个Linux子系统上能跑一些bash东西,至于具体到什么程度,还请自己去探索,这里不作讨论,我用的是win7. 先说个前提吧,就是我用的是win7,硬盘快满了,不想装VM,不想装Linux双系统,不想租服务器,...

  • Linux内核缺页

    2016-08-15 - 整个缺页异常的处理过程非常复杂,我们这里只简单介绍一下缺页涉及到的内核函数。 当CPU产生一个异常时,将会跳转到异常处理的整个处理流程中。对于缺页异常,CPU将跳转到page_fault异常处理程序中,该异常处理程序会调用do_page_fault()函数,该函数通过读...