【原】Linux笔记

文件说明

Linux文件说明

【原】Linux笔记_第1张图片

【原】Linux笔记_第2张图片

文件的rwx

  • d: 开始为d,表示目录 directory
    d: 表示文件夹
  • -: 开始为-,表示为普通的二进制文件
  • l: 开始为l,表示软连接文件(link)
  • r: read 读权限
  • w: write 写权限
  • x: execute 执行权限

文件类型:
【原】Linux笔记_第3张图片

Linux中的文件如:drwxr-xr-x 可以看做三个部分(rwx r-x r-x)

  • 分别是文件的所有者rwx(user)的权限
  • 所属组r-x(group)的权限
  • 和其他人r-x(others)的权限

文件处理命令

命令:ls(list)
描述:显示文件目录
语法:ls 选项[al] [文件或者目录]

  • -a: 显示所有文件,包括隐藏文件
  • -l: 显示详细信息

命令: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

  • 1.修改文件名称的功能
mv [源文件名称] [新文件名称]
  • 2.移动文件的位置
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的权限:

  • r:可以执行catch,more等操作。
  • w:修改文件的内容等写操作,但是不代表你可以把文件删除。
  • x:对象文件进行执行操作。

目录的rwx权限:

  • r:可读操作,可以列出目录的内容,比如ls命令
  • w:表示可以在目录下创建或删除文件的权限。
  • x:表示可以进入这个目录(基本上所有的目录都会有rx权限)。

所以:删除文件的权限,需要你拥有当前文件所在的目录的写权限。

命令: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

  • 用户名:用户登录系统时使用的用户名
  • 密码:密码位
  • UID:用户标识号
  • GID:缺省组标识号
  • 注释性描述:例如存放用户全名等信息
  • 宿主目录:用户登录系统后的缺省目录
  • 命令解释器:用户使用的Shell,默认为bash

用户类型
Linux用户一般分为三种:

  • 1.超级用户(root UID=0)
    一般来说UID为0的用户就是超级用户,但一般来说我们说root的权限特别的大,
    很多linux操作命令,都会不考虑root。
  • 2.普通用户(UID 500-60000)
    普通用户添加则按照UID=500开始默认递增
  • 3.伪用户(UID 1-499)
    伪用户一般是linux系统和进程服务相关的,比如bin,daemon,shutdown
    等,任何的linux系统都会有这些用户,比如我们进行我们进行关机操作,其实
    就调用了一个系统的伪用户的身份,在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)

  • TTY:表示以书面方式登录这台计算机(pts/0 远程登录)
  • FROM:表示从什么位置登录的
  • LOGIN@:表示登录时间
  • IDLE:表示用户闲置的时间
  • JCPU:表示当前这个用户执行的所有进程所耗时的总和
  • PCPU:表示执行程序耗费的时间
  • load avegage:表示系统的负载值,分别显示过去的1/5/15分钟

系统的负载程度,如果想知道系统的平均负载,三者之和除3即可,
最终结果如果在0.8一下表示系统正常,如果达到几十或上百,
那么系统负载非常高,可能无法响应任何命令。
WHAT:表示当前执行什么任务。

命令:ps

-a:显示所有用户的进程
-l:长格式显示
  • STAT:当前状态S休眠 D不可中断的休眠状态,R运行状态,Z僵死状态,T停止
  • UID:表示当前启动进程的用户
  • PID:进程号
  • PPID:父进程号
  • TTY:进程的优先级
  • IN:进程的优先级
  • TIME:进程启动以来占用的时间时间
  • CMD:进程的命令

其他选项:

-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目录确认

你可能感兴趣的:(Linux学习)