Linux基础命令,看完还能不会吗?

Linux

Linux系统的基本操作

shell的简介

Linux系统的字符界面通常称为Shell。其实Shell本来是指系统的用户界面,它为用户与系统内核进行交互操作提供了一种接口。图形界面和字符界面都属于Shell,图形界面的Shell称为GUI(Graphical User Interface),字符界面的Shell称为CLI(Command Line Interface),像GNOME就属于是一种GUI。由于Linux系统的操作以字符界面为主,因而Shell通常专指字符界面CLI。

如何启动shell

Linux是一个真正的多用户操作系统,它可以同时接受多个用户登录,而且还允许同一个用户从不同的终端进行多次登录。每个用户登录之后,都会自动启动Shell,打开命令行界面。

Linux中提供的虚拟终端默认有6个,其中第1个是图形界面,第2到6个则是字符界面。可以通过Ctrl+Alt+F(1~6)组合键在不同的虚拟终端之间进行切换,比如Linux启动之后默认是进入了第1个虚拟终端中的图形界面,此时按下组合键Ctrl+Alt+F2就进入到了第2个虚拟终端,这就是一个字符界面了。输入用户名和密码登录之后,也就是启动了Shell,可以输入命令对系统进行操作。需要注意的是,在Linux的字符界面下输入密码,将不做任何显示,这种方式进一步提高了系统的安全性。

虚拟终端的缩写为tty,在字符界面下执行“tty”命令就可以显示用户目前所在的终端编号。
[root@localhost ~]#tty
/dev/tty2

命令提示符

启动Shell之后,首先可以看到类似于“[root@localhost ~]#”形式的命令提示符。

由于在Linux系统中,用户使用某个账号登录系统后,还可以使用相应的命令将用户身份转换为其他角色的用户,以实现不同权限的操作,因此命令提示符是用户判断当前身份状态的重要依据。比如执行“su - student”命令,可以切换到student用户,此时就可以发现命令提示符最后的“#”变成了“$”。

[root@localhost ~]# su – student
[student@localhost ~]$	
[student@localhost ~]$ su – root	
密码:
[root@localhost ~]#	

shell命令格式

Shell命令由命令名、选项和参数三部分组成,基本格式如下所示:

命令名[选项][参数]

命令名是描述命令功能的英文单词或缩写。例如,date命令用于查看系统日期和时间;ls命令是list的缩写,用于列表显示;cp命令是copy的缩写,用于复制文件等。在Shell命令中,命令名必不可少,并且总是放在整个命令行的起始位置。

开始命令

Linux中最简单的关机和重启命令分别是poweroff和reboot。

[root@localhost ~]# poweroff
[root@localhost ~]# reboot
立即关闭系统
[root@localhost ~]# shutdown –h now
立即重启系统
[root@localhost ~]# shutdown –r now
在15分钟以后自动关闭系统
[root@localhost ~]# shutdown –h +15
在10分钟以后自动重启系统,同时通知已登录到本机中的各用户“The system will be rebooted!!”。
[root@localhost ~]# shutdown –r +10 ‘The system will be rebooted!!’

带你敲遍文件目录命令

目录结构简介

l /boot:存放Linux系统启动所必需的文件,Kernel便存放在这个目录里。

l /etc:存放Linux系统和各种程序的配置文件,Linux中的很多操作和配置都是通过修改配置文件实现的。/etc目录的作用类似于Windows系统中的注册表。

l /dev:存放Linux系统中的硬盘、光驱、鼠标等硬件设备文件。

l /bin:存放Linux系统中最常用的基本命令,任何用户都有权限执行。

l /sbin:存放Linux系统基本的管理命令,只有管理员权限才可以执行。

l /usr:软件的默认安装位置,类似于Windows中的Program Files目录。

l /home:普通用户家目录(也称为主目录)。例如用户账号“student”对应的家目录位于“/home/student”。

l /root:超级用户root的家目录。

l /mnt:一般是空的,用来临时挂载存储设备。

l /media:用于系统自动挂载可移动存储设备。

l /tmp:临时目录,用于存放系统或程序运行时产生的一些临时文件,可供所有用户执行写入操作。

l /var:存放系统运行过程中经常变化的文件,如/var/log用于存放日志文件,/var/spool/mail用于存放邮件等。

l /lib、/lib64:存放各种链接库文件。链接库也是一种二进制文件,只不过没有独立的执行入口,而只能被别的程序所调用。

l /proc:基于内存的虚拟文件系统,用于存储系统内核和进程的相关信息。

l /run:用于存放一些进程产生的临时文件,系统重启后会消失。

l /lost+found:存放一些当系统意外崩溃或关机时产生的文件碎片。

开始敲命令

pwd查看当前所在的工作目录。

[root@localhost ~]# pwd
/root

cd切换工作目录。

[root@localhost ~]# cd /boot/victory
[root@localhost victory]# pwd
/boot/victory

ls显示列表中的内容。

-a显示所有文件,包括隐藏文件。

-l以长格式(内容更详细)显示文件或目录的详细信息。

-d显示目录本身的属性,而非其内部的文件列表。

-h人性化显示容量信息。

[root@localhost ~]# ls
anaconda-ks.cfg       公共  视频  文档  音乐
initial-setup-ks.cfg 		模板  图片  下载  桌面
#可以指定路径
[root@localhost ~]# ls /etc

touch创建文件

[root@localhost ~]# touch test
[root@localhost ~]# ls -l
-rw-r--r--  1 root root    0 04-13 23:59 test

mkdir创建目录

#在当前目录创建
[root@localhost ~]# mkdir test
#在根目录中创建
[root@localhost ~]# mkdir /public
#同时创建多个目录
[root@localhost ~]# mkdir a b c d
#-p在/root目录下创建子目录public,并在public目录中再建立子目录victory。
[root@localhost ~]# mkdir -p /root/public/victory

rmdir删除目录

如果用-p的话递归删除

[root@localhost ~]# rmdir -p /root/public/victory

cp复制文件或目录

-r,复制目录时必须使用此选项,表示递归复制所有文件及子目录。

-p,复制时保留原文件的属性不变。

#将/etc/test文件复制到/tmp目录中,并重命名test1
[root@localhost ~]# cp /etc/test /tmp/test1
#将/etc/test文件复制到/tmp/test2
[root@localhost ~]# cp /etc/test /tmp/test2

mv移动文件或目录

#将/root/test目录中的文件test1改名为test2。
[root@localhost ~]# mv /root/test/test1 /root/test/test2
#将文件/root/test/test2移动到/tmp目录中。
[root@localhost ~]# mv /root/test/test2 /tmp/
#将/tmp/test目录移动到/root目录中。
[root@localhost ~]# mv /tmp/test /root/

rm删除文件或目录

-f,强制删除,无需用户确认。

-r,删除目录时必须使用此选项,表示递归删除整个目录。

#将/tmp目录中的test2文件删除。
[root@localhost ~]# rm /tmp/test2

