linux 介绍
(1)Linux根据市场需求不同,基本分为两个方向:
1)图形化界面版:注重用户体验,类似window操作系统,但目前成熟度不够
2)服务器版:没有好看的界面,是以在控制台窗口中输入命令操作系统的,类似 于DOS,是我们假设服务器的最佳选择
(2)Linux根据原生程度,又分为两种:
1)内核版本:在Linus领导下的内核小组开发维护的系统内核的版本号
2)发行版本:一些组织或公司在内核版基础上进行二次开发而重新发行的版本
服务器版的Linux安装完毕了,但没有图形化界面,我们只能通过控制台去操作系统,我们就要使用类似DOS命令的Linux命令去操作系统,那么下面我们就进行Linux的命令的学习。window中通过图形化界面和鼠标可以任意切换需要进入的目录,但Linux必须通过cd命令切换目录。
shell 介绍
shell翻译成壳的意思,它是包裹在linux内核外层的,一个可通过一系列的linux命令对操作系统发出相关指令的人机界面。
shell可以通过其条件语句和循环语句等,把一系列linux命令结合在一起,形成一个相当于面向过程的程序,shell script,来实现一些较为复杂的功能。
shell相当于经过装饰的命令行,和命令行一样,都能操作linux。但是shell是面向过程的,相当于有了一定的逻辑和过程,而命令行只是单一的操作的程序文件.
Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash。
如同其他语言一样,编写一个shell程序需要一个文本编辑器,比如nedit、kedit、emacs、vi等来编写我们的shell程序。
简介:
Shell是一种脚本语言,又是一种命令语言。可以通俗一点来讲,Shell脚本就是一系列命令的集合,可以在Unix/linux上面直接使用,并且直接调用大量 系统内部的功能来解释执行程序把一些重复性工作交给shell做,来实现自动化运维。Shell 虽然没有C/C++、Java、Python等强大,但也支持了基本的编程元素。例如:if、for、while等循环,还有变量、数组、字符串、注释、加减乘除 逻辑运算等
应用场景:
Shell 主要用来开发一些实用的、自动化的小工具,而不是用来开发具有复杂业务逻辑的中大型软件
第一方面:监控linux系统环境的使用情况
第二方面:数据的处理。eg:日志的切割、分析、统计等
第三方面:与数据库的交互,对数据库进行增,删,改,查等操作
第四方面:监控进程,自动化启停服务进程
第五方面:完成一些重复性的工作。eg:创建100个新用户;到服务器集群配置某个文件等
linux的基本操作命令
1. 目录切换命令
命令: cd
功能说明:切换目录。
举 例:却换到根目录 :cd /
cd usr 切换到该目录下usr目录
cd ../ 切换到上一层目录
cd / 切换到系统根目录
cd ~ 切换到用户主目录
cd - 切换到上一个所在目录
刚进入服务器时为~ 表示root root也在下面同bin、boot的一列 /表示根
在~下 cd../可以切换到根目录(切换到上一层目录)
在/下 cd usr 可以切换到该目录下usr目录
在usr下 cd/ 切换到系统根目录 再cd etc 可以进入另一个目录 或直接cd/etc
2. 目录的操作命令(增删改查)
(1)增加目录操作(增)
命令:mkdir 目录名称
示例:在根目录 / 下 mkdir test,就会在根目录 / 下产生一个test问目录
(2)查看目录(查)
命令: ls
功能说明:列出目录内容。ls [-al] 父目录
示例:
在根目录 / 下使用ls,可以看到该目录下的所有的目录和文件 (行的形式 )
在根目录 / 下使用ls -a,可以看到该目录下的所有文件和目录,包括隐藏的
在根目录 / 下使用ls -l,可以看到该目录下的所有目录和文件的详细信息(列的形式)
列出/var目录的文件和目录的信息 :ls –l /var
注意:ls -l 可以缩写成ll 最常用方式 ls –lrt 以修改时间作为顺序排列 最新文件在下面显示
命令:du
功能说明:查看文件大小(目录大小)
-h:按单位显示
-d:指文件的层级:例如1就是当前目录,
(3)寻找目录(查)
命令:find 目录 参数 (根据文件或者正则表达式进行匹配)
功能说明:查询文件
示例:
查找/root下的与test相关的目录(文件) find /root -name ‘test*’
在/home目录下查找以.txt结尾的文件名 find /home -name "*.txt"
查询根目录下面的test.txt: find ./ -name test.txt
查询当前目录下面的test.txt: find . -name test.txt
.为当前目录 /为根目录
注意:
find是根据文件名进行查找,grep是对文件的内容进行搜索
grep是搜索包含xx字符串的文件 find -name是搜索文件名包含xx的
(4)修改目录的名称(改)
命令:mv 目录名称 新目录名称
示例:test目录下有一个oldTest目录,使用mv oldTest newTest 命令修改
注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作
(5)移动目录的位置---剪切(改)
命令:mv 目录名称 目录的新位置
示例:在test下将newTest目录剪切到 /usr下面,使用mv newTest /usr
注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作
举例:移动 test.sh到/bin目录下:mv test.sh /bin/
(6)拷贝目录(改)
命令:cp -r 目录名称 目录拷贝的目标位置 -----r代表递归拷贝
示例:将/usr下的newTest拷贝到根目录下的test中,使用cp -r /usr/newTest /test
注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归
举 例:拷贝文件test.sh 为 test.sh_bak:cp test.sh test.sh_bak
(7)删除目录(删) 命令:rm [-rf] 目录
示例:删除/usr下的newTest,进入/usr下使用rm -r newTest
示例:删除/test下的newTest而不需要询问强制删除,在/test下使用rm -rf newTest
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆,无论删除任何目录或文件,都直接使用rm -rf 目录/文件/压缩包
3. 文件的操作命令(增删改查)
(1)文件的创建(增)
命令:touch 文件名称 ----- 空文件
示例:在test目录下创建一个空文件 touch aaa.txt
(2) 文件的查看(查)
命令:cat
功能说明:查看小文件内容。
举 例:查看test.txt 文件内容 :cat test.txt
命令:cat/more/less/tail 文件
如果记不住文件名字 可以使用键盘table 按一下出来开头相同文件 按两下出来全部文件名
Cat -n 1.txt显示行数
示例:
使用cat查看/etc/sudo.conf文件,只能显示最后一屏内容
使用more查看/etc/sudo.conf文件,可以显示百分比,回车可以向下一行,空格可以向下一页,q可以退出查看
使用less查看/etc/sudo.conf文件,可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看
使用tail -10 查看/etc/sudo.conf文件的后10行,Ctrl+C结束
注意:
命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件,会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控文件的变化
(3)修改文件的内容(改)
命令:vim 文件 或者 vi 文件
vi 是Linux中最基本的文本编辑器.vim编辑器是Linux中的强大组件,是vi编辑器的加强版
vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。
关于vim使用过程:
在实际开发中,使用vim编辑器主要作用就是修改配置文件
vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q!
示例:
编辑/test下的aaa.txt文件,使用vim aaa.txt
1.但此时并不能编辑,因为此时处于命令模式,点击键盘i/a/o进入编辑模式,可以编辑文件.
2.编辑完成后,按下Esc,退回命令模式
3.此时文件虽然已经编辑完成,但是没有保存,需输入冒号:进入底行模式,在底行模式下输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存,输入q 退出。
(4)删除文件(删)
同目录删除:熟记 rm -rf 文件 即可
4. Linux的权限命令
权限是Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以查看某个目录下的文件或目录的权限
示例:
在随意某个目录下ls -l第一列的内容的信息解释如下:
文件的类型:
d:代表目录 -:代表文件 l:代表链接(可以认为是window中的快捷方式)
后面的9位分为3组,每3位置一组,分别代表属主的权限,与当前用户同组的用户的权限,其他用户的权限
r:代表权限是可读,r也可以用数字4表示
w:代表权限是可写,w也可以用数字2表示
x:代表权限是可执行,x也可以用数字1表示
u-g-o分别表示用户-用户组-其他用户,用a表示所有的用户
属主(user) 属组(group) 其他用户
r w x r w x r w x
4 2 1 4 2 1 4 2 1
(1)chmod命令
功能说明:修改文件或目录权限。
举 例:修改test.sh 为自己可执行:chmod u+x test.sh
(2)chown命令
功能说明:变更文件或目录的拥有者或所属群组。
举 例:修改test.txt 属主为mysql :chown mysql:mysql test.txt
1. 修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限,其他用户只有读的权限 chmod u=rwx,g=rw,o=r aaa.txt
上述示例还可以使用数字表示:chmod 764 aaa.txt
2.文件exer1的访问权限为rw-r--r--,现要增加所有用户的执行权限和同组用户的写权限 chmod a+x g+w exer1;//chmod 775 exer1;
3. 设umask为002, 则新建立的文件的权限是什么?--rwxrwxr-x
对于新创建的目录:对于新创建的目录来说,其默认的权限就是umask的取反操作就可以了。文件默认权限666 目录默认权限777 。 实际权限则减去umask。666-002=664= -rw-rw-r--
5. 其他命令
(1)diff命令
功能说明:对比文件差异。
举 例:对比文件test.sh test.sh_bak 是否有差异diff test.sh test.sh_bak
如果不显示 说明一模一样 否则列出不同部分
(2)which命令
功能说明:在环境变量$PATH设置的目录里查找符合条件的文件。
举 例:查询find命令在那个目录下面:which find
(3)ssh命令
功能说明:远程安全登录方式。
举 例:登录到远程主机:ssh ${IP}
(4)grep命令 (搜索命令)
命令:grep 要搜索的字符串 要搜索的文件
功能说明:查找文件里符合条件的字符串。
举 例:
从test.txt文件中查询test的内容:grep test test.txt
搜索/usr/sudu.conf文件中包含字符串to的行 grep to sudu.conf
搜索/usr/sudu.conf文件中包含字符串to的行 to要高亮显示grep to sudu.conf --color
(5)wc命令
功能说明:统计行。
举 例:统计test.txt文件有多少行:wc -l test.txt
(6)date命令
功能说明:查询主机当前时间。
举 例:查询主机当前时间:date
(7)exit命令
功能说明:退出命令。
举 例:退出主机登录:exit
(8)id命令
功能说明:查看用户。
举 例:查看当前用户:id ;查询主机是否有test用户:id test
(9)、sleep命令
功能说明:休眠时间。
举 例:休眠60秒 :sleep 60
(10)uname命令
功能说明:查询主机信息。
举 例:查询主机信息:uname -a
(11)passwd命令
功能说明:修改用户密码。
举 例:使用root修改test用户的密码:passwd test
(12)ping命令
功能说明:查看网络是否通。
举 例:查询本主机到远程IP的网络是否通:ping ${IP}
(13)df命令
功能说明:查看磁盘空间使用情况。
举 例:查看主机的空间使用情况 :df -h
(14)echo命令
功能说明:标准输出命令。
举 例:对变量test进行输出:echo $test
相当于print
(15)pwd命令
功能说明:查询所在目录。
举 例:查询当前所在目录:pwd
(16)head命令
功能说明:查看文件的前面N行。
举 例:查看test.txt的前10行:head -10 test.txt
(17)tail命令
功能说明:查看文件的后面N行。
举 例:查看test.txt的后10行:tail -10 test.txt
(18)管道命令
命令:|
功能说明:将前一个命令的输出作为本次目录的输入.一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。
示例:在home目录下所有文件中查找,包括close的文件,并分页输出。grep -r "close" /home/* | more
(19)ps命令
命令:ps -ef
功能说明:查询进程情况。
示例:查看当前系统中运行的进程
-a:显示其他用户启动的进程
-x:查看系统中属于自己的进程
-u:显示启动这个进程的用户和它启动的时间
与grep用管道连接,找到特定的进程:ps -a|grep '28952'
统计进程个数: ps -a|wc
查询test.sh进程:ps -ef | grep test.sh
(20)显示进程
pstree 以树状图显示进程,只显示进程的名字,且相同进程合并显示
-p:还显示PID
-a:相同进程部合并,且显示命令行参数
top 显示当前消耗资源最多的进程信息
-i 查看多少进程处于running状态,可能系统存在内存或I/O瓶颈
(21)杀死进程(是通过发送信号来终止一个进程)
命令:kill -9 进程的pid
功能说明:杀进程。
-9:发出的信号是:SIGKILL:相当于exit,不能被捕捉或忽略,所以会立即杀死进程。
-15:SIGTERM 当程序接受到这个信号后,大部分会释放自己的资源,然后再停止。但是有一部分,接收到信号以后,可以不立即停止,例如如果正在等待IO,则不会立即作出响应。所以SIGTERM信号会被阻塞、忽略
6. 系统管理命令
stat 显示文件的详细信息,比ls更详尽
who 显示在线登录用户
whoami 显示当前操作用户
hostname 显示主机名
uname 显示系统信息
du 查看目录大小(同样可以查看指定文件)
-h:带有大小单位
df 查看磁盘使用情况
-h:带有大小单位
7. 性能检测工具
top 显示所有实时运行的进程,并且定时更新
vmstat 虚拟内存统计(安装一个sysstat包)
iostat 用于监控CPU和系统设备的IO负载情况
free 内存使用率
map 进程内存占用率
strace 追踪程序运行状态
8. 关机/重启
shutdown 关机
-r:关机重启
-h:关机不重启
now 立即关机
halt 关机
reboot 重启