# 命令--0.简易版
# 开关机
关机
sync #同步内存数据到硬盘
shutdown -r now # 立刻马上重启
重启
reboot
# 帮助
man
man 命令
man 5 配置文件名
# 文件操作
ls
ls -al
mkdir
mkdir -p 文件夹
touch
touch 文件
touch 文件{1..n}
其他功能,修改文件时间
cat
cat [xx] 文件名
-n 显示行号
-A 显示控制符
less/more
less 文件
tail
tail -20f xxx.log
mv
重命名
mv name1 name2
移动
mv 路径1 路径2
rm
rm -rf xxx
# 查找
which、whereis
locat
updatedb # 更新索引
locat 文件名 # 查找文件
配置文件:/etc/updatedb.conf
find
# 文件名搜
find /tmp -name "*.conf"
# 文件大小 b|c|w|k|M|G
find /tmp -size +1M
find /tmp -size -M # 没有小于1M的文件时,会变成查找 -1K
# 按照修改时间搜索
find /tmp mtime -5 # 5天内的时间搜索
# 用户|组
# 用户
创建
# 创建用户,指定用户组,指定家目录,不允许登录
useradd -g test -d /home/xxx -s /sbin/nologin test
设置密码
# 交互式
passwd user01
# 非交互
echo 我是密码 | passwd --stdin user01
更改用户的账号信息
chage [选项]
-l 列出账户的信息
-E 修改账户过期时间
-d 修改用户最后一次更改密码的时间
# 修改用户登录后需要修改密码
chage -d 0 用户名
# 修改用户账号的过期时间为10天以后:
chage -E $(date +%F -d '+10days') 用户名
# 修改用户账号的过期时间:2019-03-10过期
chage -E '2019-03-10' stu1
修改用户信息
usermod [选项] 用户名
-s 指定用户默认shell
-d 指定用户家目录(每个用户都有一个自己的家,并且默认在/home/xxx)
-m 移动用户家目录,和-d一起使用
-g 指定用户的默认组(主组)
-G 指定用户附加组(一个用户可以加入多个组,但是默认组只有一个)
# 修改stu4用户的默认shell为可登录系统
usermod -s /bin/sh stu4
# 修改stu5用户的家目录
useradd -d /rhome/stu5 stu5
usermod -md /home/stu5 stu5
删除用户
userdel [选项] 用户名
-r 删除用户并且移除其家目录和邮箱
-f 强制删除正在登录的用户
# 只删除用户user02,不删除其家目录
userdel stu1
# 删除stu4用户以及家目录
userdel -r stu4
# 强制删除一个正在登录的用户
userdel -r stu5
userdel -rf stu5
用户信息文件
# 密码文件
/etc/passwd
# 用户密码信息保存文件
/etc/shadow
# 组
创建组
groupadd [选项] 组名
-g 指定组的GID(编号),默认唯一
# 创建一个组admin
groupadd admin
# 查看组信息
tail -1 /etc/group
删除组
groupdel 组名
组成员管理
gpasswd [选项] 组名
-a 添加用户到组
-d 从组中删除成员
-A 指定管理员
-M 指定组成员(会覆盖),可以批量添加用户到组中
-r 删除密码
# 指定user01用户的附加组为sysadmin(站在用户角度)
usermod -G sysadmin user01
# 使用gpasswd命令添加用户到组里
gpasswd -a user01 sysadmin
# -M选项:表示覆盖设置组成员(会覆盖原来的成员列表)
gpasswd -M user02,user03 sysadmin
# 指定admin
gpasswd -A stu2 admin
# 将user03用户从组sysadmin里移除
gpasswd -d user03 sysadmin
# 文件权限
# 普通
修改文件权限
chmod [选项] 模式 文件名
-R 递归更改目录和目录里文件的权限
u:表示文件拥有者
g:表示文件属组里的用户
o:表示其他人,即不是文件的创建者,也不在文件属组里
a:表示所有人
字母和数字对应关系:
r——4
w——2
x——1
-——0
# 使用字母形式修改文件权限
chmod u+x test1
chmod g+w test1
chmod o-r test1
chmod a+x test2
chmod u+x,g+w,o-r test3
chmod u=rw,g=rx,o+r test3
# 修改目录的权限:
# 只修改目录本身的权限
chmod g+w dir1/
# 修改目录以及目录里所有文件的权限(递归修改),使用-R参数
chmod -R o+w dir1/
# 通过数字形式更改文件权限
chmod 644 file1 # rw-r--r--
chmod 700 file2 # rwx------
chmod -R 755 dir1 # rwxr-xr-x
文件属主、组
# 只修改文件的属主
chown 用户名 文件名
# 修改文件的属主和属组
chown 用户名.组名 文件名
chown 用户名:组名 文件名
chown 用户名. 文件名 # 没有指定组名,默认是用户的主组
# 只修改文件的属组
chown .组名 文件名
chown :组名 文件名
# 可以加-R选项,表示递归修改
# chgrp只能修改文件的属组。
chgrp 组名 文件名
# 高级
#=====冒险位=====
# 给一个vim命令设置冒险位,目的是任何人拿vim去修改文件可以临时获得文件拥有者的权限
chmod u+s /usr/bin/vim
chmod 4755 /usr/bin/vim
# 恢复
chmod u-s /usr/bin/vim
chmod 0755 /usr/bin/vim
#=====强制位=====
# 给目录dir2设置一个强制位,测试是否任何人在该目录里创建的文件属组都是该目录的属组
chmod g+s dir2
chmod 2xxx dir2
# 恢复
chmod g-s dir2
chmod 0xxx dir2
#=====粘滞位=====
# 在创建一个公共目录/tmp/dir3,要求所有人都可以在该公共目录里创建、删除文件;
# 但是只能自己管理自己,不能删除别人的文件
chmod 777 /tmp/dir3
chmod o+t /tmp/dir3
或
chmod 1777 /tmp/dir3
# 恢复
chmod o-t /tmp/dir3
chmod 0777 /tmp/dir3
# 默认权限
====》权限计算规则《====
目录:
目录的默认权限=0777-umask=0777-0007=0770 rwxrwx---
普通文件:
文件的默认权限=0666-umask=0666-0007=0660 rw-rw----
====》默认umask《====
普通用户默认:umask 0002
root用户默认:umask 0022
普通用户: 目录(775),文件(664)
管理员: 目录(755),文件(644)
# 全局配置
/etc/profile
/etc/bashrc
# ACL
setfacl
-m 修改或者设置ACL策略
-R 递归授权,对目录下已存在的目录或文件有acl策略,但新建的文件没有
-x 去掉某个用户或者某个组的ACL策略
-b 删除所有的acl策略
setfacl -m u:用户:rwx /home/redhat/file1 给单个用户单独加权限
setfacl -m g:组名:rwx /home/redhat/file1 给单个组单独加权限
setfacl -x u:用户 /home/redhat/file1 去掉某个用户的权限
setfacl -x g:组名 /home/redhat/file1 去掉某个组的acl策略
setfacl -b /home/redhat/file1 删除文件上所有的acl策略
# chattr
[root@localhost ~]# lsattr 选项 文件名
选项:
-a 显示所有文件和目录
-d 若目标是目录,仅列出目录本身的属性,而不是子文件的
# 网络配置
# 主机名
hostnamectl set-hostname RedHat8.itcast.cn
/etc/hostname 文件
# 静态IP配置
[root@heima ~]# cd /etc/sysconfig/network-scripts/
[root@heima network-scripts]# ls
ifcfg-ens160
[root@heima network-scripts]# cat ifcfg-ens160
TYPE=Ethernet 以太网
BOOTPROTO=none IP获取方式,none和static表示静态,dhcp动态
NAME=ens160 网卡名称
UUID=63b0b6ee-fbee-4b17-80be-e3b36ff27493 网卡UUID,唯一标识
DEVICE=ens160 网卡设备名
ONBOOT=yes 激活网卡
IPADDR=192.168.159.100 IP地址
PREFIX=24 子网掩码 或者 NETMASK=255.255.255.0
GATEWAY=192.168.159.2 网关
DNS1=8.8.8.8 dns服务器
# 重启网卡
systemctl restart network.service
# ifconfig
[jysp@jysp ~]$ ifconfig
...省略...
enp125s0f5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.101 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::77b1:8f7c:2a45:346 prefixlen 64 scopeid 0x20<link>
ether cc:20:8c:73:9d:d8 txqueuelen 1000 (Ethernet)
RX packets 5764048 bytes 710412064 (677.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10539417 bytes 4741264284 (4.4 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...省略...
# ping
ping [选项] IP
选项:
-b: 后面加入广播地址,用于对整个网段进行探测
-c 次数: 用于指定ping的次数
-s 字节: 指定探测包的大小
# netstat
[root@localhost ~]# netstat [选项]
选项:
-a: 列出所有网络状态,包括Socket程序
-c 秒数: 指定每隔几秒刷新一次网络状态
-n: 使用IP地址和端口号显示,不使用域名与服务名
-p: 显示PID和程序名
-t: 显示使用TCP协议端口的连接状况
-u: 显示使用UDP协议端口的连接状况
-l: 仅显示监听状态的连接
-r: 显示路由表
[root@jysp ~]# netstat -tuln
[root@jysp ~]# netstat -tulnp
[root@jysp ~]# netstat -an
[root@jysp ~]# netstat -anp
[root@jysp ~]# netstat -rn
netstat -tulnp | grep [端口号|程序]
netstat -anp | grep [端口号|程序]
# lsof
lsof -i <条件>:[端口号]
# 列出系统上被进程打开的文件的相关信息
lsof -i -P | grep [程序]
# 文件系统
# 挂载
# mount
mount -o loop /home/CentOS-7-x86_64-DVD-1708.iso /media/centos7_iso
mount -t iso9660 /dev/cdrom /mnt/cdrom
mount -t vfat /dev/sdb4 /mnt/usb/
# 挂载U盘。因为是Windows分区,所以是vfat文件系统格式
# umount
# umount /dev/hda5
# umount /mnt/hda5
# umount /dev/hda5 /mnt/hda5
# umount -l /mnt/hda5
# /etc/fstab文件
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Dec 13 22:10:25 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=1b7d1f9f-b2af-4efb-af81-7d7bc7ef1864 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/home/jysp/CentOS-7-x86_64-Everything-2009.iso /media/centos7_iso/ iso9660 defaults,ro,loop 0 0
# 包管理工具
# rpm
# 查看已经安装的所有rpm包
rpm -qa 软件包名
rpm -aq|grep 软件包名字
# 查看已经安装软件的配置文件
rpm -qc 软件包名
# 查看已经安装的软件的文件列表
rpm -ql 软件包名
# 查看指定文件来自哪个rpm包
rpm -qf 文件名
选项:
-q 查询(query)
-a 所有(all)
-i 查询软件信息(information)
-p 查询没有安装的软件包(package)
-l 列出软件包中所有文件列表,以及安装目录
-d 查看文档
-c 查看配置文件目录
-f 系统文件属于哪个软件包(file)
-R 查询软件包的依赖性(requires)
# rpm -ivh 包全名
选项:
-i install安装(install)
-v 显示更详细的信息(verbose)
-h 打印#显示安装进度(hash)
# rpm -e 包名
选项:
--nodeps 不检查依赖性
-e 卸载
# rpm -Uvh 包全名
或者
# rpm -Fvh 包全名
选项:
-v:输出详细信息
-h:打印散列标记,一般和-v一起使用
-U:升级软件包,如果该软件包没安装,会自动帮你安装
-F:升级软件包,如果该软件包没安装,不会自动帮你安装
--force
表示强制
rpm -ivh 软件包 --force
强制安装软件包
rpm -e 软件包名 --force
强制卸载软件包
--nodeps
忽略依赖关系
rpm -ivh 软件包 --nodeps
忽略依赖关系安装
rpm -e 软件包 --nodeps
忽略依赖关系卸载
数字证书导入
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@localhost ~]# rpm -qa | grep gpg-pubkey
gpg-pubkey-621e9f35-58adea78
gpg-pubkey-f4a80eb5-53a7ff4b
[root@localhost ~]# rpm -e gpg-pubkey-621e9f35-58adea78
# yum/dnf
清空yum缓存
[root@RedHat8 yum.repos.d]# yum clean all
创建yum缓存
[root@RedHat8 yum.repos.d]# yum makecache
查看仓库
[root@RedHat8 yum.repos.d]# yum repolist
仓库标识 仓库名称 状态
AppStream AppStream 4,672
BaseOS BaseOS 1,658
查看仓库软件
# yum list | grep samba
查看已安装的软件
# yum list installed | samba
# rpm -q vsftpd
# dnf list installed| grep vsftpd
search查找
# yum search httpd
查询指定软件包的信息。
# yum info samba
# yum -y install 软件包1 软件包2
# yum -y groupinstall "包组名"
注意:
1.其中,-y选项表示取消交互
2.包组里面包含很多的软件包。
# yum update 软件包名
# yum update
# yum -y remove 软件包名
# yum -y groupremove "包组名"
# 源码包安装
./configure 编译前准备
./configure --prefix=安装路径
make
make install
make clean
# 打包压缩
tar 选项 打包后的文件 需要打包的文件
-z
-c 创建tar包(打包)
-x
-v
-f
tar -zxvf xxx
tar -zcvf xxx.tar.gz xxx
# 时间日期
# 查看当前系统时间
date
# 查看当前硬件时间
hwclock或clock
hwclock -l
#查看当前系统时区
date -R
timedatectl list-timezones
# 设置时区
tzselect
echo “export TZ='Asia/Shanghai'” >>/etc/profile
timedatectl set-timezone Asia/Shanghai
# 设置系统日期或时间
选项:-s 设置当前系统时间,只有root权限才能设置,其他只能查看。
date -s 20200523 设置成20100523,这样会把具体时间设置成空00:00:00
# 设置系统时间:从硬件时间同步到系统时间
hwclock -s
# 设置硬件时间:从系统时间同步到硬件时间
hwclock -w
# date 常用格式:
获取系统当前时间
yyyy-mm-dd
date +%F
date +%Y-%m-%d
yyyy-mm-dd HH:mm:ss
date +'%F %T'
date +'%Y-%m-%d %H:%M:%S'
获取非当前时间 days,months,years
yyyy-mm-dd
date -d '+3days' +'%F %T'
date --date='3days' +'%F %T'
date -d '-3days' +'%F %T'
date -d '3days ago' +'%F %T'
date --date='-3days' +'%F %T'
# 时间同步
ntpdate IP
# 痕迹
# w
显示登录用户,和他正在做什么。
[root@xiaoshaozi ~]# w
10:46:00 up 37 days, 1:24, 2 users, load average: 0.00, 0.01, 0.05
#系统时间 持续开机时间 登陆用户 系统在1分钟,5分钟,15分钟前的平均负载
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 220.180.63.118 10:45 0.00s 0.00s 0.00s w
root pts/1 220.180.63.118 10:45 0.00s 0.00s 0.00s top
# who
用于查看正在登陆的用户
[root@xiaoshaozi ~]# who
root pts/0 2023-12-20 10:45 (220.180.63.118)
root pts/1 2023-12-20 10:45 (220.180.63.118)
#用户名 登陆终端 登陆时间(来源IP)
# last
系统重启信息记录
[root@xiaoshaozi ~]# last
root pts/1 220.180.63.118 Wed Dec 20 10:45 still logged in
root pts/0 220.180.63.118 Wed Dec 20 10:45 still logged in
root pts/1 220.180.63.118 Tue Dec 19 17:39 - 19:40 (02:01)
root pts/0 220.180.63.118 Tue Dec 19 17:39 - 19:40 (02:01)
root pts/1 220.180.63.118 Tue Dec 19 17:38 - 17:39 (00:01)
root pts/0 220.180.63.118 Tue Dec 19 17:38 - 17:39 (00:01)
root pts/1 220.180.63.118 Tue Dec 19 17:18 - 17:38 (00:19)
root pts/0 220.180.63.118 Tue Dec 19 17:18 - 17:38 (00:19)
#用户名 终端号 来源IP地址 登陆时间 - 退出时间
reboot system boot 3.10.0-957.21.3. Wed Oct 21 21:19 - 09:19 (1117+12:00)
#系统重启信息记录
# lastlog
查看系统中所有用户最后一次的登陆时间的命令
[root@xiaoshaozi ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/1 220.180.63.118 三 12月 20 10:45:58 +0800 2023
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
sync **从未登录过**
shutdown **从未登录过**
zs pts/3 36.5.59.80 日 12月 17 22:19:52 +0800 2023
mysql **从未登录过**
nginx **从未登录过**
rabbitmq **从未登录过**
redis **从未登录过**
influxdb **从未登录过**
tss **从未登录过**
apache **从未登录过**
xiaoshaozi pts/0 四 11月 30 08:51:50 +0800 2023
rpc **从未登录过**
rpcuser **从未登录过**
nfsnobody **从未登录过**
# lastb
查看错误登陆的信息
[root@xiaoshaozi ~]# lastb
root ssh:notty 192.168.1.102 Wed Dec 20 11:17 - 11:17 (00:00)
root ssh:notty 192.168.1.102 Wed Dec 20 11:17 - 11:17 (00:00)
root pts/0 Wed Dec 20 11:13 - 11:13 (00:00)
btmp begins Mon Dec 4 19:27:12 2023
#错误登陆用户 终端 登录ip 尝试登陆的时间
# echo
[root@localhost ~]# echo [选项] [输出内容]
常见选项:
-n :不输出最后的换行符“\n”(就是内容输出后不换行)
-e:解释转义字符(字符串中出现\n、\t等特殊字符,则特别加以处理,而不会将它当成一般文字输出)
[root@jysp ~]# echo -e "\e[33m你好世界\e[0m"
[root@jysp ~]# echo -e "\e[1;31m你好世界\e[0m"
这条命令会把abcd按照红色输出。
解释下这个命令
\e[1 是标准格式,代表颜色输出开始,
\e[0m 代表颜色输出结束,
31m 定义字体颜色是红色
# 配置文件
# locat命令配置文件
/etc/updatedb.conf # 配置搜索范围等
# 用户密码文件
/etc/passwd
# 用户密码信息保存文件,账号过期时间等信息
/etc/shadow
# 组信息
/etc/group
# sellinux
/etc/selinux/config
# 用户进程数配置
/etc/security/limits.conf
/etc/security/limits.d/20-nproc.conf
# ssh配置文件
/etc/ssh/sshd_config
# 主机名配置
/etc/hostname
# hosts配置文件
/etc/hosts
# rpm证书
/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
# yum源配置地址
/etc/yum.repos.d/
# 全局配置文件(针对所有用户所有进程)
# 系统和用户的环境变量信息,当用户第一次登录时,该文件被读取
/etc/profile
# 每个运行的bash信息(系统别名、函数及默认权限的定义),当bash被打开时,该文件被读取
/etc/bashrc
# 局部配置文件(针对某个特定用户以及用户的所有进程)
# 当前用户的bash信息,当用户登录和每次打开新的shell时该文件被读取
~/.bashrc
# 当前用户的环境变量,当用户登录时,该文件被读取
~/.bash_profile
# 保存当前用户历史命令的文件
~/.bash_history
# 当用户退出bash或者终端时,会首先执行该文件里的代码,然后再退出
~/.bash_logout
# 自动挂载文件
/etc/fstab
# 邮件存放位置
/var/spool/mail/