通配符*代表任意数量的任意字符

通配符?代表可以在相应位置上匹配任意单个字符。

通配符[]可以匹配指定范围内的任意单个字符。

在“[ ]”中还可以用“!”或“^”表示不在指定字符范围内的其它字符。

#列出/dev/目录中文件名的第4个字符是数字的所有文件。
[root@localhost ~]# ls /dev/???[0-9]*
/dev/dm-0   /dev/tty13  /dev/tty22  /dev/tty31  /dev/tty40  /dev/tty5   /dev/tty59  /dev/vcs2/dev/dm-1   /dev/tty14  /dev/tty23  /dev/tty32  /dev/tty41  /dev/tty50  
……
[root@localhost ~]# ls /dev/[!fhi]*
/dev/agpgart     /dev/ram10     /dev/tty17  /dev/tty53
/dev/autofs      /dev/ram11     /dev/tty18  /dev/tty54

扩展符{}里面可以包含许多文件。

#一次性创建/tmp/texta、/tmp/textb、/tmp/textc三个目录。
[root@localhost ~]# mkdir /tmp/text{a,b,c}
一次性创建/tmp/text1、/tmp/text2、/tmp/text3三个文件。
[root@localhost ~]# touch /tmp/text{1,2,3}

cat显示文本文件的内容。

[root@localhost ~]# cat /etc/text

more和less分页显示文件内容。

[root@localhost ~]# more /etc/passwd
[root@localhost ~]# less /etc/passwd

head和tail显示文件开头和末尾的部分内容。

-n指定显示的具体行数。

-f选项,实时显示文件增量内容。

