Linux文件说明
文件的rwx
Linux中的文件如:drwxr-xr-x 可以看做三个部分(rwx r-x r-x)
命令:ls(list)
描述:显示文件目录
语法:ls 选项[al] [文件或者目录]
命令:touch
语法:touch [文件名]
描述:创建一个空文件(如果文件已存在,则会更新该文件的更新时间)
命令:mkdir
语法:mkdir [-p] [文件夹名称](-p 递归的创建文件夹)
描述:创建一个文件夹
命令:cat
语法:cat [文件名称]
描述:查看文件内容(内容过多,显示内容可能不全)
命令:more
语法:more [文件名称]
描述: 查看文件内容,可完全显示
用法:使用空格进行翻页,回车显示下一行,q退出(或者 ctrl+c)
命令:cp(copy)
语法:cp [源文件名] [目标文件名]
描述:复制文件或者目录
cp -r [源目录] [目标目录] (-r 递归)
命令:rm(remove)
语法:rm -f [文件]
描述:删除文件或目录
rm -r [目录]
rm -rf [目录,包含目录下内容]
命令:head
语法:head -number [文件名]
描述:查看文件的前多少行
命令:tail
语法:tail -number [文件名]
描述:查看文件的后多少行
例: tail -6 a.txt
命令:mv
mv [源文件名称] [新文件名称]
mv [源文件名称] [新文件位置+新文件名称]
命令:ln(link)
语法:ln -s [源文件] [目标文件](硬链接则不需要-s选项)
描述:创建软链接文件
软链接特点:权限是所有人都可以访问,并且软链接文件指向
源文件。
软链接就像windows系统中的快捷方式一样,特点也都类似。
硬链接:类似copy,硬链接大小和源文件一样,并且是同步更新的。
另外:硬链接不能跨文件系统分区,而软链接可以。
命令:chmod
语法:chmod [{ugo}{+-=}{rwx}] [文件或目录](u=user,g=group,o=other)
或:chmod [mode=421] [文件目录]
描述:改变文件或目录的权限
形如:chmod g+w filename (group增加w权限)
chmod 761 filename (r=4,w=2,x=1,761表示权限为rwxrw---x,777表示权限为rwxrwxrwx)
问题示例:
新建一个新的目录,下面一个新文件,尝试用普通用户去
删除新目录下的文件。
1.尝试修改:新文件的读写权限设置为777,进行删除文件操作
2.尝试修改:新目录的读写权限设置为777,进行删除文件操作
文件的rwx的权限:
目录的rwx权限:
所以:删除文件的权限,需要你拥有当前文件所在的目录的写权限。
命令:chown
语法:chown user 文件名
描述:改变文件的所有者
示例:
chown newuser t1.sh
useradd username 添加用户
passwd username 为用户设置密码
命令:chgrp
语法:chgrp group 文件名称
描述:改变文件的所属组
-R
处理指定目录以及其子目录下的所有文件
示例:chgrp adm t1.sh
查看系统默认的权限:
umash -S (umask 查看权限掩码值022 使用777-022得到真实权限)
命令:find
语法:find [搜索范围路径] -name [文件名称](根据文件名查找)
(例:find /etc -name init)
find [搜索范围路径] -size[(+-)文件大小]
(根据文件大小查找,大于+,小于-)
(例:find /etc -size +1024)
find [搜索范围路径] -user (文件的所有者)
(例:find -user caizh -name init)
find [时间查找] [以天为单位]
[以天为单位] ctime、atime、mtime
[以分钟为单位] cmin、amin、mmin
描述:查找任何文件或者目录(所有)
c
表示:change
改变文件属性的意思(比如所有者、所属组、权限变更)。
a
表示:access
表示被访问过的意思(比如被查看过等)。
m
表示:modify
更改内容的意思。
在时间前面添加:-
表示之内,+
表示之外
例:(find /etc -ctime -1
表示修改文件属性时间为一天之内的文件)
find应用的连接符:
-a
(and的意思,逻辑与)
-o
(or的意思,逻辑或)
(例:find /etc -size +163840 -a -size -204900
)
find查找:-type
根据文件类型进行查找:
其中:f表示二进制文件,l表示软连接文件 d表示目录
(例:find /etc -type d -o -name t1.sh
)
命令:which
语法:which [命令名称]
描述:查看命令所在的目录位置
在linux里面一般只有两种命令,第一种是所有用户都可以使用,
第二种则是只允许管理员使用,还有一个命令叫whereis,和which使用类似
比如: rm命令,其实我们可以使用 which rm查看其命令内容:
which rm
alias rm='rm -i'
/bin/rm
alias
就是别名的意思,说明我们使用的rm命令在默认的情况下加了 -i
选项,
意思是在删除的时候进行询问是否需要删除,
那么添加"\"
就使用真正的rm
命令而不是别名,直接就可以删除不需要提示询问。
find的连接执行符号:
find ... -exec [执行命令] {} \;
注意:“{}"
表示find命令查找的结果,而"\"
表示转义符
(例:find /usr/local -name a.txt -exec rm -f {} \;
查看a.txt文件并删除)
find -inum [i节点标号]
根据i
节点查找文件,在linux系统中,
所有的文件都有一个唯一的标识,方便linux内核去调用,这就是i节点
(查看节点:ls -li
)
(例:find /etc -inum
)
命令:locate
语法:locate [文件名称]
描述:查找文件,根据linux数据库内部的索引
(updatedb命令,可以手工更新updatedb数据库,一般和locate配合使用)
(例:locate t2.txt
)
(更新内核数据库:updatedb
)
注意:locate的查找速度非常快,比find查找快很多,
原因是locate查找的是linux系统构建的文件数据库的索引值,所以速度非常快,
但是有的时候新创建的文件使用locate命令查找不到,
原因是这个文件的索引没有马上更新到linux系统文件数据库里。
命令:tar
语法:tar [zcvf] [zxvf] [打包文件名.tar.gz] [源文件]
-c 产生tar打包文件(必选)
-x 产生的解压缩文件(必选)
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
描述:打包目录 生成的后缀名 .tar.gz
,或者进行解压
最后配置加-C 表示文件解压后存放的路径
(例:打包=tar -zcPvf b.tar.gz b.sh,注意要加一个-P(大写)的参数
)
(例:解压缩=tar -zxvf b.tar.gz -C /usr/local/ 注意-C参数
)
命令:zip
语法:zip 选项[-r] [压缩后文件名称] [源文件]
描述:zip的格式是windows和linux通用的格式,可以压缩文件和目录,压缩目录时需要选项-r。
命令:unzip
语法:unzip [解压缩的文件]
描述:进行解压缩
最后配置加-d
表示文件解压后存放的路径
过滤:grep
,可以将指定内容进行过滤然后输出。(grep -v (-v 排除)
)
管道:
将一个命令的输出传送给另一个命令,作为另外一个命令的输入。管道可以连接N个命令。
例:
ls -l /etc | more
(表示将ls -l /etc的输出,当做more命令的输入,即more命令浏览的内容为前面命令的输出结果)
ls -l /etc | grep init
(表示将ls -l /etc的输出结果进行过滤,显示为init的结果)
ls -l /etc | grep init | wc -l
(最后进行统计显示的个数)
ps 查看进程
ps -el
查看进程的详细信息
输出重定向:就是把输出的结果显示到一个文件上 (>表示输出重定向
注意箭头的方向,即存放的位置)
例:ls -l /usr/local/ > /usr/local/a.log
如果想进行结果的追加,使用">>"
例:ls -l /usr/local >> /usr/local/a.log
输入重定向:就是把输入的信息重定向,比如把一个文件里的内容,进行发出
例:wall(广播) < /usr/local/a.log(把a.log中的内容广播出去)
错误重定向:一般是把程序执行的错误日志信息存放到指定的log日志中去。
例:dadadadadada(随便打的错误命令) 2> /usr/local/a.log (输出到a.log中)
用户信息文件:/etc/passwd
密码文件:/etc/shadow
用户配置文件:/etc/login.defs /etc/default/useradd
新用户信息文件:/etc/skel
用户组文件:/etc/group
用户组密码文件:/etc/gshadow
用户信息文件:/etc/passwd
用户类型:
Linux用户一般分为三种:
添加用户组:groupadd [配置选项] [组名]
例:groupadd -g 1001 webs(-g 指定groupid)
删除用户组:groupdel [组名]
例:groupdel webs
修改用户组:groupmod -n [新组名] [旧组名]
查看用户属于哪些组:
例:groups mysql
添加用户:useradd 设置选项用户名 -D 查看缺省参数
u:UID
g:缺省所属用户组的名称或GID
G:指定用户所属多个组
d:宿主目录
s:命令解释器Shell
c:描述信息
e:指定用户失效时间
修改用户:usermod -l [新用户][旧用户]
删除用户:userdel -r [用户名]
设置用户的禁用和恢复
禁用:
usermod -L [用户名]
passwd -l [用户名]
恢复:
usermod -U [用户名]
passwd -u [用户名]
用户组操作:
命令:gpasswd
-a 添加用户到用户组中(gpasswd -a [用户名] [用户组名])
-d 从用户组中删除用户(gpasswd -d [用户名] [用户组名])
命令:w(who)
系统的负载程度,如果想知道系统的平均负载,三者之和除3即可,
最终结果如果在0.8一下表示系统正常,如果达到几十或上百,
那么系统负载非常高,可能无法响应任何命令。
WHAT:表示当前执行什么任务。
命令:ps
-a:显示所有用户的进程
-l:长格式显示
其他选项:
-u:显示用户名和启动时间
-x:显示没有控制终端的进程
-e:显示所有进程,包括没有控制终端的进程
-w:宽行显示,可以使用多个w进行加宽显示
命令:ps -el
查看所有的进程,包括没有终端的进程
命令:ps -aux
这个命令可以显示当前进程占用CPU和内存的百分比
命令:ps -el --sort pid
进行对进程排序,也可以使用其他字段排序
命令:ps -aux | grep rpc
对进程结果进行过滤
杀死进程
命令:kill [进程号] (关闭进程 kill 1234)
kill -9 [进程号] (强制关闭进程 kill -9 1234)
kill -1 [进程号] (重启进程 kill -1 1234)
xkill 关闭图形程序
killall 结束所有进程
查找服务进程号:pgrep [服务名称]
关闭进程:pkill [进程名称] pkill redis
命令:top
语法:top
描述:进程状态显示和进程控制,每5秒自动刷新一次(动态显示)
-d:指定刷新的时间间隔
-c:显示整个命令行的详细信息
-u:可以查看指定用户的进程
-k:终止正在执行的进程
at
安排作业在某一时刻执行一次
cron
安排周期性运行的作业
一次性计划任务
命令:at
(时间不能是过去时间)
语法:at 时间(at 22:20 2018-07-20)
绝对计时方法:HH:MM YYYY-MM-DD
相对计时方法:now + n minutes now + n hours now + n days
描述:安排一个或多个命令在指定的时间运行一次
(ctrl+d保存退出)
at -d or atrm 删除队列中的任务
at -l or atq 查看队列中的任务
如果/etc/at.allow
存在 则在里面的用户可以使用at执行计划
如果/etc/at.deny
存在 则在里面的用户都不可以使用at执行计划
如果文件都不存在,则只有root可以使用at执行计划
周期性任务计划
命令:crontab
语法:crontab {-l|-r|-e}
-l 显示当前的crontab
-r 删除当前的crontab
-e 使用编辑器编辑当前的crontab
文件描述:用于生成cron进程所需要的crontab文件
注意:时间选项都不能为空,不知道的值统一用*
,表示任何时间,
每个时间字段都可以指定多个值,不连续的值用","
,分隔,连续的值
用"-"
分隔,注意命令应该使用绝对路径,用户必须要具有运行
所对应命令的权限。
如果crontab程序没有启动,则需要手工启动:
ps -el | grep crond
/etc/rc.d/init.d/crond start
crontab 文件建立好以后可以到/var/spool/cron目录确认