# 命令--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   三 1220 10:45:58 +0800 2023
bin                                        **从未登录过**
daemon                                     **从未登录过**
adm                                        **从未登录过**
lp                                         **从未登录过**
sync                                       **从未登录过**
shutdown                                   **从未登录过**
zs             pts/3    36.5.59.80       日 1217 22:19:52 +0800 2023
mysql                                      **从未登录过**
nginx                                      **从未登录过**
rabbitmq                                   **从未登录过**
redis                                      **从未登录过**
influxdb                                   **从未登录过**
tss                                        **从未登录过**
apache                                     **从未登录过**
xiaoshaozi           pts/0               四 1130 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/
更新时间: 2024年1月8日星期一下午4点59分