这是我写BASH程序的招式。这里本没有什么新的内容,但是从我的经验来看,人们爱滥用BASH。他们忽略了计算机科学,而从他们的程序中创造的是大泥球(译注:指架构不清晰的软件系统)。 在此我告诉你方法,以保护你的程序免于障碍,并保持代码的整洁。 不可改...
制定新年计划是我们最喜欢做的事情之一,我们总是会在年底的时候对新的一年有一个很好的计划,但后来就把它们都抛到脑后了,直到最后全部忘记。也许,我们的计划总是过于宏伟,很多事情都是做不到的,甚至显得遥不可及。但是,今年一定会有所不同,这篇文章...
What 软件工程师的职业生涯要历经以下几个阶段:初级、中级,最后才是高级。这篇文章主要是讲如何通过 10 个步骤助你成为一名高级软件工程师。 Why 得到更多的报酬!因为你的薪水会随着你水平的提高而增加 提升你的职业生涯。成为了高级软件工程师之后,就可...
投资为某一事业奉献时间和精力,并期待有价值的结果。 0. 健康 毫无疑问,软件开发是坐的最久的工作之一。每天坐8-16个小时,期间很少休息,是增加肚子上的脂肪的绝佳方式。肥胖会让其他各种疾病风险增大,尤其是心脏...
awk 默认是用空格作为分隔符,后面的大括号需要用单引号引起来,不能用双引号,否则就得不到想要的结果,如果要指定分隔符,使用 -F 分隔符。例如从文本-rw-rr 1 root root 165 Aug 25 12:51 runAll.sh中获取165,可以使用命令: echo -rw-rr 1 root root 165...
1:设置系统允许生产core文件 在 ~/.bash_profile 中增加 ulimit -c unlimited 使用ulimit -a可以查看系统core文件的大小限制; 使用ulimit -c [kbytes]可以设置系统允许生成的core文件大小; ulimit -c 0 不产生core文件 ulimit -c 100 设置core文件最大为100...
内核是操作系统最核心的内容,主要提供硬件抽象层、磁盘及文件系统控制、多任务等功能,由于其涉及非常广泛的计算机知识,很少被人们所熟悉,因而披上了一层神秘的面纱。 本文将从零开始实现一个最简单的内核,其可以通过x86系统的GRUB引导启动,并向屏幕输...
Linux 究竟是什么? 用最简单的话说,Linux 是一个操作系统。它是一位赫尔辛基大学学生 Linus Torvalds(Linux 是 Linuss UNIX 的缩写)在 1991 年 10 月创造的。Linux 本身实际上只是其内核;它实现了多任务和多用户功能,管理硬件,分配内存并且使应用程序...
同时在线访问量继续增大 对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机 或者时不时的服务器卡一下这个问题曾经困扰了我半个多月MySQL使用是很具伸缩性的算法,因此你通常能用很少的内存运行或给MySQL更多的被存以得到更好的性能。 安装好mysql后...
作为一个命令行探索者,你或许发现你自己一遍又一遍重复同样的命令。如果你总是用ssh进入到同一台电脑,如果你总是将一连串命令连接起来,如果你总是用同样的参数运行一个程序,你也许希望在这种不断的重复中为你的生命节约下几秒钟。 解决方案是使用一个别...
1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须放在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编辑好脚本时,如果要执行该脚本,还...
作为Linux下的程序开发人员,一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了. 在本文中,将介绍如何使用autoconf和automake两个...
参考: radix tree in kernel :Trees I: Radix trees http://lwn.net/Articles/175432/ 普通的radix tree(注意,这不是内核中用的radix tree哦) http://en.wikipedia.org/wiki/Radix_tree 这里讨论的是变种的radix tree,请知悉. radix tree的核心思想是什么?...
Linux内核哈希表分析与应用 http://blog.csdn.net/tigerjb/article/details/8450995 深入分析 Linux 内核链表 http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/index.html 拿pid做hash的例子剖析linux内核哈希查找(1) http://blog.chinaunix.n...
在 Linux2.6 中,仍有三种调度策略: SCHED_OTHER、SCHED_FIFO 和 SCHED_RR。 SCHED_ORHER:普通进程,基于优先级进行调度。 SCHED_FIFO:实时进程,实现一种简单的先进先出的调度算法。 SCHED_RR:实时进程,基于时间片的SCHED_FIFO,实时轮流调度算法。 前者是...
Linux写时拷贝技术(copy-on-write) 进程间是相互独立的,其实完全可以看成A、B两个进程各自有一份单独的liba.so和libb.so,相应的动态库的代码段和数据段都是各个进程各自有一份的。 然后在这个基础上,由于代码段是不会被修改的,所以操作系统可以采用copy...
Linux下最常见的就是errno了,一般当发生错误时便会给全局变量errno赋值,其所有可能的值可查看linux的库文件,以下是查看linux v3.0的结果: /usr/include/asm-generic/errno-base.h [cpp] view plaincopyprint? prestyle= margin:0px10px;font-family:mono...
正则表达式固然是非常强大,有时对于众多的匹配规则,确实难以记忆,列出一个正则表达式语法表格,以便不时之需。 正则表达式基础知识 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体...
最近对linux批量执行的脚本很感兴趣,在网上到处找有关expect批量执行脚本,今天就给大家共享一个批量修改密码的脚本. 脚本内容: #!/usr/bin/expect#yemaosheng.comif { $argc2 } { send_user usage: $argv0 host file cmd file \n exit} # 机器列表数据格式: I...
我们使用jdk自带的jstack来分析。当linux出现cpu被java程序消耗过高时,以下过程说不定可以帮上你的忙: 1、top查找出哪个进程消耗的cpu高 21125 co_ad2 18 0 1817m 776m 9712 S 3.3 4.9 12:03.24 java 5284 co_ad 21 0 3028m 2.5g 9432 S 1.0 16.3 6629:44 j...
1.现象描述 Linux系统中,动态加载的模块往往需要实现: 1)在加载模块时,向模块传递一个参数值,且该参数值在模块运行过程中不能对其进行修改; 2)在加载模块时,向模块传递一个参数值,且该参数值在模块运行过程中根据需求对其进行动态修改。 2.关键过程...
1.简单休眠 让进程以一种安全的方式进入休眠,必须牢记两条规则: 第一条:永远不能在原子上下文中进入休眠。即是说,我们的进程不能在拥有自旋锁、顺序锁、读写锁时休眠。如果我们已经禁止了中断,也不能休眠。但是,在拥有信号量时休眠是合法的。 第二条:...
1. 序曲 在用户态,读写文件可以通过read和write这两个系统调用来完成(C库函数实际上是对系统调用的封装)。但是,在内核态没有这样的系统调用,我们又该如何读写文件呢? 阅读linux内核源码,可以知道陷入内核执行的是实际执行的是sys_read和sys_write这两个...
随着 Linux 内核的发展和成熟,更多的用户期待着 Linux 可以运行非常大的系统来处理科学分析应用程序或者甚至海量数据库。这些企业级的应用程序通常需要大量的内存才能好好运行。2.4 Linux 内核有识别相当大数量的内存的功能,但是 2.5 内核发生了很多改变,...
动态内存管理 内存管理的目标是提供一种方法,为实现各种目的而在各个用户之间实现内存共享。内存管理方法应该实现以下两个功能: 最小化管理内存所需的时间 最大化用于一般应用的可用内存(最小化管理开销) 内存管理实际上是一种关于权衡的零和游戏。您可...
本文讨论了 Linux 内核中可用的大量同步或锁定机制。这些机制为 2.6.23 版内核的许多可用方法提供了应用程序接口(API)。但是在深入学习 API 之前,首先需要明白将要解决的问题。 并发和锁定 当存在并发特性时,必须使用同步方法。当在同一时间段出现两个或...
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。 对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从...
系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。 也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。 1、系统V共享...