红联Linux门户

Linux帮助
  • edx启动过程分析edx启动过程分析

    2016-10-11 - 我是在Ubuntu-14.04.05的系统里安装的edx,这个版本的Ubuntu的启动系统应该是upstart---相比于BSD,Linux的启动系统种类多而繁杂,变化快,一会是SystemV,一会是Upstart,一会又是Systemd,几乎让我抓狂---但是Ubuntu同时也兼容SystemV的启动方式,这就使复...

  • Python根据操作系统自动调用创建文件目录小脚本

    2016-10-11 - 工作中经常碰到这种情况:脚本开发是在本地(Windows),然后等脚本写好测好后放到生产服务器(Linux)。这就涉及到脚本在两种操作系统上的迁移和文件目录使用问题。以下小脚本虽然简单但还是很实用的。 import os import platform # set path def doc_path(...

  • Linux Shell发邮件笔记

    2016-10-11 - Linux作为首屈一指的服务器级别的操作系统,邮件系统的使用非常简单(一行命令),虽然网上已经有很多Shell发邮件的文章帖子足够参考使用,例如这一篇写的比较翔实[附1],本文基本上也是按其过程操作,这里自己再写一遍是为了以自己的方式总结和学习。 ①安...

  • Java Runtime执行系统命令行程序Java Runtime执行系统命令行程序

    2016-10-11 - 前面介绍通过 Java 的 Runtime 类执行操作系统命令行程序:Java调用linux系统shell执行命令(http://www.linuxdiyf.com/linux/24919.html)。最近项目中又有需要用这个方法,在使用过程中遇到了一些新的问题,感觉以前没有弄清楚,故在此做补充学习记录。 先...

  • Java调用linux系统shell执行命令

    2016-10-11 - 在Linux操作系统上可以执行本地命令,并返回字符串。 在CentOS 6.3上已经测试正常运行。 package com.cz.shell; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import...

  • linux kernel是如何做到释放仅在启动时使用的内存的?

    2016-10-09 - 你在哪里 走遍千山万水,终于找到了你。 void free_initmem(void) { free_init_pages(unused kernel, (unsigned long)(__init_begin), (unsigned long)(__init_end)); } 啥也不说了,看这个函数名大家就知道是释放启动过程中使用的内存空间的。 只是因为在代...

  • 12个最佳的免费学习编程的游戏网站12个最佳的免费学习编程的游戏网站

    2016-10-09 - 学习编程虽然对有些人来说是件乐事,但是对大多数人来说仍然是一件比较枯燥困难的事情。当然,面临这样困惑的人,并不是只有你一个,所以,这世界上就出现了许多寓教于乐的通过游戏的形式来教你编程的网站。 在这篇文章中,我们对 200 多个编程游戏网站的各...

  • 对linux多路复用Epoll模型的水平出发模式和边缘触发模式的理解

    2016-10-08 - 水平触发通知又叫低速模式,是linux epoll模型的默认方式。对于此方式《Linux/Unix系统编程手册(下册)》中的解释是:如果文件描述符上可以非阻塞地执行I/O系统调用,此时认为它已经就绪。 对此,我的理解是:某个I/O实践就绪,例如,文件缓冲区收到了5个字...

  • qemu搭建kernel学习环境qemu搭建kernel学习环境

    2016-10-08 - qemu简介 先看看维基百科的解释,什么是qemu QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由KVM(早期为kqemu加速器,现在kqemu已被KVM替换)这个开源...

  • shell关于取得参数的问题shell关于取得参数的问题

    2016-10-08 - 遇到一个问题,比如我只需要取的脚本传入的参数的从第二个开始的到后面的参数,怎么取? $@是取的所有的参数,现在需要排除第1个参数。 刚开始想能不能用while循环把所有参数循环取出到新的变量,从第二个开始,这样就可以了。 #!/bin/bash num1=$1 num2=$2...

  • Hadoop流实现WordCount程序样例Hadoop流实现WordCount程序样例

    2016-10-08 - Hadoop提供了一个API,允许用户使用任何脚本语言写Map函数或Reduce函数。Hadoop流的关键时,它使用UNIX函数标准作为程序与Hadoop之间的接口。因此,任何程序只要可以从标准输入流中读取数据并且可以写入数据到标准输出流,那么就可以通过Hadoop流使用其他语...

  • Linux中的简单运算Linux中的简单运算

    2016-10-06 - Bash Shell 中的数学运算 在这里赋值运算是用 = 但是赋值的时候左右两边不能用空格,否则会出现错误。因为bash shell中,命令和和操作对象是用空格隔开的,加空格会被默认当成命令去解析。 我们可以使用let符号进行简单的数学运算,eg: 在Linux中我们定义一...

  • Linux shell中的数组和关联数组Linux shell中的数组和关联数组

    2016-10-06 - 普通数组 1.数组的定义 在Linux shell中定义一个普通的数组很简单,首先我们先给数组命名(当然要符合所有的命名规则咯)。定义数组的一般格式就是: array_name=(element1 element2 element3 ...) 数组名=(元素1 元素2 元素3 。。。) 数组的定义用的是圆...

  • Android内核开发 Goldfish Linux Kernel编译及安卓虚拟机测试

    2016-10-06 - 1、配置交叉编译环境 作者用的是android-ndk的/交叉编译工具 方法一:修改环境变量(不推荐) 编辑配置文件 sudo vim /etc/profile 添加环境变量 export ARCH=arm export SUBARCH=arm export PATH=$PATH:/mnt/workbench/android-ndk-r10b/toolchains/arm-linux...

  • Android内核开发 Linux Java编程调用内核模块设备驱动

    2016-10-06 - 本文目的为Linux系统环境下: 1、编写内核模块程序并编译 2、加载内核模块 3、编写Java程序调用内核模块 功能为向内核模块虚拟设备写字符串,再从内核模块虚拟设备读出字符串长度。 1、编译加载内核模块 见另文《 Android内核开发 Linux C编程调用内核模块设...

  • 使用Android NDK和Java测试Linux驱动使用Android NDK和Java测试Linux驱动

    2016-10-06 - 接在Android模拟器和Ubuntu上测试Linux驱动(http://www.linuxdiyf.com/linux/24793.html) 三、使用AndroidNDK测试Linux驱动 在Android系统中Linux驱动主要的使用者是APK程序。因此,Linux驱动做完后必须要用APK程序进行测试才能说明Linux驱动可以正常使用...

  • Android内核开发 Linux C编程调用内核模块设备驱动

    2016-10-06 - 本文目的为Linux系统环境下: 1、编写内核模块程序并编译 2、加载内核模块 3、编写C程序调用内核模块 功能为向内核模块虚拟设备写如字符串,再从内核模块虚拟设备读出字符串长度。 1、word_count.c文件 #includelinux/module.h #includelinux/init.h #includ...

  • C++实现文件夹复制

    2016-10-06 - 语言:C++ 环境:Windows10 x64 visual sudio 2013 Linux Ubuntu16.04 gcc 说明:封装了一个类用于复制文件夹到另一指定目录,不删除源文件,不改变源文件/文件夹名。 注意:只能复制指定文件夹下的文件,无法处理子目录(以后再改),windows下要用绝对路径...

  • Wget下载进度条是如何实现的?Wget下载进度条是如何实现的?

    2016-10-04 - 自从有一次用过wget后对它如何实现以下这样的进度条有些兴趣,当然做为一个不入流的程序员心里也是有自己的想法。 上图是wget进度条变化。 今天搜索到wget老家https://www.gnu.org/software/wget/,下载了1.9的源码,找到progress.c。 /* The progress bar:...

  • C语言调用Window/Linux上的各种应用程序

    2016-10-03 - 前言 大一也曾自学过C,但是感觉学的都是些皮毛的东西,于是准备重新学点新东西。 软件 之前写c的时候使用的是VC6.0,这次准备使用Visual Studio,不过VS占用的内存着实大啊,C盘几乎都快满了。 代码 window上: system(ipconfig);//查看IP system(notepad);...

  • 说说LINUX程序内存管理那些事

    2016-10-03 - 在LINUX系统中,在内存管理方面,为考虑到简便高效,就像UNIX那样,有时会出现这样的情形,刚刚释放的内存,这时内存已经是无效的了,但是仍然可以访问,这是因为暂时释放的区域实际上根本就没有真正地回收,不过可能过不一会儿就变成无效的了,这是一种延迟...

  • awk系列:如何使用awk语言编写脚本awk系列:如何使用awk语言编写脚本

    2016-10-03 - 从 awk 系列开始直到第 12 部分(http://www.linuxdiyf.com/linux/23679.html),我们都是在命令行或者脚本文件里写一些简短的 awk 命令和程序。 然而 awk 和 shell 一样也是一个解释型语言。通过从开始到现在的一系列的学习,你现在能写可以执行的 awk 脚本...

  • Java web项目在linux环境下自动编译和部署脚本

    2016-10-01 - 自动编译脚本 build.sh,放置在项目根目录下。 #!/bin/bash # check args # init path CURRPATH=`pwd` LIBDIR=$CURRPATH/WebContent/WEB-INF/lib SRC=$CURRPATH/src CLASS=$CURRPATH/WebContent/WEB-INF/classes if [ -a $CLASS ]; then rm -rf $CLASS/* els...

  • Shell最多可以输入多少个参数?

    2016-10-01 - 在脚本编写过程中,通常会涉及到参数的输入。譬如,sh 1.sh 10 20,在执行1.sh这个脚本中,10即为第一个参数,20即为第二个参数。有时,就会有这个疑惑,即shell脚本最多可以支持多少个变量呢?疑惑之余,编写了如下脚本,可求出Shell脚本中可输入参数的最大...

  • 科学音频(二):如何使用Octave对音频文件进行基本数学信号处理科学音频(二):如何使用Octave对音频文件进行基本数学信号处理

    2016-09-30 - 在前一篇的指导教程(http://www.linuxdiyf.com/linux/24013.html)中,我们看到了读、写以及重放音频文件的简单步骤,我们甚至看到如何从一个周期函数比如余弦函数合成一个音频文件。在这篇指导教程中,我们将会看到如何对信号进行叠加和倍乘(调整),并应...

  • Linux下chown(),fchown(),fchownat,lchown()函数用法Linux下chown(),fchown(),fchownat,lchown()函数用法

    2016-09-30 - 代码: #include unistd.h int chown(const char *pathname,uid_t owner,gid_t group); int fchown(int fd,uid_t owner,gid_t group); int fchownat(int fd,const char *pathname,uid_t owner,gid_t group,int flag); //4个函数的返回值:若成功,返回0;若出...

  • linux下创建symlink、symlinkat和readlink、readlinkat函数

    2016-09-30 - linux下创建和读取符号链接symlink、symlinkat和readlink、readlinkat函数使用心得。 代码: #includeunistd.h int symlink(const char*actualpath,const char *sympath); int symlinkat(const char *actualpath,int fd,const char *sympath); 两个函数返回...

  • 在linux内核文件中添加自己的驱动,添加自己的linux驱动在linux内核文件中添加自己的驱动,添加自己的linux驱动

    2016-09-29 - 在我们学习了linux的驱动之后,我们都想编写一个linux驱动验证一下自己是否写的对,那么我们如何在Linux内核中编译自己的驱动呢?如何加自己的linux驱动?下面我们来试试: 目标内核:linux-kernel 2.6.28; 1.进入你的内核源码文档,创建一个DoneLin_Driver...

  • unix/linux给fork()出的子进程改名、重命名

    2016-09-29 - 问题描述: 在一个进程中,负责监听数据,然后派发给fork出来的子进程处理,系统需要为了显示、及后面kill时可以只杀对应子进程(一开始没对子进程id进行保存,也不想这么做),要对fork出来的进程重新命名。 案例: 父进程:AbmServer -HB -f1 子进程1:Abm...

  • 使用requests.get下载大文件-Python

    2016-09-27 - 当使用requests的get下载大文件/数据时,建议使用使用stream模式。 当把get函数的stream参数设置成False时,它会立即开始下载文件并放到内存中,如果文件过大,有可能导致内存不足。 当把get函数的stream参数设置成True时,它不会立即开始下载,当你使用iter...

  • Python实现多线程下载文件Python实现多线程下载文件

    2016-09-27 - 本文要用Python实现简单的多线程下载文件,这可以显著减少下载一个文件所用的时间。 基本步骤: 1.把要下载的文件平均分成几块 2.每个线程分别下载对应的块 3.把各块写入到文件中相应的位置 使用到的模块 pip install requests # 负责下载文件 pip install t...

  • Linux内核定时器的使用

    2016-09-26 - 内核定时器的结构体定义在include/linux/timer.h: struct timer_list { /* * All fields that change during normal runtime grouped to the * same cacheline */ struct list_head entry; unsigned long expires; struct tvec_base *base; void (*function...

  • Linux运行时动态库搜索路径优先级

    2016-09-26 - LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别 LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下: LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库...

  • 源码级调试C库源码级调试C库

    2016-09-26 - 在《使用GDB调试C库》(http://www.linuxdiyf.com/linux/24479.html)中提到过调试C库的问题,一开始的办法是使用ubuntu提供的libc6-dbg来调试,后来觉得这个办法并不完美,所以文章后续给出了使用源码编译glibc的办法,觉得还不够详细,因此这篇文章重新来...

  • 使用GDB调试C库使用GDB调试C库

    2016-09-26 - 用gdb调试程序时,一般的函数都可以step进去,可是C库函数却直接跳过了。 网上找了些资料,记录一下! 1.安装C库的debug版本 sudo apt-get install libc6-dbg 安装完后,在/usr/lib目录下会多出一个debug目录,里面有安装的debug版c库的动态链接文件 2.编译...

  • linux避免僵死进程方法总结linux避免僵死进程方法总结

    2016-09-26 - 一、什么是僵死进程? 一般情况下,程序调用exit(包括_exit和_Exit,它们的区别这里不做解释),它的绝大多数内存和相关的资源已经被内核释放掉,但是在进程表中这个进程项(entry)还保留着(进程ID,退出状态,占用的资源等等),你可能会问,为什么这么麻...

  • linux中mdelay()与msleep()的区别

    2016-09-25 - 在Linux Driver开发中,经常要用到延迟函数:msleep,mdelay/udelay. 虽然msleep和mdelay都有延迟的作用,但他们是有区别的. 1.)对于模块本身 mdelay是忙等待函数,在延迟过程中无法运行其他任务.这个延迟的时间是准确的.是需要等待多少时间就会真正等待...

  • Linux下Python实现按任意键退出

    2016-09-25 - 某天在群内有同学问到,在python下我用input或者raw_input都得输入完后回车才能获取到输入的值,那如何实现任意键退出暂停等功能呢,我当时也没有多想,因为接触python时间也不算长,主要还是Linux下的。 当然,Windows系统下会稍微简单一些,Windows系统下...

  • Linux shell脚本攻略--数学运算

    2016-09-25 - 在bash shell中,可以采用(1) let (2) (()) (3) [] 进行基本的算数运算。在高级操作中,可以采用(4) expr (5) bc进行高级运算。 (1)、let 命令 在用普通的变量赋值方法定义数值的时候,变量是被存储成字符串的形式。比如 sk_lavender@sk-pc:~$ num=1 sk_lave...

  • Linux套接字实现服务器和客户端通信Linux套接字实现服务器和客户端通信

    2016-09-25 - 套接字是一种进程间通信的方法,不同于以往介绍的进程间通信方法的是,它并不局限于同一台计算机的资源,例如文件系统空间、共享内存或者消息队列。 套接字(socket)是一种通信机制,客户/服务器系统既可以在本地单机上运行,也可以在网络中运行。 套接字工...