which
显示一个可执行文件的完整路径
按照alias -> $PATH的顺序查找
whereis
搜索一个可执行工具以及相关配置、帮助
相对于which更全,更详细,更完整
slocate [关键字段]
所有文件名及其所在路径包含关键字段的文件与目录都会显示
slocate先将当前目录结构做成一个数据库,然后再在此数据库中搜索匹配记录。
find [路径] [参数] [表达式]
从指定路径下递归向下搜索文件
支持
[参数] type(f,c,l,d), user, group, name,nouser, nogroup,perm(根据权限)
-exec 指令 {} /;
-{}代表find找到的文件
-/禁止转意
-;表示本行指令结束
举例:
find . -perm 6000 -exec chown lybing.lybing {} /; 表示把找到的文件,放到chown指令里执行改变文件的拥有者为lybing.lybing
wc (-l(行),w(单词),c(字符))统计文件的行数,单词数,字符数
grep(-n(行号), -v(反向选择))在文件中查找包含指定字符串或不包含指定字符串的行
sort (-t,-k,-r) 按序重排文本并送显示
diff A B 用于比较两个文件的不同(与位置有关),报告文本差异内容
compare A B 报告文本差异位置
uniqu 去除文件中重复的行
cut 显示文件中的某一列 cut –c4-8 cut1(显示第四到第八个字符) cut –f2 –d.(按.分栏显示第二栏)
paste 将文本按列拼接 paste abc ABC > merge ()
cat abc ABC > merge(连接两个文件)
查看磁盘的情况 df –h(以G为单位)
du –h(以G为单位)查看文件的占用空间
head 查看文件的前几行内容
tail 显示文件的后几行内容
在系统中默认有12个虚拟控制台,默认情况下可以使用6个虚拟控制台,切换方式:Alt+F(n)(n=1,2,3,4,5,6)
su (-,加-完全切换) + 用户名
file 查看文件的类型
ln –s(软连接) 源文件 新建连接名
硬链接:不能跨越文件系统,不能为目录建立硬链接(源文件删除,则链接依然有效,相当于源文件的一个copy)
软链接(相当于快捷方式,源文件删除,则链接失效)
硬链接和软链接都会自动保持同步。
ext2/ext3文件格式的文件有Blocks 和Inode两部分组成
一旦用rm指令删除文件中的inode记录,文件无法被找回
可以用stat指令查看文件组成情况
chgrp 改变文件的所属组
文件名以.开头的文件是隐藏文件,隐藏文件可以用ls –a查看
.和..文件分别是当前文件和父文件的硬链接
对于目录的写权限:单独使用没有作用,必须同时具有执行权限才可以删除和增加
强制位与冒险位:
除了读写执行权限以外,ext2文件系统还支持强制位(setuid和setgid)与冒险位(sticky)的特别权限。
强制位与冒险位添加在执行权限的位置上。如果该位置上原已经有执行权限,则强制位与冒险位以小写字母的方式表示,否则,以大写字母表示。
set uid与set gid在u和g的x位置上各采用一个s,sticky使用一个t。
set gid 对目录的作用:
默认情况下,用户建立的文件属于用户当前所在的组。
在目录上设置了setgid,表示在此目录中,任何人建立的文件,都会属于目录所属的组。
冒险位对目录的作用:
默认情况下,如果一个目录上有w和x权限,则任何人可以在此目录中建立和删除文件。
一旦目录上设置了冒险位,则表示在此目录中,只有文件的用户者,目录的拥有者与系统管理员可以删除文件。
强制位对文件的作用:
在可执行文件上,用户可以添加set uid 和set gid。
默认情况下,用户执行一个指令,会以该用户的身份来运行进程。
指令文件上的强制位,可以让用户执行的指令,以指令文件的拥有者或所属组的身份运行进程。
强制位与冒险位的设定:
强制位与冒险位的设定也可以通过数字加和,在读写执行的前面。
4(set uid) 2 (set gid) 1(sticky)
chmod 4777 test
注:setuid只能用于文件上,setgid可以在目录上也可以在文件上,冒险为只能在目录上设定。
umask
0022
[root@centos /]# umask -S
u=rwx,g=rx,o=rx
每个用户建立文件时,此文件都会有默认的权限。
默认权限的值是由环境中的umask值来确定的
用户可以自主改动umask的指,并在改动后建立的文件上得到体现。
一般用户的默认umak值为002,系统用户的默认umask值为022.
系统用户:目录:755 文件644
一般用户: 目录:775 文件 664
这与umask值有关,默认权限减去umask即的建立文件与目录默认权限。
Linux中的应用工具分为三种:
交互工具 过滤器 编辑器
能够接收数据,过滤再输出的工具, 称为过滤器
对过滤器和进程,存在着输入源与输出对象
重定向:标准输入、输出与错误输出,都可以用特定符号改变数据来源或去向。
ls -l /dev/std*
lrwxrwxrwx 1 root root 15 Jun 23 23:47 /dev/stderr -> /proc/self/fd/2(标准错误输出)
lrwxrwxrwx 1 root root 15 Jun 23 23:47 /dev/stdin -> /proc/self/fd/0(标准输入)
lrwxrwxrwx 1 root root 15 Jun 23 23:47 /dev/stdout -> /proc/self/fd/1(标准输出)
输入从定向:使用“<”来重定向输入源 大多数工具都会以其后的文件名为输入源 有一些过滤器一定需要添加 < 以明确输入源
从当前文档输入:使用 <<让系统将一次键盘的全部输入,先送入虚拟的“当起文档”,然后一次性输入 需要一对字母、符号或字符串作为起始终结标识符 可以选择任意符号作为起始终结标识符
cat > cat.file <<!
> this is test
> !
[root@centos test]# cat cat.file
this is test
输出重定向:
使用>改变数据输出目标: ls –l > listfile,将当前目录下的文件以长模式显示,然后写入listfile文件,文件已有内容会被消除。
使用>>,可以将输出追加进入文件。
错误输出重定向
系统错误与标准输出使用的I/O管道不同,默认情况下,系统报错会显示到终端屏幕上
使用2>将报错讯息重定向入一个文件 find / -type s 2>/dev/null
使用2>>将报错讯息追加入一个文件
双重输出重定向:使用>和2>可以将一次操作的正确、错误输入,被单独地送到不同的地方:
find / -perm -2 2> error > results
使用&> 将所有输入都送向同一个地方:
find / -perm +6000 &> file
管道:
使用 | 将前一个过滤器的输出直接送入后一个过滤器的输入:
ls –l | grep pass
允许多重管道,两个管道的类型应该匹配。
拷贝文件的内容 cat< filea > fileb
cat file.* > file
将数个小文件合并成一个打文件
压缩:
gzip, gunzip(只能压缩文件) Linux 标准压缩工具,对文本文件可以达到75%的压缩率, gzip (-d,解压) 文件名 gunzip(解压) 文件名, zcat 文件名(查看压缩文件的内容)
compress, uncompress 旧的Unix压缩工具
bzip2, bunzip2(只能压缩文件) 更新的Linux压缩工具,比gzip有着更高的压缩率。bzip2(-d,解压) 文件名 bunzip2(解压) 文件名 bzcat 文件名(查看压缩文件的内容)
tar: 用于在磁带机、软盘、zip设备上做备份。也可以备份在一个硬盘文件上(不提供压缩功能)。
主要参数:
c: 将文件备份出来
v: 将过程输出
x: 从一个文件中接备份出来。
备份: tar cvf backup.tar * .txt
解开: tar xvf backup.tar –C (解压缩路径)back/
用tar打包并用gzip压缩: tar –zcvf test.tar.gz test –C /
用tar解包用gzip压缩的文件: tar –zxvf test.tar.gz.test –C /
用tar打包并用bzip2压缩:tar –jcvf test.tar.bz2 test –C /
用tar解包用bizp2压缩的文件: tar –jxvf tar.bz2 test –C /
dump/restore 备份与还原ext2/3文件系统,不可以在其他文件系统上使用,可以选择进行完全备份或增量备份。
dump -0(0,表示完全备份)u(将备份记录到/etc/dump/dates中) –f(指定备份路径) /var/tmp/hda2dump /dev/hda1(要备份的分区)
restore –r(还原操作)f(文件) /var/tmp/hda2dump(还原到当前路径)
Shell: 命令解释器,是用户与系统沟通时的媒介。
在Unix系统中有各种Shell, Linux 采用bash为其默认shell,系统可以使用的shell记录在/etc/shells中。
bash : Bourne Again Shell 的缩写。
环境变量:
定义: a= boobke 显示: echo $a 或eho ${a} 删除:unset a
常用的预定义环境变量:
HOME: 当前用户的主目录
PATH:当前用户的可执行文件搜索路径
LANG: 程序应该使用的默认语言(locale –a 查看系统支持的语系)
PS1: 行提示符 [/u@/h /W]/$
用户可以用set(显示本地变量和环境变量)或env(环境变量)查询当前的环境变量
将本地变量转换为环境变量的方式: export 变量名
history:在bash中输入history指令可以查询用户的过往操作,内存中记录的过往指令数根据环境变量中HISTSIZE而定。history表存储在内存中,在用户logout时会记录入用户主目录下的.bash_history文件中。在下次login时载入。
.bash_history中的指令数根据环境变量中的HISTFILESIZE而定。
history –w 强制把用过的指令写入.bash_history文件。
使用!来调用过往的指令:
!!: 重复执行上一条指令
!a: 重复执行上一条以a为首的指令
!number重复执行上一条在history表中记录号码为number的指令。
!-number:重复执行前第number条指令
!$ 截取上一条命令的参数
别名:用alias可以查看shell的别名.
定义: alias la=’ls –al’ 取消别名: unalias la
alias记录在shell中总是在最先行
命令行表达式:
“”将一串字符当成一个字符串来对待,如果字符川中包含特殊含义的字符,则转义$,/~!
‘’将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,也不转义
执行引用号——`` 引用命令的执行结果
ls –al ‘PWD’
数学运算——$[],在中括号内的表达式会被数学计算。
逸托付——/
用于取消命令行中字符的特殊含义;用于表示一行未结束
;用于分割多个指令,则同时执行多个指令。表示一行已结束,相当于回车键。
子shell激活——()
在小括号内的命令行表示激活一个子shell后在子shell中运行。
并且子shell中不会传递给当前shell
shell命令行支持在同一行的两条命令中插入&&(逻辑与)与||(逻辑或);&& 当前一条指令执行成功时再执行后一条指令
|| 当前一条指令执行失败时再执行后一条指令。
ls /test && echo "exist" || echo "no exist" 文件存在,则print exit,否则print “no exist”,
在默认情况下,在shell中设置变量,设置umask和别名,当退出shell时,改变则无效。
一个通过登录而得到的shell,一般是用户的初始shell,在登录shell下激活的shell采用登录shell的环境设定
登录shell从配置文件中读取其环境变量。
图形界面下的终端,及通过su都是非登录shell.
bash 在用户登录时从四个文件中读取环境设定:
全局设置文件(对所有用户生效):
/etc/profile(设置PATH, MAIL) /etc/bashrc(设置UMASK, PS1,自定义变量)
用户设置文件(只对特定用户有效):
~/.bashrc (设置别名和一些函数,以及) ~/.bash_profile (环境变量)
~/.bah_logout: 在用户logout的时候自动执行。
~/.bash_history: 用户login时自动读取其内容并加载到内存history记录中,logout时将内存history记录写入。
/etc/profile.d/*.sh:在/etc/profile中被执行,其中的环境设定,也会被全局引用。
登录shell : /etc/profile /etc/profile.d/*.sh ~/.bash_profile
~/.bashrc /etc/bashrc(有些版本可能不存在这个文件) su - lybing
注:先设置的环境变量值会被后设置的环境变量值所覆盖。
非登录shell: ~/.bashrc /etc/bashrc(有些版本可能不存在这个文件): /etc/profile.d/*.sh su lybing
从上看出:当重新登录或开启登录shell时,才会执行profile文件(包括家目录中的),而bash文件,则在登录和非登录中都会执行。
ctrl + d: 输入已结束。在shell下相当于一个exit
ctrl+c: 键盘中断请求
ctrl + s & ctrl + q:暂停/恢复屏幕输出
Tab键双击可以列出所有可能匹配的选择。
系统监控:
uname(-a完整信息): 显示系统信息 hostname : 显示主机名
last: 列出最近的用户登录 lastlog: 列出每一个用户的最近登录情况 free,vmstat 显示内存的情况(Linux充分利用内存) top 系统监视器(每5秒更新一次),top –d 3(每3秒更新一次),top –b(批处理)n(更新次数)top -b -n 2 > test.top top时按下大写P,按cpu使用率排序,按下M,以内存的,系统的原始进程是init,init的PID总是1,一个进程可以产生另一个进程,除了init以外,所有的进程都有父进程。 top & 以后台执行
ps: 查询进程的指令 _Ae(显示所有的), -a(列出所有与,但不包含中断的)
-l(长模式,当前登录用户的) –f(完整方式) -x -u(有效的),ps 后加不加(-)包含不同的含义 ps aux stat S(睡眠进程) S<(高优先级) SN(低优先级), Z(僵死进程,父进程已死的进程), R(运行进程)。 VSZ(虚拟内存占用量),(RSS,固定内存占有量),WCHAN 当前进程状态, F4超级用
pstree可以用来以树状方式表现进程关系-a, -aux
gnome-system-monitor gnome下的图形监视工具
kill: 语法: kill [-signal] PID, z向进程传递一个讯号(kill –l 查看所有讯息), SIGHUP(1,重启进程) , SIGINT(2,以前台方式终止进程) SIGKILL(9,强制终止进程) SIGTERM(15,正常方式结束进程),查看每个讯号的作用 man 9 sinal
killall 根据名称
进程的优先级:用nice值来表示,nice:以一个不同的nice值来运行指令, nice –n(-20(高)到19(低),默认是0,一般用户只能降低优先级)num command nice –n -2 top &
renice: 改变一个运行进程的nice值 renice –6 pid
同时,在top命令时,也可以按r,然后改变nice值
前台和后台
默认情况下,一个命令执行后,此指令将独占shell,并拒绝其他输入。我们称之为前台进程。反之,则称为后台进程。
对每一个控制台,都允许多个后台进程。
对前台/后台进程的控制与调度,被称为任务控制。
将进程送去后台执行: command &: 将一个进程直接丢入后台运行。
nohup command &: 将一个进程直接丢入后台运行,而且在该控制台退出后,进程仍不挂断。
ctrl +z:将一个正在运行的前台进程暂停,并丢入后台。
作业控制:即控制进程执行与挂起。
jobs: 列出系统当前的后台进程
fg:将后台进程拉回前台 fg jobid(作业号)
bg:激活后台暂停的进程
/prof目录是一个虚拟的文件系统,包含了来自正在运行着的核心的信息,用户可以通过cat /etc/proc/下的文件,来获得系统的信息。
这些信息包含系统硬件,网络设置,内存使用,及其它一些东西
proc/sys目录下的文件,允许系统管理员更动,这些变动直接影响当前核心内核参数。
每一个进程在该文件夹下都对应一个目录,并且以pid作为文件夹名。
系统日志记录着系统运行中的记录信息,在服务或系统发生故障的时候,通过查询系统日志,可以帮助我们诊断。
系统日志可以预警安全问题
系统日志一般都存放在/var/log目录下。
var/log/dmesg 核心启动日志(或直接输入dmesg查看)
var/log/messages 系统报错日志 tail -f /var/log/messages(查看最近写入日志的信息,并动态更新)
/var/log/maillog 邮件系统日志
/var/log/xferlog FTP服务用日志
/var/log/secure 安全信息 系统登录与网络连接的信息
/var/log/wtmp(二进制文件) 登录记录,last, lastlog 从此获得信息
用户管理
用户可以使用下列指令了解用户
who: 查询当前在线的用户
groups: 查询用户所属的组 groups 查看当前用户 groups lybing 查看指定用户
id: 显示当前用户信息
finger: 查询用户信息
whoami : 查询当前用户
用指令添加命令:
useradd <username> passwd <password>
系统添加用户的标准步骤:
编辑/etc/passwd与/etc/group
创建用户主目录
从/etc/skel拷贝文件与目录
让新用户获得其主目录与文件的拥有权限
给新用户一个密码
usermod -c lybing lybing 更改用户的全名
usermod –d /home/lybing lybing(只是指定家目录为相应目录,并不建立目录,要手动创建,并改变权限和拥有者的信息)
usermod –e “2009-01-01” 修改用户的过期时间
usermod –G 添加用户到指定组里面(实际上是更改用户所属的组)
usermod –g 更改用户的gid
usermod –s 更改用户的默认shell
usermod –u 更改用户的uid
usermod –p 更改用户的密码
usrmod –L 锁定用户 pssswd –S 查看用户密码状态
usermod –U 锁定用户解锁