红联Linux门户

Linux帮助
  • linux用户登录就发微信提醒linux用户登录就发微信提醒

    2016-04-01 - 有时候可能怕密码共享了之后有人乱等,查看last可能有点晚,以前做了个zabbix微信报警,想着就写个登录的微信提醒。 用户登录用加载/etc/profile 所以命令写这里面,顺便写个微信报警的脚本,主要模仿zabbix的。 #!/bin/bash ###SCRIPT_NAME:weixin.sh### ##...

  • Linux利用inotify-tools的inotifywait实现:当文件夹内容改变时自

    2016-03-30 - 当我在建一个rpm包管理服务器时,里面有个这样的要求,要求当有新的rpm存入指定目录时,自动执行一段脚本去对这个rpm包进行检测。 这里利用了inotify-tools的inotifywait的模块,里面有个事件处理的参数-e,见它的手册。 我的代码如下: #/bin/bash ########...

  • gedit变身为编程利器的简单配置gedit变身为编程利器的简单配置

    2016-03-29 - 用了Linux有半年多了(ubuntu-debian),之前敲代码都是通过IDE来编译运行,一直有转Vim的想法,可是那玩意太高端,暂时玩不过来。前两天发现gedit加上各种插件简直就是神器,这两天一直在抽空配置,试用了下,感觉很爽,下面来分享下我的心得。 操作系统:D...

  • Android源码目录结构说明

    2016-03-28 - 在学习Android的过程中,学习写应用还好,一开始不用管太多代码,直接调用函数就可以了,但是工作中却需要修改到framework之类的东东。 所以感觉开始纠结了,又是初学,很多不懂,所以就去找了关于源代码结构介绍的,感觉有很大帮助,所以转载过来分享。 And...

  • Linux下读写函数

    2016-03-27 - 整理归纳Linux下用到的四个读写相关的函数:open() write() read() close() 1.open()函数 功能:以指定的方式打开或者创建文件 所需头文件: #include sys/types.h #include sys/stat.h #include fcntl.h 函数原型: int open(const char* pathname,int flag...

  • Linux获取进程执行时间Linux获取进程执行时间

    2016-03-27 - 1、前言 测试一个程序的执行时间,时间包括用户CPU时间、系统CPU时间、时钟时间。之前获取之前时间都是在程序的main函数用time函数实现,这个只能粗略的计算程序的执行时间,不能准确的获取其他时间。在看《APUE》时,书中有关程序时间测试程序,非常正规,...

  • linux获取系统启动时间linux获取系统启动时间

    2016-03-27 - 1、前言 时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同。linux内核里面用一个名为jiffes的常量来计算时间戳。应用层有time、getdaytime等函数。今天需要在应用程序获取系统的启动时间,百度了一下,通过sysinfo中的uptime可...

  • Linux下C结构体初始化Linux下C结构体初始化

    2016-03-27 - 1、前言 今天在公司看一同事写的代码,代码中用到了struct,初始化一个struct用的是乱序格式,如下代码所示: typedef struct _data_t { int a; int b; }data_t; data_t data = { .a = 10, .b = 20, }; 通常初始化一个结构体的方式是按序初始化,形如:data_t...

  • shell中函数返回值shell中函数返回值

    2016-03-27 - 1、shell函数介绍 语法: [ function ] funname [()] { action; [return int;] } 说明: (1)可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。 (2)参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。...

  • timerfd使用总结

    2016-03-26 - timerfd是Linux为用户程序提供的一个定时器接口。这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,所以能够被用于select/poll的应用场景。timerfd是linux内核2.6.25版本中加入的借口。 timerfd、eventfd、signalfd配合epoll使用,可以构造出...

  • Linux sudo权限管理的脚本

    2016-03-26 - 最近在做一个管理linux权限管理的系统,涉及到用户可以向系统申请登录,并获取sudo权限,这一块用shell是最好的选择,为了备忘,将其记录下来: 1、为用户添加sudo权限 流程:利用linux会去读取/etc/sudoer.d/下面的文件,将其作为sudo权限的列表,所以先在...

  • Linux下操作gpio(两种方法,驱动和mmap)

    2016-03-25 - 目前我所知道的在linux下操作GPIO有两种方法: 1.编写驱动,这当然要熟悉linux下驱动的编写方法和技巧,在驱动里可以使用ioremap函数获得GPIO物理基地址指针,然后使用这个指针根据ioctl命令进行GPIO寄存器的读写,并把结果回送到应用层。这里提供一点程序片断...

  • Linux平台下贪吃蛇游戏的运行Linux平台下贪吃蛇游戏的运行

    2016-03-25 - 1.参考资料说明: 这是一个在Linux系统下实现的简单的贪吃蛇游戏,同学找帮忙,我就直接在Red Hat中调试了一下,参考的是百度文库中maosuhan仁兄的文章,结合自己的一些实践遇到的问题,整理后,将解决方案和大家分享一下。 2.开发环境: linux+gcc+netbea...

  • linux获取线程ID

    2016-03-24 - pthread_self()获取当选线程的ID。 这个ID与pthread_create的第一个参数返回的相同。 但是与ps命令看到的不同,因此只能用于程序内部,用于对线程进行操作。 #include stdio.h #include stdlib.h #include unistd.h #include pthread.h void* fun(void* p) {...

  • shell脚本判断执行用户

    2016-03-24 - 在脚本中,判断执行者是否为root。 判断方法1, #!/bin/bash if [ `whoami` != root ];then echo only root can run me exit 1 fi 判断方法2(但是用sudo执行回报脚本有语法错误,不知为何,有知道的高手请回复我)。 if [ $UID == 0 ];then echo you are ro...

  • linux USB虚拟串口设备名的修改

    2016-03-23 - 在LINUX 中,会经常用到USB转串口的设备。而LINUX中通用的做法是根据插入USB设备的先后顺序依次注册ttyUSB0\1\2\3..等设备,但是这样就有一个问题了,例如我有多个USB的口,要接多种不同USB转串口设备,那么我插上USB的顺序不同,那同一个设备注册的设备名就...

  • 如何在OCA上贡献自己的Odoo代码?如何在OCA上贡献自己的Odoo代码?

    2016-03-23 - 发起者:上海寰享网络科技有限公司 Elico Corp 前置条件:系统环境:ubuntu 14.04 LTS 笔者github 账号名:Rona111 注:以下命令皆在Linux终端输入,如果是win系统,可以下载git客户端或者用GUI图形界面输入。 一、在github上注册自己的账号,github注册网址...

  • template模板在Windows和Linux下的不同用法

    2016-03-22 - 以下内容说明:windows是采用VS2010,Linux下是使用Eclipse 20140224-0627。 一、子类继承模板基类的时候,只能继承一个指定的实例化,在子类的初始化列表中的实例化信息(本例中为string, int, double),在Windows下可以省略,在Linux下不可以省略,例子如...

  • Linux下使用两个线程协作完成一个任务的简易实现

    2016-03-22 - 刚解决了之前的那个Linux下Pthread库的问题,这次就来使用两个线程来协作,共同完成一个求和的任务。 打一下基础吧 本次需要使用到的知识点有: lpthread,编译的时候用到,相当于一个声明的效果 pthread_mutex_t 作为一个锁对象而存在 pthread_create,创建...

  • linux C判断内核版本号

    2016-03-21 - 当设备驱动需要同时支持不同版本内核时,在编译阶段,内核模块需要知道当前使用的内核源码的版本,从而使用相应的内核 API。 头文件 linux/version.h : LINUX_VERSION_CODE 内核版本的二进制表示,主、从、修订版本号各对应一个字节; KERNEL_VERSION(major...

  • 在Unix/Linux下直接执行PHP脚本文件

    2016-03-21 - 由于我们的服务器都是使用的 Linux 系统,并且都有搭建完整的 PHP 环境,所以有时候我会用 PHP 写一些执行自动化任务的脚本,但是每次执行这个 PHP 脚本都需要使用 php myscript.php 的方式,稍微有点儿啰嗦。其实,是可以直接执行 PHP 脚本文件的。 编写你...

  • 如何让程序能进入c库调试

    2016-03-20 - 今天想看看linux的c库源码,但是那源码结构比较乱,跳来跳去比较难看。于是想写个小程序进入c库调试,发现要调试c库还不容易。 写了个小程序,用gdb装载,下断点到我关注的c库函数位置,s命令回车发现进去不了,直接跳过了。 折腾了半天,终于调试进去了,总...

  • 通过GDB重新获得进程的输出

    2016-03-20 - 有时通过SecureCRT或者Putty远程ssh到主机上执行某个进程,因长时间没有交互导致ssh断链,此时该进程由init进程收留。该进程的输出也就无法获得了。 这种情况下,可以利用gdb重新获得该进程的标准输出,方法如下: 1:获得程序的进程号(PID),以某个python进...

  • 如何获取linux-gate.so.1动态库如何获取linux-gate.so.1动态库

    2016-03-20 - 经常有提到在Linux下每个可执行文件都依赖于几个最为基本的动态库,其中一个就是linux-gate.so.1。 从上面ldd给出的结果可以看出,这个linux-gate.so.1动态库有一些异样,libc.so.6的实际动态库路径在/lib/tls/i686/cmov/libc.so.6,而ld-linux.so.2是在/lib...

  • gdb重定向stdout和stderr输出到调试窗口

    2016-03-20 - 步骤一:查找需要attach的进程 # ps aux|grep prm 步骤二:使用gdb attach到进程 # gdb attach 8930 步骤三:重新定向输出日志 (gdb) call close(1) $1 = 0 (gdb) call close(2) $2 = 0 (gdb) shell tty /dev/pts/0 (gdb) call open(/dev/pts/0,2) $3 = 1 (g...

  • shell中第一行#!/bin/bash的作用

    2016-03-19 - shell中: #!/bin/bash #!/bin/ksh 这些东西是干什么的,有用吗? 有用,这些不是注释符,而是说明下面的脚本是在什么shell下面运行的,并且以该shell环境来执行脚本,一个简单的例子: #!/bin/ksh export LOG=/tmp/test.log exec $LOG 21 echo a test messa...

  • 根据设备树文件初始化linux驱动根据设备树文件初始化linux驱动

    2016-03-18 - 一、前提 新版基于ARM的Linux都会基于Device Tree去代替之前的device驱动。更加多的了解Device Tree可以访问宝哥的Bolg:ARM Linux 3.x的设备树(Device Tree) 这里只是举例在arch/arm/boot/dts中添加dtsi文件并在驱动中读取dtsi中节点信息,并将节点信息写...

  • Linux基于IPC机制实现进程间的共享内存处理Linux基于IPC机制实现进程间的共享内存处理

    2016-03-18 - 今天学习了相关于IPC(InterProcess Communication ,进程间通信)的相关知识。就做个笔记,一来让大家检查一下我的理解方面是不是有错误,二来也为了能让更多的博友们了解到相关的知识吧。 IPC的种类 IPC 的种类,一般来说下面两种使用的较多: - 共享内存...

  • 快速的知道程序中输入的大段数据哪一行没有被正确执行或输出快速的知道程序中输入的大段数据哪一行没有被正确执行或输出

    2016-03-17 - 问题: 如何快速的知道程序中输入的大段数据哪一行没有被正确执行或输出? 案例: 程序需要从文件中读取每一行进行相关的操作,并生成相应的运算结果数据文件,如果实际运行发现输出的文件个数少于输入的文件行数,如何定位是少了哪些行的数据?也就是说怎么...

  • NanoPC-T2 Linux Kernel对GPIO的初始化

    2016-03-17 - 之前在看NanoPC-T2 的Linux kernel中的以太网驱动程序发现,没有找到对以太网GPIO进行初始化的操作,感觉比较郁闷,今天对代码进行进一步分析,发现SOC的GPIO是统一进行配置的。在arch/arm/plat-s5p4418/nanopi2/board.c中有bd_gpio_init这个函数,而SOC每个...

  • Linux下curses库的安装和函数的使用

    2016-03-16 - curses库是一组函数,程序员可以用它们来设置光标的位置和终端屏幕上显示的字符样式。curses库最初是由UCB的开发小组开发的。大部分控制终端屏幕的程序使用curses。曾经由一组简单的函数组成的库现在包括了许多复杂的特性。 Ubuntu下安装方法: sudo apt-get...

  • 基于go-ceph创建CEPH块设备及快照

    2016-03-16 - 一、代码执行前准备 1、系统中安装了CEPH集群 2、GOPATH目录下存在src/github.com/noahdesu/go-ceph代码库 3、在ubuntu 14.04下还需apt-get librados-dev和librbd-dev两个包 二、代码示例 package main import ( fmt github.com/noahdesu/go-ceph/rados gith...

  • 浅谈windows和linux下内存分配规律浅谈windows和linux下内存分配规律

    2016-03-15 - 首先先说明下,本文中代码来自牛刀教程。写的很不错。给我不少的启发。谢谢了。 我们都知道,在使用C语言时,比如定义一个数组,一个变量。那么系统都会随机的分配内存。那么你知道内存分配的规律吗? 让我们用两个实验来说明windows和linux下,内存分配方式...

  • Linux/UNIX脚本中$0,$1,$2的含义

    2016-03-15 - linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2。 STDIN就是标准输入,默认从键盘读取信息; STDOUT是标准输出,默认将输出结果输出至终端,也就是显示器之类的东西; STDERR是标准的错误信息,默认也会显示在终端上。 由于S...

  • java中在linux下利用jstack检测死锁

    2016-03-14 - 首先,编写一个死锁程序: package deadlock; public class testJstack { final static Object resource_1 = new Object(); final static Object resource_2 = new Object(); public static void main(String[] args) { Thread t1 = new Thread(t1) { public...

  • Linux内核链表

    2016-03-12 - 近期在Linux内核中使用了很多的链表操作,发现Linux设计的链表工具很精妙,来总结一下,以备今后查看。 Linux内核使用的链表 Linux内核中有大量的地方需要链表操作,但是内核仅用一套工具函数和宏就完成了任何数据结构在所有情况下的链表操作,妙啊!这个实...

  • shell,shell script简单总结

    2016-03-12 - 抽了点时间把shell script 复习了一下,现在把它总结一下写成文章。 Shell的分类及Shell Script Shell的用途就不用说了,用过Linux的肯定知道。但是shell的种类是极其丰富的,有ksh,csh,zch等等,Linux系统一般默认的是bash这个shell。也有一些shell专门用...

  • 向qt中添加库文件(以ffmpeg静态库为例)

    2016-03-12 - 在Qt中工程通过.pro文件管理,所以库文件要在.pro文件中添加。 1.添加库文件 静态库 linux:LIBS += your_lib_path/your_lib 动态库 linux:LIBS += -L your_lib_path -lyour_lib//经过测试了 win32:LIBS += your_lib_path/your_lib 例如: LIBS += -L lib/...

  • linux下的.run包的制作

    2016-03-12 - 首先开始我的唠叨几句,网上有很多.run包的制作,那为什么我还要写呢?原因很简单,他们的执行不了啊,各种错误,今天我给大家讲一个能执行的,一步一步手把手教你们。 先给大家讲讲思路: 编程前需要有的东西:install.sh文件 hello.c文件(这些文件我都放在...

  • Linux库文件和Shell可执行程序命令文件搜索路径变量的设置

    2016-03-11 - 一、库文件的搜索路径: 1、在配置文件/etc/ld.so.conf中指定动态库搜索路径(需要添加其它库文件的路径,在文件的最后添加具体的路径即可 [ 如:/usr/local/lib ],添加后保存退出,然后在命令行ldconfig 2、通过环境变量LD_LIBRARY_PATH指定动态库搜索路径...