Linux系统的字符界面通常称为Shell。其实Shell本来是指系统的用户界面,它为用户与系统内核进行交互操作提供了一种接口。图形界面和字符界面都属于Shell,图形界面的Shell称为GUI(Graphical User Interface),字符界面的Shell称为CLI(Command Line Interface),像GNOME就属于是一种GUI。由于Linux系统的操作以字符界面为主,因而Shell通常专指字符界面CLI。
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命令由命令名、选项和参数三部分组成,基本格式如下所示:
命令名[选项][参数]
命令名是描述命令功能的英文单词或缩写。例如,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/[email protected]
/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> #输入完毕后按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