linux命令相关
文件和目录相关: 24个命令
用户及权限:16个命令
一、文件、目录、磁盘管理
1、Linux 目录:万物皆文件
/:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
/bin、/usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
/boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~ edu 表示用户 edu 的家目录。
/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
/opt:给主机额外安装软件所摆放的目录。
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
/root:系统管理员root的家目录。
/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
/usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
2、文件用户划分
文件所有者,创建文件的用户
文件用户组,与文件所有者同组的用户
[每当创建一个用户的时候,当我们没有给他指定用户组的时候,他会默认创建一个与用户名同名的用户组,一个用户可以同时存在于多个用户组]
文件其他用户,系统内其他的用户,与文件所有者不同组的用户。
3、权限
d rwx r-x r-x 1 python python 1M -------
d:指的是文件类型 拥护者权限 用户组的权限 其他用户的权限 硬连接数 文件所有者 用户组 文件大小
第1个字母代表文件的类型:“d” 代表文件夹、“-” 代表普通文件、
“c” 代表硬件字符设备(一次传输一个字节的设备被称为字符设备,比如键盘,字符终端等)、
“b” 代表硬件块设备一次传输数据为一整块的被称为块设备,比如硬盘,光盘等.最小数据传输单位为一个数据块(通常一个数据块的大小是512字节)、
“p” 表示管道文件、“l” 代表软链接文件、 “s” 表示该文件为sock文件
后 9 个字母分别代表三组权限:文件所有者、用户组、其他用户拥有的权限。
- 读取权限“r”,对于文件,可以读取文本的内容,对于目录,指的是浏览目录的权限
- 写入权限“w”,对于文件,新增或者修改文件内容的权限,对于目录指的是删除或者移动目录内的文件
- 可执行权限“x”,对于文件,执行文件的权限,对于目录,指的是具有进入目录的权限
普通文件:touch regular 目录:mkdir directory
符号链接:ln -s ./regular symbolic 管道文件FIFO: mknod fifo p 、 mkfifo 1.pipe
字符特殊文件:mknod character c 1 1 块特殊文件:mknod block b 1 2
4、文件命令相关:
(1)help
一般是linux命令自带的帮助信息 例如: ls --help
(2)man
是linux提供的一个手册,包含了绝大部分的命令、函数使用说明,该手册分成很多章节(section),使用man时可以指定不同的章节来浏览。
例:man ls ; man 2 printf
man设置了如下的功能键:
空格键--显示手册页的下一屏 Enter键--一次滚动手册页的一行
b--回滚一屏 f--前滚一屏 q--退出man命令 h--列出所有功能键
(3)cat
cat:显示文件内容/合并文件内容
cat filename #显示文件内容 一次性显示,若文件过长会发生滚屏的情况
cat file1 file2 > file3 #将file1与file2的内容合并到file3文件中
(4)more/tail/less:分屏显示
more:分屏显示
cat查看内容时,在信息过长无法在一屏上显示时,会出现快速滚屏,使得用户无法看清文件的内容,此时可以使用more命令,每次只显示一页,按下空格键可以显示下一页,按下q键退出显示,回车显示下一行,按下h键可以获取帮助。
more 123.txt
tail用于显示文件尾部的内容,默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
1、显示文件file的最后10行:
[root@ubuntu ~ ]# tail file
2、显示文件file的内容,从第20行至文件末尾:
[root@ubuntu ~ ]# tail -n 20 file
3、显示文件file的最后10个字符:
[root@ubuntu ~ ]# tail -c 10 file
less命令 – 分页显示工具
浏览文字档案的内容,用less命令显示文件时,PageUp键向上翻页,PageDown键向下翻页,要退出less程序,应按Q键。
less的作用与more十分相似,不同点为less命令允许用户向前或向后浏览文件,而more命令只能向前浏览
- b 向后翻一页
- d 向后翻半页
- h 显示帮助界面
- Q 退出less 命令
- u 向前滚动半页
- y 向前滚动一行
- 空格键 滚动一页
- 回车键 滚动一行
ps查看进程信息并通过less分页显示:
[root@linuxcool ~]# ps -ef |less
查看命令历史使用记录并通过less分页显示:
[root@linuxcool ~]# history | less
wc命令 – 统计文件的字节数、字数、行数
-w 统计字数,或–words:只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
-c 统计字节数,或–bytes或–chars:只显示Bytes数
-l 统计行数,或–lines:只显示列数
-m 统计字符数
-L 打印最长行的长度
[root@linuxcool ~]# wc -w test.txt
10 test.txt
(5)touch – 创建一个空文件
touch work.c
(6)| – 管道
一个命令的输出可以通过管道做为另一个命令的输入
管道我们可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里“ | ”的左右分为两端,左端塞东西(写),右端取东西(读)。
ls -lh | more #通过管道我们可以写两个命令,前面的命令的输出是后面命令输入的内容,最后显示后面命令的输出
(7)clear:清屏
clear作用为清除终端上的显示(类似于DOS的cls清屏功能),也可使用快捷键:Ctrl + l ( “l” 为字母 )。注意:这个清除屏幕并不是删除之前的内容,而是让我们的屏幕向上滚动一页。
(8)cd:切换工作目录
在使用Unix/Linux的时候,经常需要更换工作目录。cd命令可以帮助用户切换工作目录。Linux所有的目录和文件名大小写敏感,cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。
cd :切换到当前用户的主目录(/home/用户目录),用户登陆的时候,默认的目录就是用户的主目录。
cd ~ :切换到当前用户的主目录(/home/用户目录)
cd . :切换到当前目录
cd .. :切换到上级目录
cd - :可进入上次所在的目录
(9)pwd:显示当前路径
使用pwd命令可以显示当前的工作目录,该命令很简单,直接输入pwd即可,后面不带参数。
(10)ls: 以列表显示目录文件信息
-
ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令。 -a 显示指定目录下所有子目录与文件,包括隐藏文件 -l 以列表方式显示文件的详细信息 -h 配合 -l 以人性化的方式显示文件大小 ? 匹配0个或者1个x - 匹配0个或者任意多个字符 []:[”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。 [abc]:匹配a、b、c中的任意一个 [a-f]:匹配从a到f范围内的的任意一个字符 1.若查看指定目录下的所有文件的详细信息 ls -alh filename 2.查看以.txt结尾的文件 ls -alh *.txt 3.查看以demo开头的文件 ls -alh demo* 4.查看文件名包涵python的文件 ls -alh *python* 5.查看文件名中包涵数字的文件 ls -alh *[0-9]* 6.查看文件名只有一个字符并且以.py结尾的 ls -al ?.py
(11)">"重定向
">" 重定向,可以将命令显示的内容重定向一个文件中,使用此若文件存在则覆盖,若文件不存在,则创建
echo "123" > 123.txt
">>"重定向,可以将命令显示的内容重定向一个文件中,使用此若文件存在则追加,若文件不存在,则创建
echo "123" >> 123.txt
(12)mkdir:创建目录
通过mkdir命令可以创建一个新的目录。
参数-p可递归创建目录。
需要注意的是新建目录的名称不能与当前目录中已有的目录或文件同名,
并且目录创建者必须对当前目录具有写权限。
mkdir -p aa/bb//cc
(13)rmdir:删除目录
可使用rmdir命令删除一个目录。目录必须为空目录,不然提示删除失败。
rmdir emptydir
(14)rm:删除文件
可通过rm删除文件或目录。使用rm命令要小心,因为文件删除后不能恢复。为了防止文件误删,可以在rm后使用-i参数以逐个确认要删除的文件。
-i --以进行交互式方式执行 -f --强制删除,忽略不存在的文件,无需提示
-r --递归地删除目录下的内容,删除目录时必须加此参数
rm -rf dir
(15)ln:建立链接文件
链接文件分为软链接和硬链接。
软链接(ln -s 源文件 链接文件):软链接不占用磁盘空间,源文件删除则软链接失效。(相当于快捷方式)
使用软连接的时候,当你将源文件删除的时候,软连接就失效了。
注意:当给文件创建软连接的时候,若源文件与连接文件不在同一个目录下,我们必须使用绝对路径,若使用相对路径,一旦挪动连接文件的位置,则此链接就会失效,使用绝对路径不会出现这种情况。
ln -s old new
硬链接(ln 源文件 链接文件):硬链接只能链接普通文件,不能链接目录(报错),两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在(相当于两个文件(源文件,链接文件)指向同一块内存区域)
ln old.txt new.txt
(16) tree:查看目录结构
以树状的形式展示目录结构,需安装tree命令
hh@ubuntu:~/Desktop/aa$ tree bb
bb
└── cc
└── ee
(17)find:查找文件
用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件
查找特定的文件的时候,无需使用单引号或者双引号将文件扩起来,但是若使用正则的时候,我们需要将正则的字符串使用单引号或者双引号给扩起来
find dir -name/-size file
find ./ -name test.sh 查找当前目录下所有名为test.sh的文件
find ./ -name '*.sh' 查找当前目录下所有后缀为.sh的文件
find ./ -name "[A-Z]*" 查找当前目录下所有以大写字母开头的文件
find /tmp -size 2M 查找在/tmp 目录下等于2M的文件
find /tmp -size +2M 查找在/tmp 目录下大于2M的文件
find /tmp -size -2M 查找在/tmp 目录下小于2M的文件
find ./ -size +4k -size -5M 查找当前目录下大于4k,小于5M的文件
(18)grep:文本搜索
Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。
grep一般格式为:grep [-选项] ‘搜索内容串’ 文件名
在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep 'a' 1.txt。
-v --显示不包含匹配文本的所有行(相当于求反)
-n --显示匹配行及行号
-i --忽略大小写
grep搜索内容串可以是正则表达式。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
^a --行首,搜寻以 m 开头的行;grep -n '^a' 1.txt
ke$行尾搜寻以结束的行; --行尾,搜寻以 ke 结束的行;grep -n 'ke$' 1.txt
[Ss]igna[Ll] --匹配 [] 里中一系列字符中的一个;搜寻匹配单词signal、signaL、Signal、SignaL的行;grep -n '[Ss]igna[Ll]' 1.txt
. --(点)匹配一个非换行符的字符;匹配 e 和 e 之间有任意一个字符,可以匹配 eee,eae,eve,但是不匹配 ee,eaae;grep -n 'e.e' 1.txt
grep -n ‘^a’ demo.txt
grep -n 't[xn]t' demo.txt
(19)cp:拷贝文件
cp命令的功能是将给出的文件或目录复制到另一个文件或目录中
-a 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。
-f 已经存在的目标文件而不提示
-i 交互式复制,在覆盖目标文件之前将给出提示要求用户确认
-r 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。
-v 显示拷贝进度
cp [-选项] 源文件/目录 目标文件/目录
源文件/目录必须存在(否则报错),目标文件/目录不存在则新建文件/目录,若存在文件则覆盖文件内容,目录存在则复制到它的下级目录
cp -favr a/b/cc.txt a/ceshi.txt
(20)mv:移动文件,用户可以使用mv命令来移动文件或目录,也可以给文件或目录重命名。
常用选项说明:
-f --禁止交互式操作,如有覆盖也不会给出提示
-i --确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件
-v --显示移动进度
mv [-选项] 源文件 目标文件
若目标文件存在并且是目录的情况下,则将源文件移动到指定目录下,若目标文件存在但是不是目录,则源文件覆盖目标文件,
若目标文件不存在,则将源文件进行重命名。
mv -fv old.c new.c
(21)tar:归档管理
计算机中的数据经常需要备份,tar是Unix/Linux中最常用的备份工具,此命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开以恢复数据。
tar使用格式
tar [参数] 打包文件名 文件
tar命令很特殊,其参数前面可以使用“-”,也可以不使用。
常用参数:
-c --生成档案文件,创建打包文件
-v --列出归档解档的详细过程,显示进度
-f --指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-t --列出档案中包含的文件
-x --解开档案文件
注意:除了f需要放在参数的最后,其它参数的顺序任意。
tar -cvf test.tar * #打包
tar -xvf test.tar * # 解包
(22)gzip:文件压缩解压
tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
gzip使用格式如下:
gzip [选项] 被压缩文件
常用参数:
-d --解压
-r --压缩所有子目录
tar这个命令并没有压缩的功能,它只是一个打包的命令,但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能,实行一个先打包后压缩的过程。
1. 压缩用法:tar cvzf 压缩包包名 文件1 文件2 ...
# 打包并压缩文件
tar -zcvf test.tar.gz *
1. 解压用法: tar zxvf 压缩包包名
# 解压到当前路径下
tar -zxvf test.tar.gz
# 解压到指定目录下
tar -zxvf test.tar.gz -C a/
(23)bzip2:文件压缩解压
tar与bzip2命令结合使用实现文件打包、压缩(用法和gzip一样)。
tar只负责打包文件,但不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz2。
在tar命令中增加一个选项(-j)可以调用bzip2实现了一个压缩的功能,实行一个先打包后压缩的过程。
压缩用法:tar -jcvf 压缩包包名 文件...(tar jcvf bk.tar.gz2 *.c)
解压用法:tar -jxvf 压缩包包名 (tar jxvf bk.tar.gz2)
(24)zip、unzip:文件压缩解压
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
压缩文件:zip [-r] 目标文件(没有扩展名) 源文件
解压文件:unzip -d 解压后目录文件 压缩文件
# 压缩文件
zip myzip *
# 解压文件到指定路径
unzip -d ./test myzip.zip
(25)which:查看命令位置
which ls
二、用户、用户组、权限管理
(1)whoami:查看当前用户
whoami该命令用户查看当前系统当前账号的用户名。
hh@ubuntu:~/Desktop$ whoami
hh
(2)who:查看登录用户
who命令用于查看当前所有登录系统的用户信息。
常用选项:
选项 含义
-m或am I 只显示运行who命令的用户名、登录终端和登录时间
-q或--count 只显示用户的登录账号和登录用户的数量
-u或--heading 显示列标题
例如:
hh@ubuntu:~$ who -H
NAME LINE TIME COMMENT
hh :0 2019-07-03 18:54 (:0)
hh pts/0 2019-07-03 18:57 (:0)
(3)exit:退出登录账户
如果是图形界面,退出当前终端;
如果是使用ssh远程登录,退出登陆账户;
如果是切换后的登陆用户,退出则返回上一个登陆账号。
(4)useradd:添加用户账号
- ```
在Unix/Linux中添加用户账号可以使用adduser或useradd命令,因为adduser命令是指向useradd命令的一个链接,因此,这两个命令的使用格式完全一样。
useradd命令的使用格式如下:
useradd [参数] 新建用户账号
参数 含义
-d 指定用户登录系统时的主目录,如果不使用该参数,系统自动在/home目录下建立与
用户名同名目录为主目录
-m 自动建立目录
-g 指定组名称
相关说明:
- Linux每个用户都要有一个主目录,主目录就是第一次登陆系统,用户的默认当前目录(/home/用户);
- 每一个用户必须有一个主目录,所以用useradd创建用户的时候,一定给用户指定一个主目录;
- 用户的主目录一般要放到根目录的home目录下,用户的主目录和用户名是相同的;
- 如果创建用户的时候,不指定组名,那么系统会自动创建一个和用户名一样的组名。
命令
useradd -d /home/abc abc -m
创建abc用户,如果/home/abc目录不存在,就自动创建这个目录,同时用户属于abc组
useradd -d /home/a a -g test -m
创建一个用户名字叫a,主目录在/home/a,如果主目录不存在,就自动创建主目录,同时用户属于test组
cat /etc/passwd
查看系统当前用户名
(5)passwd:设置用户密码
在Unix/Linux中,超级用户可以使用passwd命令为普通用户设置或修改用户口令。用户也可以直接使用该命令来 修改自己的口令,而无需在命令后面使用用户名
例如:
# 给python用户设置密码
sudo passwd python
(6)userdel:删除用户
命令 含义
userdel abc(用户名) 删除abc用户,但不会自动删除用户的主目录
userdel -r abc(用户名) 删除用户,同时删除用户的主目录
# 删除python用户以及其用户主目录
userdel -r python
(7)su:切换用户
可以通过su命令切换用户,su后面可以加“-”。su和su –命令不同之处在于,su -切换到对应的用户时会将当前的 工作目录自动转换到切换后的用户主目录:
注意:如果是ubuntu平台,需要在命令前加“sudo”,如果在某些操作需要管理员才能操作,ubuntu无需切换到root用户即可操作,只需加“sudo”即可。sudo是ubuntu平台下允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,减少了root 用户的登陆和管理时间,提高了安全性。
命令 含义
su 切换到root用户
su root 切换到root用户
su - 切换到root用户,同时切换目录到/root
su - root 切换到root用户,同时切换目录到/root
su 普通用户 切换到普通用户
su - 普通用户 切换到普通用户,同时切换普通用户所在的目录
(8)查看有哪些用户及用户组
# 查看有哪些用户
cat /etc/passwd
或
usermod +三次tab键
# 查看有哪些用户组
cat /etc/group
或
groupmod +三次tab键
(9) 添加、删除组账号:groupadd、groupdel
groupadd 新建组账号
groupdel 组账号
>sudo groupadd hehe #添加组号
>sudo groupdel hehe #删除组号
(10)usermod:修改用户状态属性
usermod [参数] 用户名
-d <登入目录> 修改用户登入时的目录
-e <有效期限> 修改帐号的有效期限
-g <群组> 修改用户所属的群组
-G <群组> 修改用户所属的附加群组
-l <帐号名称> 修改用户帐号名称
-L 锁定用户密码,使密码无效
-U 解除密码锁定
例如:
修改用户名称:
sudo usermod -l user01 zhangsan
将user01加入test组中:
sudo usermod -a -G test user01
(11)groups:查看用户所在组
groups lili # 查看用户所在组
(12-1)gpasswd命令:组管理
是Linux下工作组文件/etc/group和/etc/gshadow的管理工具,用于指定要管理的工作组。
选项详解:
-a : 添加用户到组
-d : 从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
实例:
gpasswd -a userA groupB # 将userA添加到groupB用户组里面
gpasswd -d userA groupB # # 将userA从groupB用户组里面删除
(13)chmod:修改文件权限
chmod 修改文件权限有两种使用格式:字母法与数字法。
字母法:chmod u/g/o/a +/-/= rwx 文件
[ u/g/o/a ] 含义
u user 表示该文件的所有者
g group 表示与该文件的所有者属于同一组( group )者,即用户组
o other 表示其他以外的人
a all 表示这三者皆是
[ +-= ] 含义
- 增加权限
- 撤销权限
设定权限
wx 含义
read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。
write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。
例如:
> chmod u+x test.txt # 给文件所有者u添加对文件的可执行权限
# 如果需要同时进行设定拥有者、同组者以及其他人的权限,参考如下:
```
>chmod u=rw,g=x,o=r test.txt
数字法:“rwx” 这些权限也可以用数字来代替**
字母 说明
r 读取权限,数字代号为 "4"
w 写入权限,数字代号为 "2"
x 执行权限,数字代号为 "1"
```
- 不具任何权限,数字代号为 "0"
如执行:chmod u=rwx,g=rx,o=r filename 就等同于:chmod u=7,g=5,o=4 filename
可简写:
chmod 751 file:
- 文件所有者:读、写、执行权限
- 同组用户:读、执行的权限
- 其它用户:执行的权限
如果想递归所有目录加上相同权限,需要加上参数“ -R ”。 如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限
(14) chown:修改文件所有者
格式:sudo chown 所有者用户 文件/目录 [-R]
sudo chown python test.txt
sudo chown user01 dirname -R # 递归修改目录所有者
(15)chgrp:修改文件所属组
格式:sudo chgrp 用户组 文件/目录
sudo chgrp python test.txt
sudo chgrp user01 dirname -R # 递归修改目录所属组
(16)cal:查看当前日历
cal命令用于查看当前日历,-y显示整年日历:
例如:
hh@ubuntu:~/Desktop/aa/bb$ cal
July 2019
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
hh@ubuntu:~/Desktop/aa/bb$ cal -y # 整年日历
(17)显示时间:date
显示时间格式(date '+%y,%m,%d,%H,%M,%S'):
format格式 含义
%Y,%y 年
%m 月
%d 日
%H 时
%M 分
%S 秒
date "+%Y-%m-%d %H:%M:%S" # 2019-07-03 20:37:39
date "+%Y-%m-%d %X" # 2019-07-03 08:38:01 PM
二、网络配置命令管理
(1)ifconfig:查看或配置网卡信息
# 通过修改/etc/sysconfig/network/ifcfg-eth*文件直接配置,服务器重启不失效,建议使用
# 如果是新装系统多个网卡呢,可以使用ethtool命令查找可用的网卡。ethtool ethX | grep 'Link detected',查看链接状态为Link detected: yes
ifconfig [网络设备] [参数]
-a 显示全部接口信息
> ifconfig -a
# 启动关闭指定网卡
> ifconfig eth0 down # 关闭指定网卡
> ifconfig eth0 up # 启动指定网卡
# hw <网络设备类型> <硬件地址> 设置网络设备的类型与硬件地址
ifconfig eth1 hw ether 00:1D:1C:1D:1E # 关闭网卡并修改MAC地址
# 给eth0网卡配置IP地址
ifconfig eth0 192.168.1.56
# 给eth0网卡配置IP地址,并加上子掩码
ifconfig eth0 192.168.1.56 netmask 255.255.255.0
# 给eth0网卡配置IP地址,加上子掩码,加上个广播地址
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255
# 启用和关闭ARP协议
ifconfig eth0 arp # 开启
ifconfig eth0 -arp # 关闭
OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。
在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,
但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。
使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,
以保证通信的顺利进行。
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地
址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节
约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,
其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机
发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等
arp命令使用:
arp -a # 用于查看缓存中的所有项目
arp -s ip 物理地址
#可以向ARP缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态,或者在出现错误时,
#人工配置的物理地址将自动更新该项目
arp -d ip # 使用该命令能够人工删除一个静态项目
(2)ping:测试远程主机连通性
>ping www.biadu.com
>ping 192.168.1.1
(3) traceroute命令
用于显示数据包到主机间的路径。
traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置
> traceroute www.google.com
(4) route命令
route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者 同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网 中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路 由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路 由就失效了;要想永久保存,有如下方法:
1.在/etc/rc.local里添加
2.在/etc/sysconfig/network里添加到末尾
3./etc/sysconfig/static-router : any net x.x.x.x/24 gw y.y.y.y
格式:[root@linux ~]# route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
可选的参数:
-n :不要使用通讯协定或主机名称,直接使用 IP 或 port number;
-ee :使用更详细的资讯来显示增加 (add) 与删除 (del) 路由的相关参数:
-net :表示后面接的路由为一个网域;
-host :表示后面接的为连接到单部主机的路由;
netmask :与网域有关,可以设定 netmask 决定网域的大小;
gw :gateway 的简写,后续接的是 IP 的数值喔,与 dev 不同;
dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等
例如:
1.格式:route -n
格式:/sbin/route -n
用于打印路由表,加上-n参数就是在输出的信息中不打印主机名而直接打印ip地址。
2.设置默认网关:
route add default gw 10.96.191.1 eth0
3.设置某一网段从某路由通讯:
route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 dev eth0 # 添加路由
# 简写:route add -net 10.111.2.0/24 gw 10.20.30.41 dev eth0
route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 dev eth0 # 删除路由
4.屏蔽一段网络路由
命令:
route add -net 224.0.0.0 netmask 240.0.0.0 reject
(3)dhclient:操作的网络接口
选项
0:指定dhcp客户端监听的端口号;
-d:总是以前台方式运行程序;
-q:安静模式,不打印任何错误的提示信息;
-r:释放ip地址。
参数
网络接口:操作的网络接口。
实例
dhclient -r #释放IP
dhclient #获取IP
> sudo dhclient ens33
(4)systemctl
由于 systemd 相关的绝大多数任务都是通过 systemctl 命令管理的
systemctl 命令有两大类功能:
控制 systemd 系统
管理系统上运行的服务
作为 init 系统,systemd 进程作为系统中的 1 号进程应该是毋庸置疑的,
> ps u -p 1
/sbin/init 是什么?
/sbin/init 只是到 /lib/systemd/systemd 的链接文件,系统的 1 号进程的确是 systemd,只不过在 ubuntu 系统中被起了个别名叫 /sbin/init
管理单个 unit
systemctl 提供了一组子命令来管理单个的 unit,其命令格式为:
systemctl [command] [unit]
command 主要有:
start:立刻启动后面接的 unit。
stop:立刻关闭后面接的 unit。
restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。
reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。
enable:设置下次开机时,后面接的 unit 会被启动。
disable:设置下次开机时,后面接的 unit 不会被启动。
status:目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。
is-active:目前有没有正在运行中。
is-enable:开机时有没有默认要启用这个 unit。
kill :不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。
show:列出 unit 的配置。
mask:注销 unit,注销后你就无法启动这个 unit 了。
unmask:取消对 unit 的注销。
> sudo systemctl restart network-manager.service
三、进程、线程命令相关
(1)ps:查看进程信息
进程是一个具有一定独立功能的程序,它是操作系统动态执行的基本单元。
ps命令可以查看进程的详细状况,常用选项(选项可以不加“-”)如下:
选项 含义
-a 显示终端上的所有进程,包括其他用户的进程
-u 显示进程的详细状态
-x 显示没有控制终端的进程
-w 显示加宽,以便显示更多的信息
-r 只显示正在运行的进程
> ps -aux
(2)top:动态显示进程
top命令用来动态显示运行中的进程。top命令能够在运行后,在指定的时间间隔更新显示信息。可以在使用top命 令时加上-d 来指定显示信息更新的时间间隔。
在top命令执行后,可以按下按键得到对显示的结果进行排序:
按键 含义
M 根据内存使用量来排序
P 根据CPU占有率来排序
T 根据进程运行时间的长短来排序
U 可以根据后面输入的用户名来筛选进程
K 可以根据后面输入的PID来杀死进程。
q 退出
h 获得帮助
(3)kill:终止进程
kill命令指定进程号的进程,需要配合 ps 使用。
使用格式:
kill [-signal] pid
信号值从0到15,其中9为绝对终止,可以处理一般信号无法终止的进程。
kill 9133 :9133 为应用程序所对应的进程号
kill -9 9133
注意:有些进程不能直接杀死,这时候我们需要加一个参数“ -9 ”,“ -9 ” 代表强制结束:
(4)/etc/init.d/mysql
(5)sudo service
2.1 进程管理
ps -ef
ps -aux # 可以看进程更全面的信息,如:cpu、内存使用占比
2.2 内存管理
free默认单位是KB
free -m单位为MB
free -g单位为GB
free -h -s 3
https://www.cnblogs.com/ultranms/p/9254160.html
2.3 cpu、内存管理
top
常用快捷:
?:显示在top当中可以输入的命令
P:以CPU的使用资源排序显示
M:以内存的使用资源排序显示
N:以pid排序显示 、
T:由进程使用的时间累计排序显示
k:给某一个pid一个信号。可以用来杀死进程
r:给某个pid重新定制一个nice值(即优先级)
q:退出top(用ctrl+c也可以退出top)
https://blog.csdn.net/yjclsx/article/details/81508455
2.4 磁盘管理
分区:
查看当前磁盘的分区状况 : fdisk -l
让硬盘进入分区模式: fdisk /dev/sda
将分区信息读到内核中: partprobe
格式化:
将 /dev下的 sda5 磁盘格式化为 ext2 的格式类型:mkfs.ext2 /dev/sda5
挂载:
将/dev/sda5挂载到test中:mount /dev/sda5 /test
卸载已经挂载的 /dev/sda5 :umount /dev/sda5或者umount /test
查看磁盘的信息
df -h
查看对应分区的UUID:blkid
https://blog.csdn.net/a1766855068/article/details/84942745
https://www.runoob.com/linux/linux-filesystem.html
四、shell编程相关