[root@localhost ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
……
[root@localhost ~]# tail /etc/passwd
……
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
student:x:1000:1000:student:/home/student:/bin/bash

wc统计文件内容

-l,统计行数;-w,统计单词数;-c,统计字节数。

#依次统计/etc/text文件中的行数、单词数、字节数。
[root@localhost ~]# wc /etc/text
 3  8 73 /etc/text
[root@localhost ~]# wc -l /etc/passwd
43 /etc/passwd

echo输出指定内容

重定向符号“>”可以将echo输出的内容覆盖保存到指定的文件中(文件中原有的内容会被覆盖掉),重定向符号“>>”可以将echo输出的内容追加保存到指定的文件中(文件中原有的内容仍然保留)。

#输出hello world
[root@localhost ~]# echo "Hello World"
Hello World
#新建立一个名为run的变量,初始内容设置为victory。
[root@localhost ~]# run=”victory”
#通过在变量名称前添加前导符号$,可以引用一个变量的值。
[root@localhost ~]# echo $run
victory
#向文件中输出内容。
[root@localhost ~]# echo 'a' > text1
[root@localhost ~]# echo '1' >> text1

grep文件内容查找

-n,输出符合查找条件的行及其行号。

-v,反转查找,输出与查找条件不相符的行。

-i,不区分大小写。

-w,精确匹配单词。

-r,在整个目录的所有文件中递归查找关键字。

#在/etc/passwd文件中查找包含“root”字符串的行。
[root@localhost ~]# grep “root” /etc/passwd
#在/etc/passwd文件中查找所有以“root”字符串开头的行。
[root@localhost ~]# grep "^root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
#在/etc/passwd文件中查找所有以“bash”字符串结尾的行。
[root@localhost ~]# grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
student:x:1000:1000:student:/home/student:/bin/bash
……
#在/etc/passwd文件中查找所有空白行。
[root@localhost ~]# grep "^$" /etc/passwd
#在/etc/passwd文件中查找所有不是以“#”开头的行。
[root@localhost ~]# grep -v “^#” /etc/passwd

diff文件内容对比

[root@localhost ~]# diff  .bashrc  .bashrc.bak 
13d12
< cd /tmp
#diff命令的常用选项是“--brief”,通过该选项可以仅仅确认两个文件是否不同。
[root@localhost ~]# diff --brief .bashrc.bak .bashrc 
文件 .bashrc.bak 和 .bashrc 不同

date显示或修改日期和时间

[root@localhost ~]# date
2019年 02月 18日 星期一 08:03:35 CST
#只显示日期,用到格式符%F。
[root@localhost ~]# date +%F
2019-02-18
#只显示时间,用到格式符%T。
[root@localhost ~]# date +%T
08:05:29
#日期和时间一起显示,并在中间用空格分隔。
[root@localhost ~]# date +"%F %T" 
2019-02-18 08:05:58
#以“月-日 时:分”的格式显示日期和时间。
[root@localhost ~]# date +"%m-%d %H:%M" 
02-18 08:08
[root@localhost ~]# date --help 
……
给定的格式FORMAT 控制着输出,解释序列如下:

  %%	一个文字的 %
  %a	当前locale 的星期名缩写(例如: 日,代表星期日)
  %A	当前locale 的星期名全称 (如:星期日)
  %b	当前locale 的月名缩写 (如:一,代表一月)
  %B	当前locale 的月名全称 (如:一月)
……
#将当前日期和时间修改为“2019年2月18日8:13”。
[root@localhost ~]# date 021808132019
2019年 02月 18日 星期一 08:13:00 CST

hwclock显示或修改硬件时钟

#显示硬件时钟。
[root@localhost ~]# hwclock
2019年02月18日 星期一 08时15分19秒  -0.430391 秒
[root@localhost ~]# hwclock –w						#将系统时钟写入硬件时钟
[root@localhost ~]# hwclock –s						#将硬件时钟写入系统时钟

stat查看文件元数据

#stat命令可以查看文件的元数据,比如查看/etc/passwd文件的元数据。
[root@localhost ~]# stat /etc/passwd
  文件:"/etc/passwd"
  大小:2268      	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:18065512    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2019-02-18 07:30:12.465033913 +0800
最近更改:2019-02-14 08:36:22.674853382 +0800
最近改动:2019-02-14 08:36:22.675853381 +0800
创建时间:-

locate查找文件

#找出文件test1的所在路径
[root@localhost ~]# locate text1
/etc/ssh/text1

find文件查找命令

-name,按名称查找,允许使用通配符。

-iname,按名称查找,不区分大小写。

-empty,查找空文件或目录。

-type,按文件类型查找。

-size,按文件大小查找。

-not,取反。

#在/etc目录中查找所有名称以“net”开头、以“.conf”结尾的文件。
[root@localhost ~]# find /etc -name "net*.conf"
/etc/dbus-1/system.d/net.reactivated.Fprint.conf
/etc/sane.d/net.conf
#在/etc目录中查找所有名称中包含字符串“net”的文件或目录,不区分大小写。
[root@localhost ~]# find /etc -iname "*net*"
etc/issue.net
/etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf
/etc/dbus-1/system.d/net.reactivated.Fprint.conf
……
#查找系统中所有的空文件或目录。
[root@localhost ~]# find / -empty
#在/boot目录中查找所有的子目录。
[root@localhost ~]# find /boot -type d
#在/etc目录中查找所有的符号链接文件。
[root@localhost ~]# find /etc -type l
#在/etc目录中查找所有的符号链接文件,并显示其详细信息。
[root@localhost ~]# find /etc -type l -ls
16777284  0 lrwxrwxrwx   1 root  root   17 1月 22 07:16 /etc/mtab -> /proc/self/mounts
#在/etc目录中查找大小在1MB以上的文件。
[root@localhost ~]# find /etc -size +1M
#在/boot目录中查找大小在10KB以下的文件。
[root@localhost ~]# find /boot -size -10k
#在/boot目录中查找所有文件类型不是普通文件的文件,并显示其详细信息。
[root@localhost ~]# find /boot -not -type f -ls
     2    2 dr-xr-xr-x   5 root    root     1024 9月  2 00:36 /boot
65025    2 drwxr-xr-x   2 root    root     1024 9月  2 00:36 /boot/grub
65032    0 lrwxrwxrwx  1 root    root  	11 9月  2 00:36 /boot/grub/menu.lst -> ./grub.conf

如果以“天”为单位,则相应的选项分别为:-atime(访问时间)、-mtime(更改时间)、-ctime(改动时间);如果以“分钟”为单位,则相应的选项分别为:-amin(访问时间)、-mmin(更改时间)、-cmin(改动时间)。

#在/tmp目录中查找7天内没有被访问过的文件。
[root@localhost ~]# find /tmp -atime +7 –type f
#在/etc目录中查找最近1天之内被改动过的文件。
[root@localhost ~]# find /etc -mtime -1 –type f
#在/etc目录中查找最近3小时之内被修改过状态信息的文件。
[root@localhost ~]# find /etc –cmin -180 –type f
#在系统中查找2天前的当天被修改过的文件。
[root@localhost ~]# find / -mtime 2 –type f
#查找/boot目录下的以“init”开头的文件,并将其复制到/tmp目录下。
[root@localhost ~]# find /boot -name "init*" -exec cp {} /tmp \;

type判断内部和外部命令

[root@localhost ~]# type cd
cd 是 shell 内嵌

which查找外部命令所对应的程序文件

[root@localhost ~]# which ls
alias ls='ls --color=auto'
/bin/ls

In为文件或目录建立链接

#为SSH服务配置文件“/etc/ssh/sshd_config”在“/root”目录中创建一个名为“ssh”的软链接。
[root@localhost test]# ln -s /etc/ssh/sshd_config /root/ssh
[root@localhost ~]# ls -l /root/ssh
lrwxrwxrwx. 1 root root 20 1月  29 08:03 /root/ssh -> /etc/ssh/sshd_config

alias设置命令别名

#设置命令别名cpd,其功能是查看/etc/passwd文件的内容。
[root@localhost ~]# alias cpd='cat /etc/passwd'
#如果要取消所设置的别名命令,可以使用unalias命令。
[root@localhost ~]# unalias cpd

history查看命令历史记录

#指定所要查看的历史命令范围
[root@localhost ~]# history 3	
15 wc /etc/resolv.conf
16 wc -l /etc/passwd
17 history 3
#重新执行某条历史命令
[root@localhost ~]#!16	
#删除指定的历史命令
[root@localhost ~]#history –d 16
#删除缓存中的历史命令
[root@localhost ~]#history –c	
#查看系统可以保存的历史命令条数
[root@localhost ~]# echo $HISTSIZE			

help查看命令帮助信息

[root@localhost ~]# help pwd
pwd: pwd [-LP]
    打印当前工作目录的名字。
    
    选项:
      -L	打印 $PWD 变量的值,如果它命名了当前的
    	工作目录
      -P	打印当前的物理路径,不带有任何的符号链接
……
[root@localhost ~]# help ls
-bash: help: 没有与 `ls' 匹配的帮助主题。尝试 `help help' 或者 `man -k ls' 或者 `info ls'。
#外部命令需要-help执行。
[root@localhost ~]# ls –help
用法:ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
……

man查看命令帮助手册

#查看ls命令的帮助手册。
[root@localhost ~]# man ls

clear清屏

管道符"|"

#分页显示/etc目录下所有文件和子目录的详细信息。
[root@localhost ~]# ls -lh /etc | more
#显示/etc目录下包含有“net”关键字的所有文件和子目录的详细信息。
[root@localhost ~]# ls -lh /etc | grep net
-rwxr-xr-x. 1 root root 1.3K 4月 10 2012 auto.net
-rw-r--r--. 1 root root 74 5月 31 2012 issue.net
-rw-r--r--. 1 root root 767 11月 30 2009 netconfig
-rw-r--r--. 1 root root 58 5月 23 2012 networks
drwxr-xr-x. 2 root root 4.0K 1月 8 19:14 xinetd.d
#统计/etc目录下所有以“.conf”结尾的文件的个数。
[root@localhost ~]# find /etc -name "*.conf*" | wc -l
434
#查看/etc/ssh/sshd_config文件中除了以“#”开头的行和空行以外的内容。
[root@localhost ~]# grep -v "^#" /etc/ssh/sshd_config | grep -v "^$"
#从/etc/passwd文件中取出第10行。
[root@localhost ~]# head /etc/passwd | tail -1

让自己成为用户权限管理大师

超级用户:root是Linux系统中默认的超级用户账号,对系统拥有至高无上的完全权限。使用root账号,管理员可以突破系统的一切限制,方便地维护系统。由于root用户权限太大,所以一般不建议直接用root用户登录系统,而是先使用普通用户账号登录,当要进行系统管理维护任务时,才临时转换到root身份。

普通用户:普通用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的家目录中有完全权限。之前在安装系统过程中所创建的用户账号student就属于普通用户。

程序用户:这类用户最大的特点是不能登录系统,而主要是用于让后台进程或服务类进程以非管理员的身份运行。它们大多是在安装系统及部分应用程序时自动添加的,权限一般都比较低。

id命令查看用户的信息

[root@localhost ~]# id student
uid=1000(student) gid=1000(student) 组=1000(student)
查看/etc/shadow文件中root用户的相关行。
[root@localhost ~]# grep “^root” /etc/shadow 
root:$6$9jb7PcUy4dSFu.D2$2cM6oibXNEp0zjq0HIPOgjk8QmBoW3L82O7SL2L1q0AMugRRf6HS6HbtvueBbSDfnnH3ZRo8dzs3tDPzuBmpE1:15282:0:99999:7:::
查看root组的信息。
[root@localhost ~]# grep "^root" /etc/group
root:x:0:user5,manager,master

useradd创建用户账号

-u:指定用户的UID,要求该UID号未被其他用户使用。

-d:指定用户的家目录。

-g:指定用户的基本组。

-G:指定用户的附加组。

-e:指定用户账号的失效时间,可以使用yyyy-mm-dd的日期格式。

-s:指定用户的登录Shell。

#按照默认值新建用户user1。
[root@localhost ~]# useradd user1
#创建名为user2的用户账号,并将其UID指定为1004。
[root@localhost ~]# useradd -u 1004 user2
#创建一个辅助的管理员账号admin,将其家目录指定为/admin。
[root@localhost ~]# useradd -d /admin admin
#创建一个用户user4,指定其基本组为admin。
[root@localhost ~]# useradd -g admin user4
#创建一个用户user5,指定其附加组为root。
[root@localhost ~]# useradd -G root user5
#创建一个临时账号user12,指定属于users基本组,该账号于2020年11月30日失效。
[root@localhost ~]# useradd -g users -e 2020-01-30 user12
#创建一个用于FTP访问的用户账号ftpuser,禁止其登录,而且不为其创建家目录。
[root@localhost ~]# useradd -s /sbin/nologin -M ftpuser

passwd为用户账号设置密码

-d,清除密码。

-l,锁定用户账号。

-u,解锁用户账号。

–stdin,从文件或管道读取密码。

#为用户user1设置密码。
[root@localhost ~]# passwd user1
更改用户 user1 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# passwd -d user1			
#清除用户的密码 user1。
passwd: 操作成功
[root@localhost ~]# grep user1 /etc/shadow	
user1::16907:0:99999:7:::
[root@localhost ~]# passwd -l user2
锁定用户 user2 的密码 。
passwd: 操作成功
#将用户账号user2解锁。
[root@localhost ~]# passwd -u user2
#无需确认,直接为用户user1设置密码。
[root@localhost ~]# echo "123" | passwd --stdin user1

su切换用户身份

#从root用户可直接切换到普通用户
[root@localhost ~]# su - user1 
#从普通用户切换到其他用户需输入目标用户口令
[user1@localhost ~]$ su - user2 
密码:
#缺省用户名时切换到root用户
[user2@localhost ~]$ su - 
密码:

userdel删除用户账号

-r,将用户账号连同家目录一起删除。

#删除用户账号user1。
[root@localhost ~]# userdel user1
#将用户账户user2连同家目录一起删除。
[root@localhost ~]# userdel -r user2

usermod修改用户账号属性

-m、-d,修改用户的家目录。

-l,更改用户账号的名称。

-g,更改用户的基本组。

-G、-a,更改用户的附加组。

#将admin用户的家目录移动到/home目录下。
[root@localhost ~]# grep admin /etc/passwd		#查看admin用户的家目录位置
admin:x:1005:1005::/admin:/bin/bash
[root@localhost ~]# usermod -m -d /home/admin admin	#修改admin的家目录
[root@localhost ~]# grep admin /etc/passwd			#再次查看家目录位置
admin:x:1005:1005::/home/admin:/bin/bash
#将admin用户的账号名改为master。
[root@localhost ~]# usermod -l master admin
[root@localhost ~]# grep master /etc/passwd
master:x:1005:1005::/home/admin:/bin/bash
#将用户master的基本组改为ftp。
[root@localhost ~]# usermod -g ftp master
[root@localhost ~]# id master
uid=1005(master) gid=50(ftp) 组=50(ftp)
#将用户master的附加组改为root。
[root@localhost ~]# usermod -G root master
[root@localhost ~]# id master
uid=1005(master) gid=50(ftp) 组=50(ftp),0(root)

groupadd创建用户组

#创建用户组user1,并查看配置文件中的相关信息。
[root@localhost ~]# groupadd user1
[root@localhost ~]# tail -1 /etc/group
user1:x:1011:
#创建用户组user2,并指定GID为2000。
[root@localhost ~]# groupadd –g 2000 user2
[root@localhost ~]# tail -1 /etc/group
user2:x:2000:

gpasswd添加或删除组成员

向组中添加用户使用选项-a,从组中删除用户使用选项-d。

#将用户user2加入到root组中。
[root@localhost ~]# gpasswd -a user2 root
正在将用户“user2”加入到“root”组中
[root@localhost ~]# id user2
uid=1006(user2) gid=1006(user2) 组=1006(user2),0(root)
#将用户user2从root组中删除。
[root@localhost ~]# gpasswd -d user2 root
正在将用户“user2”从“root”组中删除
[root@localhost ~]# id user2
uid=1006(user2) gid=1006(user2) 组=1006(user2)

groupdel删除用户组

#删除名为user3的用户组
[root@localhost ~]# groupdel user3

chmod修改权限

-R,可以递归修改指定目录下所有文件、子目录的权限。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zmS2tmsa-1606979217408)(C:\Users\song\AppData\Roaming\Typora\typora-user-images\image-20201128100145355.png)]

#对/tmp/test目录进行如下权限设置:所有者具有读写执行权限,所属组具有读和执行权限,其他用户具有读和执行权限。
[root@localhost ~]# chmod 755 /tmp/test
[root@localhost ~]# ll -d /tmp/test
drwxr-xr-x. 2 student student 4096 11月 30 21:04 /tmp/test
#将/tmp目录以及其中所有的子目录、文件的所属组都增加读写权限。
[root@localhost test]# chmod -R g+rw /tmp

chown更改文件或目录的所有者和所属组。

-R递归更改目录中所有子目录及文件的归属。

#将/tmp/test目录的所有者更改为zhangsan用户,更改后,zhangsan将具有rwx的权限。
[root@localhost ~]# chown zhangsan /tmp/test
[root@localhost ~]# ll -d /tmp/test
drwxr-xr-x. 2 zhangsan student 4096 11月 30 21:04 /tmp/test
#将/tmp/test目录的所属组更改为wheel组,更改后,wheel组的成员用户将具有r-x权限。
[root@localhost ~]# chown :wheel /tmp/test
[root@localhost ~]# ll -d /tmp/test
drwxr-xr-x. 2 zhangsan wheel 4096 11月 30 21:04 /tmp/test
#同时将/tmp/test目录的所有者更改为root用户,所属组更改为test1组。
[root@localhost ~]# chown root:test1 /tmp/test
[root@localhost ~]# ll -d /tmp/test
drwxr-xr-x. 2 root daemon 4096 11月 30 21:04 /tmp/test
#将/tmp/test目录中的所有子目录、文件的所有者更改为root用户。
[root@localhost ~]# chown -R root /tmp/test

配置文件访问控制列表facl

设置facl使用的是setfacl命令。

-m用于设定或修改一个facl规则。

-x,取消一个facl规则。

-b,取消所有的facl规则。

#设置user11对/home/project目录具有rwx权限。这里采用的设置格式为“u:natasha:rwx”,其中“u”代表user,如果要为组设置权限,则采用“g”。
[root@localhost ~]# setfacl -m u:user11:rwx /home/project/
[root@localhost ~]# ll -d /home/project/
drwxrwx---+ 2 student users 6 2月  16 09:34 /home/project

getfacl可以查看facl规则。

-m修改facl

-x从facl中去除某条规则。

-b去除所有的facl规则。

[root@localhost ~]# getfacl /home/project/
getfacl: Removing leading '/' from absolute path names
# file: home/project/
# owner: student
# group: users
user::rwx
user:natasha:rwx
user:instructor:r-x
group::rwx
mask::rwx
other::---
#将user22用户的权限修改为rwx。
[root@localhost ~]# setfacl -m u:user22:rwx /home/project/
#去除规则。
[root@localhost ~]# setfacl -b /home/project/

umask值用于设置用户在创建文件时的默认权限。

[root@localhost ~]# umask
0022
#umask命令可以修改umask值,比如将umask值设为0088。
[root@localhost ~]# umask 0088
[root@localhost ~]# umask
0088

按照文件属性查找

-user 用户名:根据所有者查找;

-group 组名:根据所属组查找;

-uid UID:根据UID查找;

-gid GID:根据GID查找;

-nouser:查找没有所有者的文件;

-nogroup:查找没有所属组的文件;

-perm:精确匹配权限查找;

#在/home目录下查找所有属于用户student的文件或目录。
[root@localhost ~]# find /home -user student -ls
400903   4 drwx------   4 student  student     4096 9月  8 16:33 /home/student
400904   4 -rw-r--r--   1 student  student 176 1月 16 2015  home/student/.bash_profile
……
#在/var目录中查找所有者为root且所属组为mail的文件或目录。
[root@localhost ~]# find /var -user root -group mail -ls
655309    4 drwxrwxr-x   2 root     mail       4096 12月 23 11:24 /var/spool/mail
#要在/boot目录中查找权限为755的普通文件,并显示详细信息。我们设置查找条件为“-perm 755”,可以发现共找到两个文件,这两个文件的权限都对查找条件进行了精确匹配。
[root@localhost ~]# find /boot -perm 755 -type f -ls
 65030  250 -rwxr-xr-x   1 root     root       254248 4月  7  2015 /boot/efi/EFI/redhat/grub.efi
    16 4125 -rwxr-xr-x   1 root     root      4222192 7月  2  2015 /boot/vmlinuz-2.6.32-573.el6.x86_64

chattr设置扩展属性

-R递归修改所有的文件及子目录,这是一个可选项。

+增加扩展属性。

-减少扩展属性。

i只读属性,增加该属性之后,任何人包括root用户也无权写入更改。

a追加属性,增加该属性之后,只能项文件中添加数据,而不能删除原有数据。

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow

系统中的管理

mkfs的基本格式

mkfs -t 文件系统类型 分区设备文件名
#将/dev/sdb1格式化为xfs文件系统。
[root@localhost ~]# mkfs -t xfs /dev/sdb1
#将/dev/sdb5格式化为ext4文件系统。
[root@localhost ~]# mkfs -t ext4 /dev/sdb5

mount挂载工具

#新建一个目录/data,并将硬盘分区“/dev/sdb1”挂载到“/data”目录下。
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/sdb1 /data
#将设备卸载之后,“/home”目录将自动回到原先所在的磁盘分区,原有的内容也将重新显示出来。
[root@localhost ~]# umount /home
[root@localhost ~]# ls /home
admin  zhangsan   lisi  student  temp  temp01  test  test1  user4  

df查看系统中已经挂载的设备

-h,人性化显示,显示K、M、G等更易读的容量单位。

-T,显示文件系统的类型。

[root@localhost ~]# df -hT
文件系统                  类型     容量  已用   可用   已用%  挂载点
……
/dev/sda1                 xfs      1014M  173M  842M   18%	 /boot
/dev/sdb1                 xfs       5.0G   33M   5.0G    1% 	 /data
/dev/sdb5                 ext4      7.8G   36M   7.3G    1%	 /mnt/game
/dev/sdb6                 xfs       7.0G   33M   7.0G    1% 	 /mnt/movie
[root@localhost ~]# df -hT | grep -v tmpfs
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  3.8G   14G   23% /
/dev/sda1               xfs      1014M  157M  858M   16% /boot
/dev/sr0                iso9660   4.2G  4.2G     0  100% /mnt/cdrom
/dev/sdb1                 xfs       5.0G   33M   5.0G    1% 	 /data
/dev/sdb5                 ext4      7.8G   36M   7.3G    1%	 /mnt/game
/dev/sdb6                 xfs       7.0G   33M   7.0G    1% 	 /mnt/movie

设置磁盘配额

-u用于编辑用户的配额设置。

-g用于编辑组的配额设置。

#针对用户user1进行磁盘配额设置。
[root@localhost ~]# edquota -u user1
Disk quotas for user jerry (uid 1001): 
     Filesystem   blocks   quota    limit   grace   files   quota   limit   grace
      /dev/sdb1   81920    0     100000          3*      0     3
#查看组的配额设置。
[root@localhost ~]# quota -g user2
Disk quotas for group fina (gid 1002): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1  81920      0  200000         3       0      6

madam磁盘阵列管理。

-C用于指定当前的操作模式为创建模式,在后面要指定设备名称,/dev/md0就是所创建出来的RAID磁盘阵列的名称,名称可以任意,通常习惯采用mdn(n为磁盘阵列的序号)的形式表示。

-D来查看磁盘阵列的详细信息。

-a yes,自动创建相关设备文件。

-n 4,指定创建磁盘阵列所使用的硬盘个数。

-l 10,指定RAID10级别。

-S将之前创建的RAID10阵列停用

[root@localhost ~]# mdadm -C /dev/md0 -a yes -n 4 -l 10 /dev/sd{b,c,d,e}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Oct  7 07:51:11 2017
     Raid Level : raid10											#RAID级别
     Array Size : 41910272 (39.97 GiB 42.92 GB)						#RAID磁盘空间
  Used Dev Size : 20955136 (19.98 GiB 21.46 GB)
   Raid Devices : 4												#磁盘个数
   Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sat Oct  7 07:54:41 2017
          State : clean 
 Active Devices : 4												#活动磁盘个数
Working Devices : 4											#工作磁盘个数
 Failed Devices : 0												#错误磁盘个数
 Spare Devices : 0												#备用磁盘个数

         Layout : near=2
     Chunk Size : 512K

           Name : Server:0  (local to host Server)
           UUID : fa5bf115:23c2ebfe:d8dc1a82:a4f5ecce
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync set-A   /dev/sdb
       1       8       32        1      active sync set-B   /dev/sdc
       2       8       48        2      active sync set-A   /dev/sdd
       3       8       64        3      active sync set-B   /dev/sde

pvs显示系统中目前已有的物理卷简要信息,可以看到硬盘分区/dev/sda2已经被做成了物理卷。

vgs查看卷组简要信息,系统默认创建了一个名为centos的卷组,其中包括1个pv,卷组容量为19gb。

lvs命令可以查看逻辑卷简要信息,系统在centos卷组中创建了2个逻辑卷。一个逻辑卷名为root,容量为17GB。另一个逻辑卷名为swap,容量为2GB。

[root@localhost ~]# pvs
  PV         VG     Fmt 	 Attr 	PSize   	PFree
  /dev/sda2  centos 	lvm2 	  a--  	<19.00g    0
[root@localhost ~]# vgs
  VG     #PV  #LV  #SN  Attr   VSize   VFree
  centos   1    2    0   wz--n-  <19.00g    0
[root@localhost ~]# lvs
  LV   VG    Attr     LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos  -wi-ao---- <17.00g                                                    
  swap centos  -wi-ao---- 2.00g

pvcreate创建物理卷pv是实习lvm的第一步,用到的命令是pvcreate。

pvdisplay查看系统中所有pv的详细信息。

vgcreate创建卷组。

vgdisplay查看所有卷组或者是指定卷组的信息。

[root@localhost ~]# pvcreate /dev/sd{b,c}
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.
[root@localhost ~]# pvdisplay /dev/sdb
   "/dev/sdb" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               20.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               pRoQc1-8Dmu-Q0zK-Ygem-aXMN-ddC5-Hg0oZh
#使用物理卷/dev/sdb和/dev/sdc创建名为wgroup的卷组。
[root@localhost ~]# vgcreate wgroup /dev/sd{b,c}
  Volume group "wgroup" successfully created
#vgdisplay命令可以查看所有卷组或者是指定卷组的信息。
[root@localhost ~]# vgdisplay wgroup
  --- Volume group ---
  VG Name               wgroup
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               39.99 GiB
  PE Size               4.00 MiB
  Total PE              10238
  Alloc PE / Size       0 / 0   
  Free  PE / Size       10238 / 39.99 GiB
  VG UUID               YOhKyp-am9L-R723-j6md-E1m0-G0Kx-63t4P9

lvcreate从卷组中创建逻辑卷。

lvdisplay命令可以查看逻辑卷的详细信息。

#从wgroup卷组中创建名为ftp的容量为39G的逻辑卷。
[root@localhost ~]# lvcreate -n ftp -L 39G wgroup
  Logical volume "ftp" created.
[root@localhost ~]# lvdisplay /dev/wgroup/ftp 
  --- Logical volume ---
  LV Path                /dev/wgroup/ftp
  LV Name                ftp
  VG Name                wgroup
  LV UUID                vrdadD-QM9J-t2F4-IzF3-8mRI-kGPH-2meWx0
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2017-10-08 10:13:37 +0800
  LV Status              available
  # open                 0
  LV Size                39.00 GiB
  Current LE             9984
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

包的管理

文件的打包与压缩

du查看目录或文件占用磁盘空间的大小

-h,人性化显示容量信息,以k,m,g为单位显示统计结果。

-s,查看目录本身的大小。

#查看/etc/ssh/sshd_config文件的大小。
[root@localhost ~]# du -h /etc/ssh/sshd_config 
8.0K	/etc/ssh/sshd_config
#查看/etc目录所占磁盘空间的大小。
[root@localhost ~]# du -hs /etc
37M	/etc
#查看根目录下每个子目录的大小。
[root@localhost ~]# du -hs /*
0		/bin
124M	/boot
0		/dev
37M		/etc
37M		/home
……

tar命令本身只能对目录和文件进行打包,而并不进行压缩。

-c,创建“.tar”格式的包文件,该选项不会对包文件进行压缩。

-v,显示命令的执行过程。该选项非必需,可根据情况选用。

-f,指定要打包或解包的文件名称,该选项必须放到选项组合的最后一位。

#调用gzip将/etc目录下的所有文件打包并压缩成etc.tar.gz,“-z”选项表示调用gzip来压缩包文件。
[root@localhost ~]# tar -zcf etc.tar.gz /etc
#调用bzip2将/etc目录下的所有文件打包并压缩成etc.tar.bz2,“-j”选项表示调用bzip2来压缩包文件。
[root@localhost ~]# tar -jcf etc.tar.bz2 /etc
#调用xz将/etc目录下的所有文件打包并压缩成etc.tar.xz,“-J”选项表示调用xz来压缩包文件。
[root@localhost ~]# tar -Jcf etc.tar.xz /etc
#调用gzip将/etc目录打包压缩,并将压缩文件保存到/tmp目录下。
[root@localhost ~]# tar -zcf /tmp/etc.tar.gz /etc

yum源

#查询yum源中是否存在名为vsftpd的软件包。
[root@localhost ~]# yum list vsftpd
……
可安装的软件包
vsftpd.x86_64                  3.0.2-22.el7             dvd
#查询yum源中所有名称中含有ftp的软件包。
[root@localhost ~]# yum list *ftp*
……
可安装的软件包
ftp.x86_64                   0.17-67.el7              dvd
lftp.x86_64                   4.4.8-8.el7_3.2           dvd
tftp.x86_64                   5.2-22.el7               dvd
tftp-server.x86_64             5.2-22.el7               dvd
vsftpd.x86_64                3.0.2-22.el7              dvd
#列出系统中可以用的yum源,也可以作为一种坚持yum源是否配置正确的方法。
[root@localhost ~]# yum repolist 
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识               源名称                 状态
dvd                   dvd                   3,971
repolist: 3,971

yum info 查看软件包的信息

[root@localhost ~]# yum info vsftpd
可安装的软件包
名称    :vsftpd
架构    :x86_64
版本    :3.0.2
发布    :22.el7
大小    :169 k
源      :dvd
简介    : Very Secure Ftp Daemon
网址    :https://security.appspot.com/vsftpd.html
协议    : GPLv2 with exceptions
描述    : vsftpd is a Very Secure FTP daemon. It was written completely from : scratch.

yum install 安装软件

-y 可以直接自动确认了。

[root@localhost ~]# yum install vsftpd

yum remove 卸载软件

[root@localhost ~]# yum remove vsftpd 

yum clean all 清除本地缓存

[root@localhost ~]# yum clean all
已加载插件:fastestmirror, langpacks
正在清理软件源: dvd
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors

rpm软件包是将程序源代码经过编译和封装以后形成的包文件,在软件包里会封装软件的程序,配置文件,帮助手册等组件。

-i,安装软件包;

-v,显示安装过程;

-h,显示安装进度,安装每进行2%就会显示一个#号。

-e,可以删除一个已经安装过的软件,如将刚才安装的vsftpd删除。

-p,查询系统中是否已经安装过某个软件。

-qa,查询所有已安装的软件包。

-qi,可以查询某个已安装软件包的详细信息。

–ql,可以查看某个软件包都安装了哪些程序文件,以及这些文件的安装位置。

–qc,可以查询某个软件包所安装的配置文件。

-qf,可以查询系统中的某个文件来自于哪个软件包。

[root@localhost ~]# cd /mnt/cdrom/Packages/
[root@localhost Packages]# rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm 
警告:vsftpd-3.0.2-22.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:vsftpd-3.0.2-22.el7              ################################# [100%]
#查询系统中是否已经安装了openssh-server和httpd软件。
[root@localhost ~]# rpm -q openssh-server
openssh-server-7.4p1-16.el7.x86_64 
[root@localhost ~]# rpm -q httpd
未安装软件包 httpd
#统计系统中已经安装的rpm软件包的个数。
[root@localhost ~]# rpm -qa | wc -l
1320
#查找系统中已经安装的、所有跟“ssh”有关的软件包。
[root@localhost ~]# rpm -qa | grep ssh
openssh-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
libssh2-1.4.3-10.el7_2.1.x86_64
#查询openssh-server软件包的信息。
[root@localhost Packages]# rpm -qi openssh-server
Name        : openssh-server
Version     : 7.4p1
Release     : 16.el7
Architecture: x86_64
Install Date: 2018年09月05日 星期三 18时32分55秒
Group       : System Environment/Daemons
Size        : 993810
License     : BSD
Signature   : RSA/SHA256, 2018年04月25日 星期三 19时32分56秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : openssh-7.4p1-16.el7.src.rpm
Build Date  : 2018年04月11日 星期三 12时21分33秒
Build Host  : x86-01.bsys.centos.org
……
#查询openssh-server在系统的什么位置安装了程序文件。
[root@localhost Packages]# rpm -ql openssh-server
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
/usr/lib/systemd/system/sshd-keygen.service
/usr/lib/systemd/system/sshd.service
/usr/lib/systemd/system/sshd.socket
/usr/lib/systemd/system/sshd@.service
/usr/lib64/fipscheck/sshd.hmac
……
#安装vsftpd,然后查询vsftpd在系统中所产生的配置文件。
[root@localhost ~]# yum install vsftpd
[root@localhost ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
……
#查询find命令文件来自于哪个软件包。
[root@localhost ~]# which find					#查找命令文件路径
/usr/bin/find
[root@localhost ~]# rpm -qf /usr/bin/find			#查询文件的来源包
findutils-4.5.11-5.el7.x86_64
#将ntfs-3g解压到“/usr/src”目录,并进入到解压后产生的目录中。
[root@localhost ~]# tar -zxf ntfs-3g_ntfsprogs-2017.3.23.tgz -C /usr/src
[root@localhost ~]# cd /usr/src/ntfs-3g_ntfsprogs-2017.3.23/
#将ntfs-3g解压到“/usr/src”目录,并进入到解压后产生的目录中。
[root@localhost ~]# tar -zxf ntfs-3g_ntfsprogs-2017.3.23.tgz -C /usr/src
[root@localhost ~]# cd /usr/src/ntfs-3g_ntfsprogs-2017.3.23/

进程和服务的管理

pidof可以查询某个指定进程的pid,比如查看sshd服务的进程pid。

[root@localhost ~]# pidof sshd
58535 55236 1150

ps显示的是静态的进程统计信息,也就是在执行ps命令那一刻的进程情况。

[root@localhost ~]# ps
  PID   TTY     TIME      CMD
 5290   pts/3    00:00:00   bash
 5309   pts/3    00:00:00   ps

ps命令使用“aux”选项组合可以显示系统中所有进程的详细信息,由于“ps aux”采用的是BSD风格,因而选项之前一般不加“-”。

a,显示与当前终端有关的所有进程,包括其他用户的进程。

x,显示与当前终端无关的所有进程。a和x选项一起使用,就是显示系统中的所有进程了。

u,以面向用户的格式显示进程信息(包括用户名、CPU及内存使用情况等)。

-e,显示系统中所有进程的信息。

-f,显示进程的所有信息。

#分屏查看当前系统中所有进程的详细信息。
[root@localhost ~]# ps aux | more
USER  PID  %CPU  %MEM   VSZ   RSS  TTY  STAT   START   TIME  COMMAND
root    1    0.0     0.4   193628  4636  ?     Ss   00:14   0:06 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root    2    0.0     0.0      0     0    ?     S    00:14   0:00   [kthreadd]
root    3    0.0     0.0      0     0    ?     S    00:14   0:07   [ksoftirqd/0]
……

top查看进程动态信息。

nc -lp 8000”在本机开放TCP8000端口。“-l”选项表示listen,“-p”选项表示port,通过这种方式就可以开放系统中任意一个未被占用的端口。

通过jobs命令可以查看当前终端中正在后台运行的进程任务。

fg将后台进程再次转到前台来执行。

kill终止进程。

user查看用户名

[root@localhost ~]# users
root root root

who查看用户信息

[root@localhost ~]# who
root     tty1         2019-01-11 16:24
root     pts/0        2019-02-08 07:26 (192.168.80.1)
root     pts/2        2019-02-10 07:46 (192.168.80.1)

w查看用户详细信息

[root@localhost ~]# w
 08:10:28 up 1 day, 23:53,  3 users,  load average: 0.01, 0.02, 0.05
USER     TTY      FROM        LOGIN@   IDLE   JCPU   PCPU   WHAT
root     tty1                    11:48    2days  0.09s   0.09s 	  -bash
root     pts/0    192.168.80.1     15:31    2days  0.06s   0.06s   -bash
root     pts/2    192.168.80.1     07:46    4.00s  0.15s   0.04s     w

last查看登录记录

[root@localhost ~]# last
root     pts/1        192.168.80.1     Mon Sep 18 14:56   still logged in   
root     pts/3        192.168.80.1     Mon Sep 18 14:30 - 14:54  (00:24)    
root     pts/1        192.168.80.1     Mon Sep 18 07:05 - 14:54  (07:49)    
……

uptime查看cpu使用情况

[root@localhost ~]# uptime
14:30:46 up  4:12,  5 users,  load average: 0.05, 0.03, 0.05

free查看内存使用情况

-h人性化显示,以k,m,g等单位表示容量。

-s指定动态显示时的刷新频率。

[root@localhost ~]# free -h -s 10
              total      used      free    shared    buff/cache   available
Mem:         976M     513M      78M    11M      385M       237M
Swap:         2.0G       83M      1.9G

df查看硬盘使用情况

[root@localhost ~]# df -hT | grep -v tmpfs
文件系统                  类型      容量  已用  可用 已用% 挂载点
/dev/mapper/cl_localhost-root   xfs        17G  4.1G   13G   24%   /
/dev/sda1                 xfs      1014M  173M  842M   18%  /boot
/dev/sr0                  iso9660     4.1G   4.1G     0   100% /mnt/cdrom
#查看根目录下的每个子目录所占用空间的大小。
[root@localhost ~]# du -hs /*
7.9M	/bin
34M	/boot
40M	/etc
……

systemctl start|stop|status|restart|reload

[root@localhost ~]# systemctl status sshd.service
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2019-01-08 13:57:42 CST; 2 weeks 3 days ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1150 (sshd)
    Tasks: 1
   CGroup: /system.slice/sshd.service
           └─1150 /usr/sbin/sshd -D

1月 18 10:09:46 localhost.localdomain sshd[35662]: Accepted password for root from 192.168.80.1 ...h2
1月 19 11:28:37 localhost.localdomain sshd[37475]: Accepted password for root from 192.168.80.1 ...h2
1月 24 07:27:49 localhost.localdomain sshd[38938]: Accepted password for root from 192.168.80.1 ...h2
 ……
 #启动vsftpd服务,并再次查看服务状态。
 [root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 三 2018-12-26 07:44:55 CST; 6s ago
……
#停止服务,执行systemctl stop vsftpd
[root@localhost ~]# systemctl stop vsftpd
#重启服务,执行systemctl reload vsftpd
[root@localhost ~]# systemctl reload vsftpd
#systemctl list-units --type service。选项“list-units”表示列出所有的unit,选项“--type service”则表示列出服务类的unit。
[root@localhost ~]# systemctl list-units --type service
UNIT                LOAD   ACTIVE   SUB     DESCRIPTION
abrt-ccpp.service      loaded  active    exited   Install ABRT coredump hook
abrt-oops.service      loaded  active    running  ABRT kernel log watcher
abrt-xorg.service      loaded  active     running  ABRT Xorg log watcher
abrtd.service         loaded  active     running  ABRT Automated Bug Reporting Tool
……
#利用systemctl命令管理服务启动状态的语法格式:
systemctl enable|disable|is-enabled服务名
#查看sshd服务是否为开机自动启动。命令执行后显示“enabled”表示服务是开机自动启动,显示“disabled”则表示服务不是开机自动启动。
[root@localhost ~]# systemctl is-enabled sshd
enabled
#禁止sshd服务开机自动启动。
[root@localhost ~]# systemctl disable sshd
Removed symlink /etc/systemd/system/multi-user.target.wants/sshd.service.
[root@localhost ~]# systemctl is-enabled sshd
disabled
#将sshd服务重新设置为开机自动启动。
[root@localhost ~]# systemctl enable sshd
Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service.
[root@localhost ~]# systemctl is-enabled sshd
enabled
#首先查询系统中是否已经安装了vsftpd程序。
[root@localhost ~]# rpm –qa | grep vsftpd
#确认程序没有安装后,用yum安装程序。
[root@localhost ~]# yum install vsftpd -y
#启动服务
[root@localhost ~]# systemctl start vsftpd
#将服务设为开机自动运行
[root@localhost ~]# systemctl enable vsftpd
#通过执行“systemctl get-default”命令可以查看系统的默认运行级别。
[root@localhost ~]# systemctl get-default 
graphical.target
#runlevel命令可以查看系统当前所处的运行级别。
[root@localhost ~]# runlevel
N 5
#init命令可以切换系统运行级别
[root@localhost ~]# init 3
[root@localhost ~]# runlevel
5 3
#free命令查看内存使用情况,可以发现内存占用相比图形模式有大幅降低。
[root@localhost ~]# free -h		#运行级别3下的内存使用情况
           total       used     free      shared   buff/cache   available
Mem:      972M      222M    325M      8.2M     424M       538M
Swap:          2.0G          0B        2.0G
[root@localhost ~]# free -h		#运行级别5下的内存使用情况
           total       used      free      shared    buff/cache   available
Mem:      972M      376M      70M       8.5M     526M      374M
Swap:          2.0G          0B        2.0G
#如果将系统运行级别切换到0或者6,则分别表示将系统关闭或重启。
[root@localhost ~]# init 0
[root@localhost ~]# init 6
#systemctl isolate命令来临时切换系统运行级别。
[root@localhost ~]# systemctl isolate multi-user.target 
#at制定一次性计划任务前需要确保atd服务是运行的,否则计划任务不会被执行。
[root@localhost ~]# systemctl status atd		#atd服务默认已经运行
atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: active (running) since 一 2018-12-17 15:27:28 CST; 1 weeks 3 days ago
 Main PID: 1118 (atd)
    Tasks: 1
……
#at命令并在其后指定一个时间点,命令执行之后会自动进入交互模式。
-l,列出等待执行的计划任务;
-d,删除指定的计划任务;
-c,查看计划任务的具体内容。

[root@localhost ~]# at 11:46			#指定在当天11点46分执行计划任务
at> cat /etc/redhat-release			#计划任务内容
at> echo "hello"					#计划任务内容
at> <EOT>							#输入完毕后按Ctrl+d快捷键结束
job 1 at Wed Dec 26 11:46:00 2018	#系统提示有编号为1的计划任务
#查看邮件,提示有封编号为1的邮件。
[root@Localhost ~]# mailx	

crontab周期循环

-u,为指定的用户设置计划任务。

-l,查看用户计划任务列表。

-r,删除指定用户的计划任务列表。

[root@localhost ~]# crontab -e
50 7 * * * /usr/bin/systemctl start sshd
50 22 * * * /usr/bin/systemctl stop sshd
0 23 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
30 7 * * 6 /usr/bin/systemctl restart httpd
30 17 * * 1,3,5 /usr/bin/tar -zcf httpd.tar.gz /etc/httpd

325M      8.2M     424M       538M

Swap: 2.0G 0B 2.0G
[root@localhost ~]# free -h #运行级别5下的内存使用情况
total used free shared buff/cache available
Mem: 972M 376M 70M 8.5M 526M 374M
Swap: 2.0G 0B 2.0G
#如果将系统运行级别切换到0或者6,则分别表示将系统关闭或重启。
[root@localhost ~]# init 0
[root@localhost ~]# init 6
#systemctl isolate命令来临时切换系统运行级别。
[root@localhost ~]# systemctl isolate multi-user.target
#at制定一次性计划任务前需要确保atd服务是运行的,否则计划任务不会被执行。
[root@localhost ~]# systemctl status atd #atd服务默认已经运行
atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
Active: active (running) since 一 2018-12-17 15:27:28 CST; 1 weeks 3 days ago
Main PID: 1118 (atd)
Tasks: 1
……
#at命令并在其后指定一个时间点,命令执行之后会自动进入交互模式。
-l,列出等待执行的计划任务;
-d,删除指定的计划任务;
-c,查看计划任务的具体内容。

[root@localhost ~]# at 11:46 #指定在当天11点46分执行计划任务
at> cat /etc/redhat-release #计划任务内容
at> echo “hello” #计划任务内容
at> #输入完毕后按Ctrl+d快捷键结束
job 1 at Wed Dec 26 11:46:00 2018 #系统提示有编号为1的计划任务
#查看邮件,提示有封编号为1的邮件。
[root@Localhost ~]# mailx


crontab周期循环

-u,为指定的用户设置计划任务。

-l,查看用户计划任务列表。

-r,删除指定用户的计划任务列表。

~~~linux
[root@localhost ~]# crontab -e
50 7 * * * /usr/bin/systemctl start sshd
50 22 * * * /usr/bin/systemctl stop sshd
0 23 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
30 7 * * 6 /usr/bin/systemctl restart httpd
30 17 * * 1,3,5 /usr/bin/tar -zcf httpd.tar.gz /etc/httpd

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值