xiaobaichen 2014-03-01
便于大家了解linux bash,便于大家的trouble shooting~
(copied from wikipedia)
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
创始人Linus Benedict Torvalds(1969年~),发展和成长过程始终依赖着五个重要支柱:UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。
内核指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。使用linux内核的操作系统,统称为linux。linux内核主要包括以下功能:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。
核心的开发和规范一直是由Linux社区控制着,版本也是唯一的。
目前内核版本是3.
Linux发布版指的就是通常所说的“Linux操作系统”,它可能是由一个组织,公司或者个人发布的。Linux主要作为Linux发布版(通常被称为"distro")的一部分而使用。通常来讲,一个Linux发布版包括Linux内核,将整个软件安装到计算机上的一套安装工具,各种GNU软件,其他的一些自由软件,在一些特定的Linux发布版中也有一些专有软件。发布版为许多不同的目的而制作,包括对不同计算机硬件结构的支持,对一个具体区域或语言的本地化,实时应用,和嵌入式系统。目前,超过三百个发布版被积极的开发,最普遍被使用的发布版有大约十二个。较为知名的有SUSE、RedHat、Fedora、Debian、Ubuntu、CentOS、Gentoo
一个典型的Linux发布版包括:Linux内核,一些GNU库和工具,命令行shell,图形界面的X窗口系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公包,编译器,文本编辑器,小游戏,儿童教育软件,到科学工具的应用软件。
Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。目前linux上默认的shell环境都是bash
/bin/sh (已經被 /bin/bash 所取代)
/bin/bash (就是 Linux 預設的 shell)
/bin/ksh (Kornshell 由 AT&T Bell lab. 發展出來的,相容於 bash)
/bin/tcsh (整合 C Shell ,提供更多的功能)
/bin/csh (已經被 /bin/tcsh 所取代)
/bin/zsh (基於 ksh 發展出來的,功能更強大的 shell)
[l-djb2c2][zhenbao.zhou][/home/q][20][0][15:30:31] $ less nohup.out nohup.out: Permission denied [l-djb2c2][zhenbao.zhou][/home/q][21][1][15:30:37] $ ll nohup.out -rw------- 1 root root 5167 Nov 28 2012 nohup.out
在Linux里面,任何一个文件都具有『User, Group及Others』三种身份的个别权限.
r | 可获得这个文件的内容 | 可以看到这个目录里的文件以及这些文件对应的权限 |
w | 可以编辑或者修改此文件内容(但不可以删除此文件) | 可以对目录的内容进行修改。(移动目录里的文件等 ) |
x | 可以被系统执行 | 某个用户可以进入此目录 |
$ sudo chgrp tomcat jenkins.war $ ll jenkins.war -rw-r--r-- 1 tomcat tomcat 49190379 Nov 28 2012 jenkins.war
$ ll jenkins.war -rw-r--r-- 1 zhenbao.zhou tomcat 49190379 Nov 28 2012 jenkins.war $ chmod 755 jenkins.war $ ll jenkins.war -rwxr-xr-x 1 zhenbao.zhou tomcat 49190379 Nov 28 2012 jenkins.war*
grep --help
查询manual页
man grep
某些软件会有info页,也可以用这个查看
查看文件
查看文件末尾
tail -f filename
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 pageup pagedown 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
ps aux|grep less
查看方法
grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.
zgrep 可以直接扫描 gzip文件
文本编辑工具
删除文件
查造某个可执行文件的路径
[l-djb2c2][zhenbao.zhou][/home/q/zhenbao.zhou][69][0][16:07:06] $ which java /usr/bin/which: no java in (/opt/qt/bin/:/usr/local/pgsql/bin/:/home/zhenbao.zhou/apache-ant-1.8.4/bin:/opt/perl/bin/:/usr/lib64/qt-3.3/bin:/opt/pg92/bin:/home/q/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/opt/pg90/bin/:/home/zhenbao.zhou/emacs/bin:/usr/local/apache-maven-2.2.1/bin/:/home/zhenbao.zhou/bin)
强大的查找工具
$ find . -name "*.java" ./emacs-lib/sqlformat/SqlBeautify.java ./emacs-lib/cedet-1.0pre7/semantic/tests/scopetest.java ./emacs-lib/cedet-1.0pre7/semantic/tests/testjavacomp.java
更强大的搜索工具
$ locate zhenbao.zhou123123123 [l-djb2c2][zhenbao.zhou][/home/q/zhenbao.zhou][77][1][16:09:11]
查看目前进程
ps auxxx|grep java
展示系统信息
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
$ netstat -anlp | grep 8000 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN $ sudo netstat -alnp | grep 8000 tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 13575/java
命令的原始功能是列出打开的文件的进程,但LINUX下,所有的设备都是以文件的行式存在的,所以,lsof的功能很强大!
$ sudo lsof $ sudo lsof -i :8000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 13575 tomcat 29u IPv4 156048599 0t0 TCP *:irdmi (LISTEN $ sudo lsof tts.sh COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME less 32288 zhenbao.zhou 4r REG 252,7 35677 1712552 tts.sh
查看系统目前内存情况
查看系统磁盘大小
统计某一个目录的情况
查看登录情况
查看系统的内核、机器类型等等
$ uname -a Linux l-djb2c2.vc.dev.cn6 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux
文件传输
( 这是bash范畴的命令)
python -mSimpleHTTPServer 8912
ls > /tmp/4 ls aasdfasd > /tmp/4 ls asdfasdf 2> /tmp/12 ls asdf > /dev/null
使用 "|"连接各个命令的输出
ls | less
打印变量名
echo $AAA
执行某个文件
sh -x aaa.sh