常用的linux/unix系统命令
命令的格式,一般是:
- 命令
- [参数]
- <文件/目录名>或者其他参数
- 如:ls -dl run (查看run文件夹目录的详细结构)
文件目录类命令
浏览目录类命令
-
ls命令
- list,显示当前文件夹下的文件及文件夹,用法
ls -[参数] <目录名称>
(位置可调)。常用参数:-a(显示徐所有文件夹下的文件及目录)、-l(现实详细的信息)、-d(查看当前目录下的文件目录属性,包括当前目录和上层目录) - 查看run目录的详细信息:
ls -l run
- list,显示当前文件夹下的文件及文件夹,用法
-
pwd命令
- print working directory,显示当前的工作目录路径
-
不同文件的文件类型和读写权限
目录操作命令
- cd命令
- change directory,功能是切换目录,用法
cd [目录]
- 切换到根目录
cd /
- change directory,功能是切换目录,用法
- mkdir命令
- make directory,创建新目录,用法
mkdir [目录名]
- 创建test目录:
mkdir test
- make directory,创建新目录,用法
- rmdir命令
- remove directory,删除空目录(非空目录无法删除),用法
rmdir [空目录]
- 删除空目录test:
rmdir test
- remove directory,删除空目录(非空目录无法删除),用法
浏览文件类命令
- cat命令
- concatenate and display files,意为连接文件并打印到标准的输出设备上,用法
cat -[参数] <文件名>
。常用参数:-E(在显示的每一行的后面自动添加一个$符号)、-n(在每一行的前面添加行号) - 显示一个文件:
cat m1
,显示多个文件(显示文件列表)cat m1 m2
- concatenate and display files,意为连接文件并打印到标准的输出设备上,用法
- more命令
- 分页显示文件内容,当查看的文件内容过多时,使用more命令,用法
more [文件名]
。使用f
、空格或者Enter
按行显示,q
或者Q
退出。
- 分页显示文件内容,当查看的文件内容过多时,使用more命令,用法
- less命令,和more命令的用类似,区被在于less命令可以通过上下键卷动文件
- head命令
- 显示文件的前几行内容,用法
head -[参数] <文件名>
,常用的参数:-n(显示前n行,不指定时显示10行) - 显示n.txt文件的前10行:
head -10 n.txt
- 显示文件的前几行内容,用法
- tail命令
- 显示文件的后几行内容,用法
tail -[参数] <文件名>
,常用的参数:-n(显示后几行内容,不指定时显示后10行)、+n(从第n行显示到文件末尾)、-F(显示不断增长的文件末尾,一般用于显示日志文件) - 显示不断增长的日志文件末尾:
tail -F log.txt
- 显示文件的后几行内容,用法
文件操作命令
- cp命令
- copy,文件复制命令,将文件从一处复制到另一处。一般在使用cp命令的时候,需要指定目标文件路径以及源文件路径。用法
cp -[参数] <源文件路径> <目标文件路径>
。 - 常用参数:-p(连同文件的属性一起复制,常用于备份)、-i(若目标文件已经存在,在覆盖时会先询问操作的执行)、-r(递归持续复制,用于目录的复制行为)、-u(目标文件与源文件有差异时才会复制)
- 复制test目录到test1:
cp -r test test1
- 复制
n.txt
文件,覆盖k.txt
:cp -i n.txt k.txt
- copy,文件复制命令,将文件从一处复制到另一处。一般在使用cp命令的时候,需要指定目标文件路径以及源文件路径。用法
- rm命令
- remove,删除文件或者目录。用法
rm -[参数] <文件/目录路径>
,常用参数:-f(force,强制删除,忽略不存在的文件,不会出现警告消息)、-i(互动模式,删除前会询问用户是否操作)、-r(递归删除,用于目录删除)
- remove,删除文件或者目录。用法
- find命令
- 用来寻找文件或目录。用法
find -[参数] 路径
,常用参数:-name filename(找出文件名为filename的文件)、-size [±]SIZE(找出比SIZE还要大或者小的文件)、-type TYPE(查找文件的类型为TYPE的文件,TYPE的值主要有(f:一般文文件,b/c:设备文件,d:目录,l:连接文件,s:socket,p:FIFO管道文件))、-perm mode(查找文件权限刚好等于mode的文件,mode用数字表示,如:0755)
- 用来寻找文件或目录。用法
- grep命令
- globally search and Regular Expression and Print,在文件中搜索匹配的字符并且输出(应该是按行查找并输出)。用法
grep -[参数] <要找的字符串> [要寻找字符串的源文件]
,常用的参数:-a(将文件以 text文件的方式查找数据)、-c(“查找字符串”的次数)、-i(忽略大小写区别,把大小写视为相同)、-v(反向选择,即显示出不包含查询字符串的其他内容) - 查找n.txt文件中的1:
grep 1 n.txt
- 查找n.txt文件中含有1的内容行数量:
grep -c 1 n.txt
- 查找n.txt文件中除了1之外的内容:
grep -v 1 n.txt
- 查找*.txt文件的1(*代表查找当前目录下所有text文件类型):
grep 1 *.txt
- globally search and Regular Expression and Print,在文件中搜索匹配的字符并且输出(应该是按行查找并输出)。用法
- tar命令
- tape archive,将用户所指定的文件或者目录打包成一个文件,也可以通过指定参数压缩/解压缩,用法
tar -[参数] <文件>
,常用参数:-c(新建打包文件)、-t(查看打包文件的内容含有哪些文件名)、-x(解压缩,通过搭配-C指定解压缩的目录)、-j(通过bzip2的支持进行压缩/解压缩)、-z(通过gzip的支持进行压缩/解压缩)、-v(在压缩的过程中,将正在处理的文件名显示出来)、-f filename(filename为要处理的文件)、-C(指定压缩/解压缩的目录) - 把当前目录下的所有文件压缩成test.tar文件:
tar -cvf test.tar *
- 把test.tar文件解压:
tar -xvf test.tar
- 把当前文件下的所有文件以gzip的形式压缩:
tar -czvf test.tar.gz *
- 把test.tar.gz文件解压出来:
tar -xzvf test.tar.gz
- 查看当前压缩文件中有哪些文件名:
tar -tf test.tar.gz
- 解压到某一个文件夹下:
- 把压缩文件cp到某个文件夹
- 在该文件夹下解压缩
- tape archive,将用户所指定的文件或者目录打包成一个文件,也可以通过指定参数压缩/解压缩,用法
进程控制类命令
程序和进程的区别:程序是包含代码的可执行文件;进程是操作系统把程序装载到内存中,并且分配一定的资源,此时是进程。
程序是一个静态的概念,进程是一个动态的概念。
进程状态图
-
ps命令
- 显示系统瞬间的进程信息,可以显示出用户输入ps命令时系统的进程以及进程的相关信息。用法
ps -[参数]
,常用的参数:-l(长格式输出)、-u(按用户名和启动时间的顺序来显示进程)、-j(用任务格式显示进程)、-f(用树型格式显示进程)、-a(显示所有用户的所有进程)、-x(显示无控制终端的进程)、-r(显示运行中的进程) - 查找pp用户的进程:
ps -aux | grep pp
- 显示系统瞬间的进程信息,可以显示出用户输入ps命令时系统的进程以及进程的相关信息。用法
-
top命令
- 动态监视系统任务功能,输出结果是连续的。用法
top -[参数]
- 具体参数,百度
- 动态监视系统任务功能,输出结果是连续的。用法
控制进程命令
- kill命令
- 向某个进程传送一个信号,用法
kill -signal PID
,执行kill -l
查看那常用的signal参数 - 杀死进程:
kill -9 PID
- 强制杀死进程:
kill -KILL PID
- 向某个进程传送一个信号,用法
- killall命令
- 杀死一组同名的进程。用法
killall -[参数] <正在运行的进程名>
,常用的参数自行百度 - 杀死名称为game的进程:
killall game
- 杀死一组同名的进程。用法
- nice命令
- 以更改过的优先序来执行程序,如果未指定程序,则会印出目前的排程优先序,内定的 adjustment 为 10,范围为 -20(最高优先序)到 19(最低优先序)。
- 后台运行:
vi &
- 设置默认优先级:
nice vi &
- 设置优先级为19:
nice -n 19 vi &
- renice命令
- 改变一个正在运行的进程的nice值。用法
renice -[参数] <pid>
,常用参数:-n(指定程序运行优先级的调整值) - 将vim的nice值改为9:
renice -n 9 pid
- 改变一个正在运行的进程的nice值。用法
- fg/bg
- fg(将挂起的进程恢复到前台继续运行
fg [n]
)、bg(恢复到后台继续运行bg [n]
), n是工作号,通过jobs
查看挂起的进程。
- fg(将挂起的进程恢复到前台继续运行
用户及权限管理类命令
Linux的用户分为三类,超级用户、系统用户和普通用户。超级用户拥有最高权限;系统用户与系统服务相关,但是不能登陆;普通用户由超级用户创建并赋予权限,只能操作其拥有权限的文件和目录,只能管理自己启动的进程。
用户信息的组成
一组用户信息由多部分组成,查看/etc/passwd
文件,可以浏览用户的信息。
口令字段用x填充,加密后的口令保存在/etc/shadow
文件中。
shadow文件只有超级用户才能查看并且修改以及加密存储。
- 用户名:唯一,字母、数字、符号组成。
- 口令:在passwd文件中以x表示。
- 用户id(uid):每个用户都拥有一个唯一的识别号码。超级用户的id为0;系统用户的id在1-499范围;普通用户的id从500开始。
- 用户组id(gid)
- 用户主目录
- 全称:用户账户的附加信息,可以为空。
- 登陆Shell:默认为Bash
用户组
- linux将相同特性的用户划分为同一个用户组,可以大大简化用户的管理,方便用户之间的文件共享,任何用户都至少属于一个用户组。
- 一个用户只能属于一个用户组,但是可以同时属于多个附加组。用户不仅拥有其用户组的权限,还可以拥有其附加组的权限。
- 用户组包括系统用户组和私人用户组
用户组的帐号信息在group
文件中,每一个行为一个组的信息,每一个组的信息字段代表的意思依次是:用户组名、口令、用户组id、附加用户列表(由下图可以看出,qemu不仅属于自己的组,还属于kvm的附加组用户)
用户组的口令信息在/etc/gshadow文件中。
用户管理命令
-
useradd命令
- 新建用户帐号(超级用户可用),用法
useradd -[参数] <用户名>
,常用参数:-d(用户登陆时的主目录)、-e(帐号终止日期)、-g(帐号所属用户组)、-G(帐号所属附加组)、-s(帐号登陆后所使用的shell)、-u(指定用户id号) - 创建zhangsan,指定用户组net4(net4必须已存在):
useradd -g net4 zhangsan
- 新建用户帐号(超级用户可用),用法
-
passwd命令
- 设置或者修改用户的密码,用法
passwd [参数] <用户>
,常用参数:-d(删除密码)、-l(锁定指定帐号使用)、-u(解除指定账户锁定)、-S(显示密码信息)、-x(设置密码的有效期)、-i(过期后停止使用账户) - 锁定zhangsan的帐号:
passwd -l zhangsan
- 解锁zhangsan的帐号:
passwd -u zhangsan
- 设置zhangsan密码(执行命令之后输入密码):
passwd zhangsan
- 设置或者修改用户的密码,用法
-
usermod命令
- 修改用户的属性,用法
usermod -[参数] <用户名>
。常用参数同useradd
命令的相同。-l(指定新用户名),用法usermod -l [新用户名] [旧用户名]
。
- 修改用户的属性,用法
-
userdel命令
- 删除指定的用户账户(超级用户可用),用法
userdel [参数] <用户名>
,常用参数:-r(不仅删除用户账户,并且删除用户主目录以及本地邮件存储的目录或文件)、-f(删除用户登入目录以及目录中的所有文件) - 如果被删除的用户属于私人组群,并且组群没有其他用户,则该组群也一并删除;正在使用系统的用户不能被删除。
- 删除指定的用户账户(超级用户可用),用法
-
su命令
- 切换用户身份,用法
su [用户名]
。 - 超级用户可以切换成任何普通用户,而不需要输入指令;普通用户转化成其他用户的时候需要输入被转换用户的口令。
- 使用exit可以返回到本来的用户身份。
- 切换用户身份,用法
-
id命令
- 查看用户的UID、GID和用户所属用户组的信息,如果不指定用户,则显示当前用户的相关信息。用法
id <用户名>
- 查看当前用户的UID、GID等信息:
id
- 查看zs的UID、GID等信息:
id zs
- 查看用户的UID、GID和用户所属用户组的信息,如果不指定用户,则显示当前用户的相关信息。用法
-
whoami命令
- 查看当前用户名
whoami
-
w命令
- 查看当前登陆系统用户和详细信息。
w
用户组管理命令
-
groupadd命令
- 新建组群,用法
groupadd -[参数] <用户组名>
。常用参数:-g(指定用户组ID)、-o(允许组ID不唯一) - 创建一个zsgroup:
groupadd -g 1101 -o zsgroup
- 新建组群,用法
-
groupmod命令
- 修改指定用户组的属性,用法
groupmod -[参数] <用户组名>
,常用参数:-g(指定新的用户组名)、-n(指定新的用户组名字)、-o(允许组Id不唯一)
- 修改指定用户组的属性,用法
-
groupdel命令
- 删除指定的用户组,用法
groupdel <用户组名>
。 - 如果该组群是某些用户的主要组群,则需要先删除用户之后再删除组群。
- 删除指定的用户组,用法
文件权限
- 读取权限:浏览文件/目录中内容的权限。
- 写入权限
- 对文件而言是修改文件内容的权限
- 对目录而言是删除、修改、添加和重命名目录中的文件的权限。
- 执行权限
- 对可执行权限而言是允许执行的权限
- 对目录而言是进入目录的权限
文件用户分类
- 文件所有者:建立文件和目录的用户
- 文件所有者所在组用户:文件所有者所属用户组中的其他用户
- 其他用户:既不是文件所有者,又不是文件所有者所在组的其他所有用户
- 超级用户:负责整个系统的管理和维护,拥有系统中所有文件的全部访问权限。
如下图是权限的表示方式
-
r:读
-
w:写
-
x:执行
-
chmod命令
- 修改文件的访问权限,用法
chmod <模式> <文件>
。 - 模式
- 对象(u文件所有者、g同组用户、o其他用户)
- 操作符:+增加、-删除、=赋予
- 权限:r读、w写、x执行、s设置用户ID
- 举例
- 取消同组用户对file文件的写入权限:
chmod g-w file
- 将pict目录的访问权限设置为775:
chmod 775 pict
- 设置file文件用户id位:
chmod u+s file
- 取消同组用户对file文件的写入权限:
- 修改文件的访问权限,用法
-
chown命令
- 修改文件所有者,将指定文件的拥有者改为指定的用户或者用户组,用法
chown [参数] <所有者/组> <文件> ...
,常用参数:-c(显示更改的部分的信息)、-f(忽略错误信息)、-h(修复符号链接)、-R(处理指定目录以及其子目录下的所有文件)、-v(显示详细的处理信息)、-deference(作用于符号链接的指向,而不是链接文件本身) - 用户是用户名或者用户id,用户组可以是组名或者组ID
- 文件是以空格分开的要改变权限的文件列表,支持通配符
- 将文件ex1的所有者修改为hellen:
chown hellen ex1
- 修改文件所有者,将指定文件的拥有者改为指定的用户或者用户组,用法
-
chgrp命令
- 修改文件所属用户组,用法
chgrp -[参数] <组> <文件>
。常用参数与chown
命令类似。–no-dereference 作用于符号链接本身。 - 将ex1文件所属的用户组由root改为staff:
chgrp staff ex1
- 修改文件所属用户组,用法