Unix/linux
文章平均质量分 83
LevinLin
本博客现只用于学习用,可能会转载他人的知识,若有涉及到您的版权问题,请与我联系。
> 飛雪迎春到﹐風雨送春歸
> 已是寒崖百丈冰﹐尤有花枝俏
> 俏也不爭春﹐只把春來報
> 待得山花爛漫時﹐他在叢中笑
展开
-
提供机制而不是策略
Unix/Linux的接口设计有一句通用的格言“提供机制而不是策略”。区别对待机制(mechanism)和策略(policy)是Unix设计中的一大亮点。大部分的编程问题都可以被切割成两个部分:“需要提供什么功能”(机制)和“怎样实现这些功能”(策略)。如果由程序中的独立部分分别负责机制和策略的实现,那么开发软件就更容易,也更容易适应不同的需求。 开源-展现在我们面前的是数以千转载 2012-12-28 11:11:34 · 3672 阅读 · 0 评论 -
Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
$# 是传给脚本的参数个数$0 是脚本本身的名字$1 是传递给该shell脚本的第一个参数$2 是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个$$ 是脚本运行的当前进程ID号$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误转自:http://dade转载 2013-05-22 09:50:32 · 684 阅读 · 0 评论 -
默认shell的修改
一,查看当前shell#cat /etc/shells #可以看到本系统中可以使用哪些shell #echo $SHELL #可以查看当前默认的shell二,为什么按上下键没有提示历史记录说明当前shell不是/bin/bash三,修改当前shell命令:chsh -s /bin/sh 用户名 (如果不加用户名,表示当前用户)四,c原创 2013-05-22 16:12:36 · 907 阅读 · 0 评论 -
awk编程
一,基本语法awk基本语法awk ‘script’ filesawk '{pattern + action}' 或者 awk 'pattern {action}'二,变量在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串" ",这主要取决于变量应用的上下文。下面为变量的赋值负号列表:原创 2013-05-21 22:40:45 · 1022 阅读 · 0 评论 -
如何实时查看linux下的日志
cat /var/log/*.log如果日志在更新,如何实时查看 tail -f /var/log/messages还可以使用 watch -d -n 1 cat /var/log/messages-d表示高亮不同的地方,-n表示多少秒刷新一次。该指令,不会直接返回命令行,而是实时打印日志文件中新增加的内容,这一特性,对于查看日志是非常有效的。如果想终止输出,按 Ctrl+C 即可转载 2012-10-25 19:55:07 · 96262 阅读 · 1 评论 -
su- 与su的区别
单纯使用‘ su ’切换成为 root 的身份,读取的变数设定方式为 non-login shell 的方式,这种方式很多原本的变数不会被改变,若要完整的切换到新使用者的环境,必须要使用‘ su - username ’或‘ su -l username ’, 使用login-shell方式。才会连同 PATH/USER/MAIL 等变数都转成新使用者的环境;因此使用su userName方式有时原创 2013-05-24 20:55:58 · 3866 阅读 · 0 评论 -
如何使/etc/profile中修改的配置立刻生效?
source /etc/profile但貌似只对当前有效。打开别一个终端依然没用。最好logout一下就OK了。(PS:~/.profile ;~/.bashrc 是对当前用户的配置项,/etc/profile则是系统级,针对所有用户)原创 2012-07-13 15:57:07 · 3228 阅读 · 0 评论 -
查看系统信息(cpu,内存,硬盘,网卡)
查看cpu信息 # cat /proc/cpuinfo说明: 1.process会从0开始计数,一直持续到结束。可以清楚的看到机器的cpu数目。 2.查看物理cpu关注physical id的值,该值相同的话则表示为同一颗CPU。 3.查看flag标志,如果有ht标志,则说明支持超线程技术。【详情见本文末尾】 常用的组合命令转载 2013-05-19 22:30:50 · 1183 阅读 · 0 评论 -
linux下发邮件mail
一,安装邮件传输代理程序sudo apt-get install sendmail sudo apt-get install sendmail-cf二,安装mailutils否则不能使用mail命令三,配置sendmail 默认只会为本机用户发送邮件,只有把它扩展到整个Internet,才会成为真正的邮件服务器。 vi /etc/mail/sendmail.mc原创 2013-05-25 16:49:48 · 2299 阅读 · 0 评论 -
如何手动创建一个用户
1. 建立群组 normalgroup ,假设 520 这个 GID 没有被使用!并且同步化 gshadow[root@www ~]# vi /etc/group# 在最后一行加入底下这一行!normalgroup:x:520:[root@www ~]# grpconv[root@www ~]# grep 'normalgroup' /etc/group /etc/gshado原创 2013-05-25 21:34:48 · 962 阅读 · 0 评论 -
Shell之date用法
#man date可以看到date的help文件 #date 获取当前时间 #date -d "-1week" +%Y%m%d 获取上周日期(day,month,year,hour) #date--date="-24 hour" +%Y%m%d 同上 date_now=`date+%s` shell脚本里面赋给变量值 %% 输出%符号 %a 当前域的星期缩写 (转载 2012-06-07 10:28:22 · 43147 阅读 · 2 评论 -
Linux 共享内存限制的查看与设置
ipcs -l是各种限制:-lm共享内存、-ls信号量、-lq消息队列。ipcs -lm命令查看目前系统共享内存的参数限制------ Shared Memory Limits --------max number of segments = 4096max seg size (kbytes) = 32768max total shared memory (kbytes) =原创 2013-05-13 20:08:09 · 10660 阅读 · 0 评论 -
编译linux内核源码 ubuntu
linux内核编译。 首先,sudo apt-get install linux-source 会自动安装当前版本内核的源代码到 /usr/src 然后,进入其文件夹,tar xjf linux-2.6.xx.tar.bz2 解压到相应的文件夹,再进入。然后如果想要节省配置的时间,可以 cp /boot/config-`uname -r` ./.config 。把当前系统的转载 2013-01-05 20:45:19 · 551 阅读 · 0 评论 -
epoll
epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用LT模式类似于原来的select/poll操作,只要还有没有处理的事件就会一直通知.Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中转载 2013-01-07 17:04:47 · 534 阅读 · 0 评论 -
POSIX消息队列mq_open问题
遇到 mq_open: Permission denied请看:Mounting the message queue file system On Linux, message queues are created in a virtual file system. (Other implementations may also provide s原创 2013-01-24 16:09:26 · 8905 阅读 · 0 评论 -
inet_ntoa()
功能:将一个IP转换成一个互联网标准点分格式的字符串。原型:char FAR * inet_ntoa( struct in_addr in);头文件:arpa/inet.hinet_ntoa()返回的字符串是临时装在一个静态分配的缓冲区里面,下一次调用此函数的时候缓冲区会被重写 源码如下:char *inet_ntoa (struct in_addr in){原创 2013-01-16 13:43:51 · 3302 阅读 · 0 评论 -
《Linux内核设计与实现》- Linux的进程
进程是所有操作系统的核心概念,同样在linux上也不例外。主要内容:进程和线程进程的生命周期进程的创建进程的终止1. 进程和线程进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作(比如,创建,销毁等)都是有内核来实现的。Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程,线程不过是一种特殊的进程。所以下面只讨论进程,只有当线程与进程转载 2013-01-16 11:41:51 · 830 阅读 · 0 评论 -
《Linux内核设计与实现》- 进程的调度
主要内容:什么是调度调度实现原理Linux上调度实现的方法调度相关的系统调用1. 什么是调度现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。这个管理程序就是调度程序,它的功能说起来很简单:决定哪些进程运行,哪些进程等待决定每个进程运行多长时间此外,为了获得更好的用户体转载 2013-01-16 11:46:16 · 642 阅读 · 0 评论 -
进程的状态转换
四种进程间的状态转换:1.就绪–>执行 2.执行–>就绪 3.执行–>等待 4.等待–>就绪一、进程的三种基本状态进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。就绪(Ready)状态当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。执行(Running)状态当进程已获得处理机,其转载 2013-05-17 21:14:18 · 1617 阅读 · 0 评论 -
如何查看进程的信息(线程数)
三种方法:1。 使用top命令,具体用法是 top -H 加上这个选项,top的每一行就不是显示一个进程,而是一个线程。2。 使用ps命令,具体用法是 ps -xH 这样可以查看所有存在的线程,也可以使用grep作进一步的过滤。3。 使用ps命令,具体用法是 ps -mq PID (ubuntu下貌似不能使用)转载 2013-05-19 17:22:33 · 11305 阅读 · 0 评论 -
read的用法
1. Read的一些选项 Read可以带有-a, -d, -e, -n, -p, -r, -t, 和 -s八个选项。-a :将内容读入到数值中echo -n "Input muliple values into an array:"read -a arrayecho "get ${#array[@]} values in array"-d :表示delimite转载 2013-05-19 22:27:52 · 1683 阅读 · 0 评论 -
linux下join连接
join极类似于SQL中的join的关键字功能说明:通过公共字段将两个文件合并。连接方式如下:内连接 格式:join 左连接 格式:join -a1 右连接 格式:join -a2 全连接 格式:join -a1 -a2 参数说明: -a 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。 -e 若[文件1]与[文件2]中找不原创 2013-05-26 10:52:46 · 2897 阅读 · 0 评论 -
awk的混合编程
将密码文件,格式化下变得好看些,第三个字段过期时间要转换成正常的日期。可使用以下几种命令:1)cat /etc/shadow | awk 'BEGIN {FS=":"};{OFS="\t"};{ORS=""} {printf "%-20s\t",$1};system(" echo -n `date --date=\"19700101 +"$3" days\" +%Y%m%d`");{pri原创 2013-05-21 20:05:45 · 797 阅读 · 0 评论 -
文件系统--读取/etc/passwd的顺序
/etc/passwd中的东东怎么读出来的呢?首先我们列出各目录的inode信息:root@ubuntu:/home/jack# ll -di / /etc /etc/passwd 2 drwxr-xr-x 23 root root 4096 2013-05-26 10:05 //655364 drwxr-xr-x 132 root root 12288 2013-05原创 2013-05-26 22:24:43 · 1327 阅读 · 0 评论 -
SIGTSTP和SIGSTOP的区别
SIGTSTP与SIGSTOP都是使进程暂停(都使用SIGCONT让进程重新激活)。唯一的区别是SIGSTOP不可以捕获。 修改了SIGTSTP的handler之后,还是要在handler内部将该handler复原,然后重新触发SIGTSTP信号,来触发系统的默认处理的,这样才能将进程给suspend。原创 2013-11-29 23:11:09 · 25283 阅读 · 3 评论 -
strace实现原理
引子:1.在Linux系统中,进程状态除了我们所熟知的TASK_RUNNING,TASK_INTERRUPTIBLE,TASK_STOPPED等,还有一个TASK_TRACED。这表明这个进程处于什么状态?2.strace可以方便的帮助我们记录进程所执行的系统调用,它是如何跟踪到进程执行的?3.gdb是我们调试程序的利器,可以设置断点,单步跟踪程序。它的实现原理又是什么?所转载 2013-11-29 23:15:05 · 5494 阅读 · 0 评论 -
Linux进程状态
Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。 在下文将对进程的R、S、D、T、Z、X 六种状态做个说明。 PROCESS STATE CODES Here are the different values that the s, stat and state output specifiers转载 2013-12-02 10:13:55 · 1341 阅读 · 0 评论 -
将man的说明输出到文件
man [命令] | col -b > ~/man.txt如果直接man [命令] > ~/man.txt 会输出许多^H退格符,col -b可以过滤掉它.原创 2013-12-02 11:38:41 · 1667 阅读 · 0 评论 -
man后面括号的含义
1. General Commands --用户命令2. System Calls --系统调用3. Subroutines --C语言库函数4. Special Files --设备或特殊文件5. File Formats --文件格式和规则6. Games --表示游戏及其他7. Macros and Conventions --表示宏、包及其 他杂项8. Main原创 2013-12-03 19:25:47 · 1539 阅读 · 0 评论 -
shell统计每列的重复个数
需求:统计每个进程使用的句柄(文件)数方法一: 使用awk (可不要求排序)sudo lsof | sed '1,2d' | awk '{++map[$1]}END{ for( i in map ){print i,map[i] } }' | sort -rnk 2 (实际为统计第一列的的重复个数)解释:map可理解为key-value对象sort的中的原创 2013-12-17 00:17:53 · 15645 阅读 · 0 评论 -
如何查看linux系统版本
查看内核版本命令 1) cat /proc/version 2)uname -a 查看linux版本: 1)lsb_release -a 2) cat /etc/redhat-release原创 2013-12-18 14:29:11 · 1770 阅读 · 0 评论 -
僵尸进程
在UNIX术语中,一个已经终止、但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息、释放它仍占用的资源)的进程被称为僵尸进程(zombie)。僵尸进程的避免:一,让父进程比子进程先结束,让init进程来领养子进程。比如可以fork 2次:A进程 fork出B子进程,B子进程再fork出C子进程,再杀掉B子进程。这样C子进程就由init进程领养了。 一个由init进程领养的原创 2012-07-17 10:47:27 · 825 阅读 · 0 评论 -
ps aux中的含义
•USER:该 process 属于那个使用者账号的?•PID :该 process 的号码。• %CPU:该 process 使用掉的 CPU 资源百分比;• %MEM:该 process 所占用的物理内存百分比;•VSZ :该 process 使用掉的虚拟内存量 (Kbytes)•RSS :该 proces原创 2013-11-29 23:17:25 · 3101 阅读 · 0 评论 -
vi中使用正则表达式
一、使用正则表达式的命令使用正则表达式的命令最常见的就是 / (搜索)命令。其格式如下:/正则表达式另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正则表达式替换成第二个//之间的字符串。:s/正则表达式/替换字符串/选项在学习正则表达式时可以利用 / 命令来练习。二、元字符元字符是具有特殊意义的字符。使用元字符可以表达任意字符、行首、行转载 2013-10-21 11:06:59 · 3490 阅读 · 0 评论 -
vim的查找替换
1.删除含有“#”开头的行:% g/^#/d 匹配删除含有特定字符的行就去掉“^”,也可以匹配结尾“$”2.删除空行:% g/^$/d 3.删除不含该字符串的行:% v/pattern/d 还有另一中方法::% g!/pattern/d 4.如何对每行只保留匹配内容而删除这一行中的其它内容:%s/^.*\(pattern\).*$/\1/g 5.删除包含原创 2013-10-21 11:05:43 · 831 阅读 · 0 评论 -
如何查看进程的各种限制
ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals原创 2013-05-12 21:40:39 · 895 阅读 · 0 评论 -
/etc/group与/etc/gshadow文件解析
/etc/group的格式如下:group_name:passwd:GID:user_list具体如下:root:x:0:daemon:x:1:bin:x:2:sys:x:3:adm:x:4:jack组名:口令:组标识号:组内用户列表1)“组名”是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。2)“口令”字段存放的是用原创 2013-05-25 21:12:25 · 6263 阅读 · 0 评论 -
echo如何手动输出换行
echo -e "abc\ndef"输出:abcdef-e表示启用解释反斜杠转义默认为-E:禁用转义echo本身默认最后会输出一个换行,要禁用最后的换行,可使用echo -n "abc"-n do not output the trailing newlineecho具体语法如下:Linux echo命令不能显示文件中的内容。功能说明:显示文原创 2013-05-25 22:23:17 · 62690 阅读 · 2 评论 -
linux-详细解析密码文件passwd与shadow
输入命令:head -n 4 /etc/passwd输出:root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/bin/shbin:x:2:2:bin:/bin:/bin/shsys:x:3:3:sys:/dev:/bin/sh以:隔开,相应的字段含义如下:用户名: 密码 : uid : gid :原创 2013-05-24 10:42:36 · 15611 阅读 · 0 评论 -
bash中双引号与单引号的区别
在 bash 中,常用的 quoting 有如下三种方法:1) hard quote:' ' (单引号),凡在 hard quote 中的所有 meta 均被关闭。2) soft quote: " " (双引号),在 soft quoe 中大部份 meta 都会被关闭,但某些则保留(如 $ )。3) escape : \ (反斜线),只有紧接在 escape (转义字符)之后的单一 m原创 2013-05-26 11:43:39 · 1309 阅读 · 0 评论