- 文档查看:cat、tac、more、less、head、tail、cut、od、nl
- 文件权限:ls -l、chmod、chown、chgrp、umask
- 文件查找:find、whereis、locate、which
- 程序管理:jobs、bg、fg、kill、killall、ps、pstree、top、free、nice、renice
- 开机、关机:sync、shutdown、halt、poweroff、reboot、init
- 网络相关:ifconfig、netstat、arp、route
- 其它:uname、ulimit
一、文档查看
- cat:一次性显示完,不能翻页,不能编辑
- tac:与cat相似,只不过显示的内容是从最后一行到第一行逆序显示的
- more:可以向下翻页
- less:可以上、下翻页
- head:显示文档的头几行,默认10行(-n lines)
- tail:显示文档的最后几行,默认10行(-n lines)
- cut:查看文档的部分内容,可以显示每行的部分内容
- od:以二进制方式读取内容
nl:与cat类似,不过显示的时候会顺带输出行号
这些命令都是不能编辑文档的,其中cat、head、tail执行完后,命令就执行完了,不能有后续操作;
more和less执行完后,还可以翻页,命令还没有执行完。
eg:对文档执行less后,命令行窗口显示如下:
可以发现整个窗口显示的全部都是文档的内容,与man手册类似,除非执行q退出而cat执行后,窗口显示如下,当文档内容显示完成后,会自动退出。此时cat命令已执行完,因此不能上、下翻页
二、文件权限
主要命令有:chmod、chown、chgrp、umask
linux下每一个目录、文件都是有特定权限的,分别为文件拥有者、群组、其它用户的权限,权限主要分为读、写、执行三种。
(1)通过ls -l命令可以查看一个文件的权限
ls -al命令显示的每个字段表示的意思依次为:
其中链接数是指硬链接数。
互为硬链接的文件具有相同的文件节点i节点,他们指向同一个文件,无论是修改哪一个文件,另一个也做相应的变化
可以发现文件的权限一个包括10个字符
其中第一个字符表示文件的类型
后面的字符每3个一组,分别表示文件拥有者、文件所属群组、其它用户对该文件拥有的权限,权限为RWX的组合
由于可以将每个权限看作3bit的二进制表示,因此RWX权限也可以用数字表示,即R=4,W=2,X=1。这是我们常见的表示方式。4+2+1 = 7 ,即当一个文件具有所有权限时,权限用数值表示为777
(2)权限的修改
主要可以通过chmod、chown、chgrp等命令修改相关权限
除此之外,还可以用符号来修改文件的权限
(3)文件的R、W、X都比较容易理解,要注意的是目录的权限。
目录的读权限决定了你能否修改该目录下的文件,包括新建、删除、重命名
目录的执行权限决定了用户能否进入这个目录
当访问该目录下的文件时,同样也不能访问文件的内容。
(4)umask命令用于设置文件权限屏蔽字,当对应权限位为1时,则屏蔽该位代表的权限,即没有该权限。
即群组W和其它用户W权限被屏蔽
(5)同时当创建一个文档时,默认的权限是RW-RW-RW-,即文档的执行权限已经被屏蔽
当创建一个目录时,由于目录的执行权限与能否进入这个目录有关,因此目录的X权限一般都是开放的,即目录的默认权限是RWXRWXRWX。
然后我们再利用umask=0022,屏蔽一些权限后,新建一个文档的权限为RW-R–R–,新建一个目录的权限为RWXR-XR-X
(6)例题
三、文件的查找和定位
- find会在指定路径下查找,查找速度比较慢
- whereis会在系统默认位置查找,一般是HOME环境变量指定的所有路径,且可查找的文件种类较少
- locate会在系统的文件数据库中搜索
- which只在环境变量中查找指定文件,查找的范围更小
四、shell脚本
- $?:最近一条命令或shell脚本的出口状态
- $$:shell脚本的进程ID
- $#:返回位置参数的总个数
- $*:表示所有的位置参数
- $@:表示所有的位置参数
五、程序管理
主要命令有:jobs、bg、fg、kill、killall、ps、pstree、top、free、nice、renice
(1)程序与进程
程序:一般以实体文档的方式存储在媒体(磁盘、光盘)中,没有生命
进程:正在执行的程序。
每一个进程都有一个系统赋予的进程标识(进程ID),并与启动进程的用户(用户ID)相关联。
用户可以查询所有进程的状态,但是只能控制自己的进程,如向进程发送信号、重新启动或终止进程
超级用户则可以控制所有进程
(2)bash中命令的调用过程
fork-and-exec流程:首先fork出一个子进程,然后调用exec让子进程其执行命令。任务执行完成后调用exit,然后再继续执行父进程
(3)Linux多用户、多任务环境
多用户:Linux下可以有多个用户账号存在,可以使每个用户具有不同的权限。每个用户登入Linux后取得的shell的进程ID不同,因此可以对不同用户设置不同的登入环境
多任务:所有处于竞争状态的进程都能够合理的共享资源,当有多个用户同时登入Linux后,看起来系统也只是在为你一个人服务
(4)bash环境下的任务管理
我们登入bash后,可以在bash中同时执行多个任务吗?
当然可以,只要将任务设置为后台运行即可。我们知道find命令非常耗时,如果让find命令在前台运行,那么bash一直都被占用,我们就不能执行其他任务了。因此可以将find放在后台运行,让我们可以继续使用bash。
&:使任务在后台运行
Ctrl+z:使任务挂起
jobs:观察当前bash中正在执行的任务
bg:使任务在后台运行
fg:使任务在前台运行
kill、killall:终止某个任务
bg、fg、kill:一般都是加%num参数,其中num为执行jobs命令后每个任务前面显示的序号
简单示例如下:
首先执行find任务,由于任务执行时间较长,为了能在此期间继续执行其它任务,按下Ctrl + Z向进程发送一个信号将任务挂起。
此时用jobs命令查看可以发现任务的状态变为Stopped
然后可以执行bg %num命令将任务放在后台执行,此时用jobs命令查看可以发现任务的状态已经变成了Running,表示任务正在执行
当任务执行完后,任务就Exit退出了,任务也就被系统清除了。
kill命令常见用法是:kill -signal PID/(%job_num),当不指定signal时,默认发送的是信号15,即SIGTERM。
由于kill命令必须知道进程ID或任务号,比较麻烦。因此我们可以使用killall命令
killall -signal process_name,如killall -9 find。 信号9是SIGKILL
一些常见信号:
(5)进程管理
ps:查看进程状态信息
pstree:以树形缩进形式显示进程之间的调用关系
top:实时监控进程的状态信息
nice、renice:调节进程优先级
free:查看系统资源
ps命令提供的参数非常多,但是我们只需要记住常用的几个即可。
-a:显示活动进程
-e:显示所有进程
-f:显示进程的重要状态信息
-l:显示进程的详细状态信息
一般使用:ps -ef 、 ps -l
调节进程优先级:nice、renice
执行ps -l可以查看进程的优先级PRI,但是由于PRI是由linux系统控制的,我们不能改变,因此我们只能通过改变NI即nice的值来对进程优先级进行调节。
PRI(new) = PRI(old) + nice,当nice值为负时,则使PRI值减小。PRI值越小,优先级越高,因此可以将nice设为负值以提升进程优先级。但是为了避免用户持续抢占资源,因此一般不允许用户将nice设为负。
nice -n command
如果进程已经存在时,则需要用到renice,renice number PID
六、开机、关机
七、网络相关
主要命令有ifconfig、netstat、arp等
(1)ifconfig
可以用来查看网络接口的基本配置和状态信息,常见用法有:
ifconfig -a
ifconfig eth0 192.168.1.111 netmask 255.255.255.0
ifconfig eth0 down/up
ifconfig eth0 mtu 1500
(2)netstat
可以给出网络状态信息
netstat [-s] [-i [ifname] ] [-r] [-n] [-atuwp] [-c] [delay]
-s:按照协议分类统计
-i:显示网络接口的状态信息
-r:显示核心路由表
-n:只需显示IP地址,而不用转换成主机名或网络名
-t:只显示tcp套接字的状态信息
-u:只显示udp
-w:只显示原始套接字的状态信息
-p:显示每个套接字所属程序的名称和进程ID
-c:表示每秒一次,(此时netstat程序没有终止,除非Ctrl+c主动结束)
-d:显示抽样统计数据的延时
(3)arp
arp协议是用于解决IP地址和MAC地址之间的映射关系的,arp命令的主要用法有:
arp [-s] [-d] [-i [ifname] ] [n]
-s:用于增加一个arp表项,如arp -s 10.10.10.1 00:11:22:33:44:55:66
-d:用于删除一个arp表项,如arp -d 10.10.10.1
-i、-n与netstat中的参数意思相同
(4)route
常见用法有:
route -n:显示路由
route add -net 192.168.11.0 netmask 255.255.255.0 dev eth0:增加一条到192.168.11.0的路由表项
route del-net 10.0.0.0 netmask 255.0.0.0:删除一条路由表项
当要设置网络不可达时,可以直接在add、del命令后加上reject
route add default gw 192.168.120.240:配置网关
route del default gw 192.168.120.240
八、其它
uname:可以查看linux版本
ulimit:查看系统和文件的限制
常见的是core文件的大小限制,一般系统默认是关闭core文件,而有时为了调试我们需要把core文件打开。
这样程序执行出错时,就会产生core文件了,然后我们就可以使用gdb进行调试
参考资料:
《鸟哥的私房菜–基础篇》