init 0
init 6
或者 reboot
ip addr
用户管理 属于 组 角色
组的信息保存在 /etc/group
文件中
# 创建组
groupadd 组名
# 删除组
groupdel 组名
比如创建组 dba , 查看 /etc/group
文件即可看到
x 不用管, 1001 表示组的编号
# 创建用户
useradd -n 用户名 -g 组名 -d 用户的主目录
# 删除用户
userdel 用户名
其中,用户的信息保存在文件 /etc/passwd
文件中。
其中,-n
表示指定用户名,-g
表示指定组名, -d
表示指定用户工作的主目录,主目录约定俗成的使用在 /home/用户名
目录
例如创建mysql 用户,创建好了后,查看/etc/password 就可看到一下信息
用户创建后暂时还不能使用的,需要设置用户密码,否则无法登录
passwd 用户名
会显示输入提示:
passwd
用户的密码保存在文件 /etc/shadow
中
创建好新用户后,就可以采用新用户来远程远程登录服务器了。
普通用户与管理员用户的切换
# root 免密切换到任何用户
su - 用户名
# 普通用户切换到其他用户
su - 或 su - 用户名
提示输入密码:
# root 退出到普通用户
exit
管道就是将一个命令输出的内容重定向为另一个命令的输入。
管道操作符是|
,用它将命令连起来就行了。
ls -l | more
grep "2022-09-29 10:14:08" demo.log|wc
ln 文件名 链接名
ln -s 目录或文件名 链接名
lpwd
lls
lcd
put 文件名
或传输多个文件,类似如下
put *.h
以前,Linux只能用rpm安装软件包,需要手工解决软件包的依赖关系。
软件包A -> 软件包B -> 软件包C
yum
(Yellow dog Updater, Modified)是基于rpm的软件包管理器,能够从指定的服务器下载软件包并且安装,还可以自动处理依赖性关系,一次性安装所有依赖的软件包。使用yum之前,必须保证Linux系统可以访问互联网(因为yum仓库在互联网上)。yum -y install 软件包名
yum -y remove 软件包名
yum update 软件包名
4、如何知道需要安装的软件包名
百度之。
5、yum仓库
互联网上有很多yum仓库,不需要任何配置就可以使用。
不允许访问互联网的企业用户可能自建yum仓库。
yum search 软件包名
yum check-update
yum update
yum list
zip
命令
yum -y install zip unzip
zip -q -r -d -u 压缩包文件名 目录和文件名列表
-q
:不显示命令执行的过程。
-r
:递归处理,打包各级子目录和文件。
-u
:把文件增加/替换到压缩包中。
-d
:从压缩包中删除指定的文件。
unzip 压缩包文件名
unzip -d /temp test.zip
注意:zip是通用的压缩格式,Windows和Linux都支持。
tar
命令压缩打包:
tar zcvf 压缩包文件名 目录和文件名列表
解包解压:
tar zxvf 压缩包文件名
注意:tar压缩包文件在Windows系统中可以用winrar打开,但是,winrar不能生成tar压缩包文件。
需要进行四个部分的配置,IP地址、子网掩码、网关、域名解析DNS
1) 进入 centos,root 用户下,cd 到网络配置文件(/etc/sysconfig/network-scripts/)
3)注意,CentOS 启动后,默认是不启动网卡的,所有需要对该网卡配置文件中的ONBOOT 参数设为 yes ,即添加一行 ONBOOT=yes,参数相同时,配置文件以最后的参数值为准。
4)最后添加 NAT 模式的静态IP配置参数:
BOOTPROTO=static
IPADDR=192.168.150.128 # dhcp-动态IP(缺省时),static-静态IP地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.150.2 # 网关
DNS1=8.8.8.8 # 谷歌的DNS服务器
DNS2=114.114.114.114 # 中国电信的DNS服务器
BOOTPROTO=static
IPADDR=192.168.101.128 # dhcp-动态IP(缺省时),static-静态IP地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.101.1 # 网关
DNS1=8.8.8.8 # 谷歌的DNS服务器
DNS2=114.114.114.114 # 中国电信的DNS服务器
比如原来的虚拟机主机名为 [root@localhost] 修改为 CentOS
hostnamectl set-hostname CentOS
ping -c 5 -s 1024 目标主机的IP地址(或)
-c
表示 ping 包的个数。Windows 平台的选项是 -n
-s
表示指定 ping 发送数据的字节数,默认是84个字节(56字节的数据+28字节的报头),最大不超过 65535 字节,Windows 平台的选项是 -l
telnet ip地址 端口号
systemctl 操作 服务名
系统的服务存放在 /usr/lib/systemd/system/ 文件下
systemctl start 服务名(.service后缀可加可不加)
systemctl status 服务名(.service后缀可加可不加)
其他操作有:
# 操作
stop
restart
is-active # 查看是否已启动
enable # 开机自启动开启
disable # 开机自启动关闭
is-enable # 查看是否自启动
try-restart # 只重启正在运行中的服务
# 查看所有的服务状态
systemctl list-units --type service -all
# q 退出
# 查看启动成功的服务列表
systemctl list-unit-files | grep enabled
/home/lighthouse/demo
/home/lighthouse/restart.sh,内容如下:
killall demo
/home/lighthouse/demo
/home/lighthouse/stop.sh,内容如下:
killall demo
chmod +x /home/lighthouse/start.sh /home/lighthouse/restart.sh /home/lighthouse/stop.sh
[Unit]
Description=demo01
After=network.target
[Service]
Type=simple
# 指令意思是切换到普通用户wucz,-c是以这个用户身份执行“”的指令
ExecStart=/usr/bin/su - wucz -c "/home/wucz/start.sh"
ExecReload=/usr/bin/su - wucz -c "/home/wucz/restart.sh"
ExecStop=/usr/bin/su - wucz -c "/home/wucz/stop.sh"
RemainAfterExit=yes
# 如果直接写 /home/wucz/start.sh 就是以超级用户的身份运行
[Install]
WantedBy=multi-user.target
对上述配置内容进行说明:
Unit 部分 是 启动顺序 与 依赖关系
Description
字段:给出当前服务的简单描述Documentation
字段:给出文档位置After
字段:表示本服务应该在某服务之后启动Before
字段:表示本服务应该在某服务之前启动After
和 Before
只涉及启动顺序,不涉及依赖关系;依赖关系由Wants
和Requires
字段负责Wants
字段:表示本服务与某服务之间存在“依赖”关系,如果被依赖的启动服务启动失败或停止运行,不影响本服务的继续运行Requires
字段:表示本服务与某服务之间存在“强依赖”关系,如果被依赖的服务启动失败或停止运行,本服务业必须退出。Service 部分 定义如何启动/重启/停止服务
Type
字段:定义启动类型。可以设置的值包括Type值 | 说明 |
---|---|
simple(默认值) | 设置ExecStart字段启动的进程为主进程 |
forking | ExecStart 字段将以 fork() 方式启动,此时父进程将会退出,子进程将成为主进程 |
oneshot | 类似于 simple,但只执行一次,Systemd 会等它执行完,才启动启动服务 |
dbus | 类似于 simple, 但会等待 D-Bus 信号启动 |
notify | 类似于 simple, 启动结束后会发出通知信号,然后 Systemd 再启动其他服务 |
idle | 类似于 simple,但是要等到其他任务都执行完,才会执行该服务 |
ExecStart
字段:启动服务时执行的命令,可以是可执行程序、系统命令、shell脚本ExecReload
字段:重启服务时执行的命令,可以是可执行程序、系统命令、shell脚本ExecStop
字段:停止服务时执行的命令,可以是可执行程序、系统命令、shell脚本RemainAfterExit
字段:若为yes,表示进程退出以后,服务仍然保持执行。Install部分:定义如何安装这个配置文件,即怎样做到开机启动。
WantedBy
字段:表示该服务所在的Target
。Target
的含义是 服务组,表示一组服务。WantedBy=multi-user.target
指的是,demo所在的Target
是multi-user.target
(多用户模式)。systemctl daemon-reload
systemctl start demo # 启动demo服务。
systemctl restart demo # 重启demo服务。
systemctl stop demo # 关闭demo服务。
systemctl is-enabled demo # 查看demo01服务是否是开机自启动。
systemctl enable demo01 # 把demo01服务设置为开机自启动。
1)查看防火墙服务状态(普通用户可执行),CentOS缺省启用防火墙。
systemctl status firewalld
2)查看防火墙已开通的端口,CentOS缺省不开通任何端口。
firewall-cmd --list-port
3)查看防火墙已开通的服务(CentOS缺省开通ssh和dhcpv6-client服务)。
firewall-cmd --list-service
4)查看防火墙全部的信息。
firewall-cmd --list-all
5)查看防火墙支持的服务的列表(普通用户可执行)。
firewall-cmd --get-services
6)查看防火墙服务是否开机启动。
systemctl is-enabled firewalld
7)查看防火墙的状态。
firewall-cmd --state
8)查看防火墙的版本。
firewall-cmd --version
1)启动、重启、关闭防火墙服务。
systemctl start firewalld
systemctl restart firewalld
systemctl stop firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --zone=public --remove-service=http --permanent
firewall-cmd --zone=public --add-port=5000-5500/tcp --permanent
firewall-cmd --zone=public --remove-port=5000-5500/tcp --permanent
firewall-cmd --reload
systemctl enable firewalld
systemctl disable firewalld
env
命令env
或
env | less
env | grep LANG
echo $环境变量名
zh_CN.UTF-8
,是主流变量名='值'
export 变量名
或
export 变量名='值'
export PATH=$PATH:新增的目录1:新增的目录2:新增的目录n:.
1)$PATH
表示包含原有PATH
的值;
2)目录之间用:
分隔;
3).
表示当前目录。
[lighthouse@VM-0-9-centos ~]$ export PATH=$PATH:.
/etc/profile.d
目录 中增加设置环境变量脚本文件,这是Linux推荐的方法。在此目录中 创建 自己的 .sh
文件的,在个 .sh
中写入你需要设置的环境变量,即可一直生效
2)在/etc/profile
文件中设置。
用户登录时执行/etc/profile文件中设置系统的环境变量。(Linux不推荐)
3)在/etc/bashrc
文件中设置环境变量。
该文件配置的环境变量将会影响全部用户。(Linux不推荐)
ls -l .bash*
可见.bash_profile
(推荐首选)第一步:打开.bash_profile文件【当前用户有效】
$ vim ~/.bash_profile
第二步:添加环境变量路径
// 这个环境变量$LD_LIBRARY_PATH就是专门正对于/lib的
LD_LIBRARY_PATH=/user/local/Anaconda3/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
第三步:执行下面命令更新或reboot重启电脑
// 修改完毕后必须执行下面命令更新或重启才能生效
$ source ~/.bash_profile
第四步:查看是否设置成功
// 查看是否设置成功
echo $LD_LIBRARY_PATH
2).bashrc
(有些影响效率)
当用户登录时以及每次打开新的shell时该文件都将被读取,不推荐在里面配置用户专用的环境变量,因为每开一个shell,该文件都会被读取一次,效率肯定受影响。
3).bash_logout
当每次退出shell时执行该脚本文件。
4).bash_history
保存了当前用户使用过的历史命令。
/etc/rc.local
脚本文件,也可以实现开机启动程序/etc/rc.local
是 /etc/rc.d/rc.local
的软连接/etc/rc.local
文件,内容中有提示,如何添加开机启动程序# 添加
/usr/bin/date >> /tmp/date1.log # 把当前时间追加写入/tmp/date1.log文件中
/usr/bin/sleep 10 # 睡觉 10 秒
/usr/bin/date >> /tmp/date2.log # 把当前时间追加写入到/tmp/date2.log中
chmod +x /etc/rc.d/rc.local
此时重启服务器,就能开机自动执行上述添加的内容了。
使用 rc.local 的注意事项
(1)rc.local 脚本在操作系统启动时只启动一次
(2)存在环境变量的问题:
在 rc.local 脚本执行程序时是没有环境变量的(或者说执行时能用到的环境变量很少),如果执行的程序需要环境变量,解决方法有两种:
# 在放在 rc.local 中的执行语句前加:
/usr/bin/su - root -c "执行命令"
# 例如
/usr/bin/su - root -c "/usr/bin/env >> /tmp/env.log"
(3)不要让 rc.local 挂起
rc.local
中的内容是按顺序执行的,执行完一个程序后才会执行下一个程序,如果某程序不会后台程序,就应该 加 &
符号,让程序在后台运行,否则 rc.local
会挂起,导致开机缓慢。# 一般让程序在后台运行的写法是 后面加 &
./demo&
systemctl status crond
crontab
文件中,每个用户都有自己的 crontab
文件crontab -l [-u 用户名]
root 用户可以 使用 -u
选项查看指定用户的计划任务,若没有 -u
选项,表示查看自己的计划任务。普通用户只能查看自己的计划任务,不允许使用 -u
选项
crontab -e [-u 用户名]
root用户可以用-u
选项编辑指定用户的计划任务,如果没有-u
选项,表示编辑自己的计划任务。普通用户只能编辑自己的计划任务,不允许使用-u
选项。crontab缺省的编辑工具是vi。
crontab -r [-u 用户名]
注意事项同上
5 crontab的示例
1)每两分钟执行一次date命令,结果输出到/tmp/date.log文件(下同)。
*/2 * * * * /usr/bin/date > /tmp/date.log
2)在每个小时的05、10、15分执行一次date命令。
5,10,15 * * * * /usr/bin/date > /tmp/date.log
3)在每个小时20-30分之间的每一分钟执行一次date命令。
20-30 * * * * /usr/bin/date > /tmp/date.log
4)在每天的10:30分执行一次date命令。
30 10 * * * /usr/bin/date > /tmp/date.log
5)在每个月1号的02:30分执行一次date命令。
30 02 1 * * /usr/bin/date > /tmp/date.log
6)在每星期天的02:30分执行一次date命令。
30 02 * * 0 /usr/bin/date > /tmp/date.log