- 1.基础命令
- 1.1.常规命令
- 1.2.重定向符号,管道符号,通配符号
- 1.3.vim文本编辑器
- 1.4.定时任务
- 2.查询服务器硬件信息
- 3.systemctl服务管理命令
- 4.资源监控命令
- 4.1.查看系统的负载信息
- 4.2.查看内存硬盘使用情况
- 4.3.查看显存使用情况
- 4.4.查看服务器上传和下载带宽
- 5.查看系统日志
- 6.shell脚本入门
- 6.1.编写脚本
- 6.2.流程控制和for循环
- 6.3.文件权限判断和运算符
- 7.用户管理和文件权限
- 7.1.用户管理
- 7.2.文件权限
- 8.存储结构和磁盘划分
- 9.其它工具命令
- 9.1.设置开机自动连接网络
- 9.2.设置linux系统的笔记本盒盖不休眠
- 9.3.命令行设置静态ip
- 9.4.修改xftp默认的22端口为其它非标准端口
- 9.5.开启自启动服务
- 9.6 设置系统字符集
- 9.7. 安装nfs挂载共享存储
- 9.7.1.nfs服务配置
- 9.7.2.客户端程序配置
| 命令 | 描述 |
|---|---|
| pwd | 查看工作目录,例:pwd 输出 /root |
| cd | 切换目录,例:cd /home |
| ls | ls用于显示目录的文件,例:ls -la /root (加-l参数查看文件的详细信息,-a 参数查看所有文件包含隐藏文件) |
| cp | 文件复制,例 :cp -R /home/test1 /home/test2 (加-R表示递归复制目录和文件,把目录/home/test1下文件复制到/home/test2) |
| mv | 文件移动,例: mv -R /home/test1 /home/test2 (加-R表示递归移动目录和文件,把目录/home/test1下文件复制到/home/test2) |
| rm | 文件删除,例:rm -rf /home/test2 (加-r表示递归删除目录和文件,加-f表示强制删除文件) |
| mkdir | 创建目录,例: |
| echo | 打印信息到控制台,例: echo hello word 输出hello word |
| cat | 查看文本内容,例: cat -n /usr/local/nginx/conf/nginx.conf (加-n参数显示行号) |
| more | 分页查看文本内容,例more /usr/local/nginx/conf/nginx.conf (可以使用空格或回车或者S下翻页) |
| tail | 查看实时日志文件,例: tail -f /usr/local/nginx/logs/access.log |
| reboot | 重启系统 |
| poweroff | 关机 |
| top | 查看服务器运行情况 |
| ps -ef | grep java | 查看java进程信息 |
| wc | 统计文本的行数,字数,字节数 例: wc -lwc /etc/passwd (-l显示行数,-w显示字数,-c显示字节数) |
| grep | 在文件中找到内容在多少行例(-n表示显示行号, http是查找的内容,nginx.conf是要查找的文件) : grep -n http /usr/local/nginx/conf/nginx.conf 输出 28:http { |
| find | 查看文件位置,例(在/目录下查找文件名nginx.conf所在位置): find / -name ‘nginx.conf’ 输出/usr/local/nginx/conf/nginx.conf |
| kill | 杀死进程 例:kill 1211(杀死进程id为1211的程序,等同 kill -15 1211) kill -9 1211 (强制杀死进程id为1211的程序)killall java (杀死某个服务的所有进程) |
下载文件命令
#用下载资源文件 wget [参数] 下载地址
| 参数 | 描述 |
|---|---|
| -b | 后台下载模式 |
| -p | 下载到指定目录 |
| -t | 最大尝试次数 |
| -c | 断点续传 |
| -p | 下载页面所有资源 |
| -r | 递归下载 |
日期命令
#显示默认格式的日期 date 2020年 05月 04日 星期一 23:40:34 CST #按照指定格式显示 date "+%Y-%m-%d %H:%M:%S" 2020-05-04 23:39:48 #设置时间为2020年5月3号 date -s '20200503 8:20:00' Sun May 3 08:20:00 CST 2020
tar文件压缩或解压
#压缩文件 tar -zcvf test1.tar.gz /home/test1 tar -cvf test2.tar /home/test1 #解压文件 tar -zxvf test1.tar.gz tar -xvf test2.tar
| 参数 | 描述 |
|---|---|
| -c | 创建压缩文件 |
| -x | 解压文件 |
| -t | 查看压缩文件里面有哪些内容 |
| -z | 用Gzip压缩或解压 |
| -j | 用bzip2压缩或解压 |
| -v | 显示压缩或解压的过程 |
| -f | 目标文件名 |
重定向符号
| 符号 | 描述 |
|---|---|
| 命令 > 文件 | 将标准输出重定向到一个文件(覆盖之前的) |
| 命令 2> 文件 | 将错误输出重定向到一个文件(覆盖之前的) |
| 命令 >> 文件 | 将标准输出重定向到一个文件(追加) |
| 命令 2>> 文件 | 将错误输出重定向到一个文件(追加) |
| 命令 >> 文件 2>&1 或 &>> | 将标准和错误共同输出到文件(追加) |
| 命令 >/dev/null | /dev/null 称之为黑洞文件,往这个地方输出的等同删除数据 |
例如把硬盘使用情况保存到文件中
df -h > /root/df.txt #查看这个文件 cat /root/df.txt
管道符号
| 可以把命令组合在一起,如 命令A | 命令B | 命令C | …
ps -ef | grep java
通配符号
* 表示匹配所有
ls -l /dev/sda*1.3.vim文本编辑器
vim /usr/local/nginx/logs/error.log
vim编辑模式中常用的命令
| 命令 | 作用 |
|---|---|
| dd | 删除(剪切)光标所在整行 |
| 5dd | 删除(剪切)光标开始的5行 |
| yy | 复制光标所在整行 |
| 5yy | 复制光标开始的5行 |
| n | 显示搜索命令定位的以下个字符串 |
| N | 显示搜索命令定位到的上个字符 |
| u | 撤销上一布操作 |
| p | 将之前删除或复制过的数据粘贴到光标后面 |
| G | 跳到文件尾行 |
| gg | 调到文件首行 |
末行模式中可用的命令
按Shift键退出编辑模式进入末行模式
| 命令命令 | 作用 |
|---|---|
| :w | 保存 |
| :q | 退出 |
| :q! | 强制退出 |
| :wq! | 强制保存退出 |
| :set nu | 显示行号 |
| :整数 | 跳转到改行 |
| : s/one/two | 将当前光标所在行的第一个one替换成two (s前面没空格,因md不能转义导致加的) |
| : s/one/two/g | 将当前光标所在行的所有one替换成two (s前面没空格,因md不能转义导致加的) |
| :%s/one/two/g | 将全文中的所有one替换成two |
| ?字符串 | 在文本中从下往上搜索字符串 |
| /字符串 | 在文本中重上往下搜索字符串 |
at命令
at 命令类似于一次性闹钟,到了指定时间执行完操作后任务则会自动删除。
#在20:25执行cp命令备份nginx的error.log文件 at 20:25 cp /usr/local/nginx/logs/error.log /usr/local/nginx/logs/error.log_bat #通过 ctrl+d退出编辑模式 #查看已有的定时任务 at -l #删除任务Id为1的定时任务,通过 at-l能查看到 atrm 1
通过下面可以看到执行完任务后再用at -l查看不到任务了。
crond服务
#创建任务 crontab -e #例如创建每天晚上备份nginx的error.log日志 35 20 * * * cp /usr/local/nginx/logs/error.log /usr/local/nginx/logs/error.log_bat2 #查看任务 crontab -l
定时任务表达式 配置顺序为 分 时 日 月 星期 命令
| 字段 | 作用 |
|---|---|
| 分 | 取值0~59 |
| 时 | 取值0~23 |
| 日 | 取值1~31 |
| 月 | 取值1~12 |
| 星期 | 取值0~7的任意整数,其中0与7为星期日 |
| 命令 | 要执行的命令或者脚本文件 |
| 命令 | 描述 |
|---|---|
| lscpu | 查看cpu详细信息 |
| fdisk -l | 查看硬盘详细信息 |
| uname -a | 查看版本当前操作系统内核信息(打印内容: 内核名称 主机名 内核发行版本 节点名 系统时间 硬件名称 硬件平台 处理器类型 操作系统名称) |
| cat /etc/redhat-release | 查看centos内核版本 |
| ipconfig | 查看网卡信息 |
例如关闭防火墙服务
systemctl stop firewalld.service
| 命令 | 描述 |
|---|---|
| systemctl start foo.service | 启动服务 |
| systemctl restart foo.service | 重启服务 |
| systemctl stop foo.service | 停止服务 |
| systemctl reload foo.service | 重新加载服务的配置文件 |
| systemctl status foo.service | 查看服务的状态 |
| systemctl enable foo.service | 开机自动启动 |
| systemctl disable foo.service | 开启不自动启动 |
| systemctl is-enabled foo.service | 查看特定服务是否为开机自动启动 |
| systemctl list-unit-files --type=service | 查看各个级别下服务的启动与禁用状态 |
使用uptime命令查看负载信息
uptime #17:10:43 up 158 days, 21:33, 2 users, load average: 0.41, 0.29, 0.29
- 系统启动的天数为158,共2个用户使用
- load average为负载值,负载值越低约好,尽量不要长期超过5
使用free -h查看内存使用情况
free -h # total used free shared buff/cache available #Mem: 62G 47G 5.9G 1.5G 9.4G 13G
| 参数 | 描述 |
|---|---|
| total | 内存总量 |
| used | 用户已使用 |
| free | 还有多少物理内存可用 |
| shared | 进程共享的内存量 |
| buff/cache | 磁盘缓存的内存量 |
| available | 还可以被应用程序使用的物理内存大小 |
使用 df -h查看硬盘使用情况
df -h #Filesystem Size Used Avail Use% Mounted on #/dev/mapper/centos-root 453G 180G 250G 42% /
| 参数 | 描述 |
|---|---|
| Filesystem | 文件系统名 |
| Size | 硬盘大小总量 |
| Used | 用户已使用 |
| Avail | 硬盘剩余空间 |
| Use% | 使用率 |
| Mounted on | 挂载目录 |
nvidia-smi4.4.查看服务器上传和下载带宽
使用speedtest工具查看带宽
#使用git下载测试软件 yum -y install git git clone https://github.com/sivel/speedtest-cli.git cd speedtest chmod 755 * ./speedtest.py5.查看系统日志
查看系统日志
more /var/log/messages
查看用户登录日志
#查看最近一条登录记录 who #查看所有登录记录 last
查看最近1000条历史命令,觉得1000少可以修改/etc/profile文件中的HISTSIZE属性
history
清除当前用户在本机执行过的命令
history -c6.shell脚本入门 6.1.编写脚本
编写脚本并接受args参数,脚本中通过$1接收第一个参数,$2第二个,…
vi test.sh #!/bin/bash echo "当前脚本的名称:$0" echo "第一个参数是:$1" echo "第二个参数是:$2" #给脚本设置执行的权限 chmod u+x test.sh #执行脚本 下面两种方式效果是一样的 ./test.sh start --port=8080 sh test.sh start --port=8080
设置shell脚本字符编码为unix
有时候shell脚本是在window上编写保存的,内容格式为doc则执行会报错,需要修改成unix编码
vi test.sh set ff set ff=unix :wq6.2.流程控制和for循环
if条件选择语句
#单if判断 if 条件 then fi #多条件判断 if 条件1 then elif 条件2 then else fi
- 编写脚本test2.sh
- 然后执行 sh test.sh 0 控制台会输出为 参数一是0
#!/bin/bash #多条件判断 if [ $1 -eq 0 ] then echo '参数一是0' elif [ $1 -eq 1 ] then echo '参数一是1' else echo '参数一非0和1' fi
case条件选择语句
- 编写test3.sh脚本内容如下代码块
- 执行 test3.sh 1 控制台会输出 参数一是 1
#!/bin/bash case $1 in 1) echo '参数一是 1' ;; 2) echo '参数一是 2' ;; *) echo '其它选项,参数一是非1和2的值' esac
for条件循环语
servers=('manager.jar' 'monitor.jar' 'gateway.jar')
for server in ${servers[@]};
do
echo $server
done
6.3.文件权限判断和运算符
文件权限判断语句
| 命令 | 作用 |
|---|---|
| -d | 目录是否存在 |
| -e | 文件是否存在 |
| -r | 是否有权限读取 |
| -w | 是否有权限写入 |
| -x | 是否有权限执行 |
整数比较运算符
| 命令 | 作用 | 等同于 |
|---|---|---|
| -eq | 是否等于 | == |
| -ne | 是否不等于 | != |
| -gt | 是否大于 | > |
| -lt | 是否小于 | < |
| -le | 是否等于或小于 | <= |
| -ge | 是否大于或等于 | >= |
字符串比较运算符
| 命令 | 作用 |
|---|---|
| = | 字符是否相等 |
| != | 字符是否不相等 |
| -z | 判断字符是否为空 |
创建test3.sh脚本并执行两次脚本出现下面两种情况
- 1.目录不存在则创建并退出脚本
- 2.目录存在则不创建,打印退出程序!信息
vi test3.sh #!/bin/bash # 创建变量存放目录路径 DIR=/home/testDir # 判断目录是否存在,如果不存在则创建目录 -d为存在,前面加!取相反条件 if [ ! -d $DIR ] then echo "创建目录 $DIR" mkdir -p $DIR #执行exit 1 退出脚本不执行后面echo "退出程序!"语句。 exit 1 else echo "$DIR 已存在!" fi echo "退出程序!" # :wq保存,设置权限7.用户管理和文件权限 7.1.用户管理
添加用户组
groupadd 用户组名
#添加名称为testGroup的用户组 groupadd testGroup
添加用户
useradd [选项] 用户名
| 参数 | 说明 |
|---|---|
| -d | 指定用户的家目录(默认 /home/username) |
| -e | 账号到期时间,格式为 YYYY-MM-DD |
| -u | 指定该用户的默认UID |
| -g | 指定一个初始的用户基本组(必须已存在) |
| -G | 指定一个或多个扩展的用户组 |
| -N | 不创建与用户同名的基本用户组 |
| -s | 指定改用户的默认Shell解释器 |
useradd -u 8888 -g testGroup test
修改用户
usermod [选项] 用户名
| 参数 | 说明 |
|---|---|
| -c | 添加用户账号的备注信息 |
| -d -m | -d -m连着用,重新指定用户的工作目录并自动把旧的数据迁移过去 |
| -e | 用户到期时间 |
| -g | 变更所属的用户组 |
| -G | 变更扩展用户组 |
| -L | 锁定用户禁止其登录 |
| -U | 解锁用户让其允许登录系统 |
| -s | 变更默认终端 |
| -u | 修改用户的UID |
修改用户密码
passwd命令用于修改密码,过期时间,认证信息等,
格式为: passwd [选项] 用户名
| 参数 | 作用 |
|---|---|
| -l | 锁定用户,禁止其登录 |
| -u | 解除锁定,允许用户登录 |
| -d | 使该用户可用空密码登录系统 |
| -e | 强制用户在下次登录是修改密码 |
| -S | 显示用户密码是否被锁定,以及密码加密的算法 |
删除用户
格式为 userdel [选项] 用户名
| 参数 | 说明 |
|---|---|
| -f | 强制删除用户 |
| -r | 强制删除用户及用户工作目录 |
给文件分用户组
格式为 chown [参数] 用户:用户组 文件名或目录
chown test:testGroup 文件名或目录名 #递归给目录下所有文件和目录分组 chown -R test:testGroup 目录名
chmod 777 test.sh
- chmod 777 test.sh 表示该文件对应的 [所有者,文件所属组,其他用户]都有读写执行权限。
- chmod 755 test.sh 表示该文件所有者有读写执行权限,[文件所属组,其他用户]只有读和执行权限
- 第一位数值表示文件所有者权限,第二位表示文件所属组权限,第三位表示其他用户权限
通过ls -l可以查看文件权限 - 7包含读写和执行权限, 6包含读写权限,5包含读和执行权限,4代表只有读权限
上图第一列字母对应为下表的 |读|写|执行 |读|写|执行 |读|写|执行 ,权限字母对应的数值参照下表格
| 权限分配 | 文件所有者 | 文件所属组 | 其他用户 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| 权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
| 字符表示 | r | w | x | r | w | x | r | w | x |
| 数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
存储结构
| 目录名称 | 目录描述 |
|---|---|
| /boot | 开机需要的文件 |
| /dev | 以文件形式存放任何设备与接口 |
| /etc | 配置文件 |
| /home | 用户家目录 |
| /bin | 存放单用户模式下还可以操作的命令 |
| /lib | 开机需要的函数库 |
| /sbin | 开机过程中需要的命令 |
| /media | 用于挂载设置文件的目录 |
| /opt | 放置第三放的软件 |
| /root | 系统管理员的家目录 |
| /srv | 一些网络服务的数据文件目录 |
| /tmp | 临时文件 |
| /proc | 虚拟文件系统,例如 内核,进程等 |
| /usr/local | 用户自行按照的软件 |
| /usr/share | 帮助和说明文件 |
| /var | 主要存放经常变化的文件,如日志 |
| /lost+found | 当文件发生错误时,将一些丢失的文件片段放到这 |
物理设备的命名规则
#查看硬盘信息 df -h
| 硬件设备 | Filesystem名称 |
|---|---|
| IDE设备 | /dev/hd[a-p] |
| SCSI/SATA/U盘 | /dev/sd[a-p] |
| 软驱 | /dev/fd[0-1] |
IDE设备很少见,基本都是’/dev/sd’开头的设备
挂载硬件设备
mount用于把硬盘挂载到指定的目录
mount /dev/sdb3 /backup
卸载硬盘社保
umount用于取消挂载
umount /dev/sdb39.其它工具命令 9.1.设置开机自动连接网络
#1.先查看网络配置情况命令 ifconfig -a #2.前往网络配置目录 cd /etc/sysconfig/network-scripts/ #3.找到网卡配置,类似于 ifcfg-eth0 的文件。在此提醒大家注意,最后的 eth0 即是你的网络名称,如果你的网络名称不是 eth0,则此处可能有所不同。比如,我的网络名称为 ens33,这里便是 ifcfg-ens33。 vi ifcfg-ens33 ONBOOT=yes # 把此处改成yes :wq #可以reboot重启系统测试9.2.设置linux系统的笔记本盒盖不休眠
vi /etc/systemd/logind.conf HandleLidSwitch=lock :wq #立即生效 systemctl restart systemd-logind9.3.命令行设置静态ip
#查看当前ip对应的网卡号,如ifcfg-eth0 ip addr vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 修改ip为静态的,把BOOTPROTO=dhcp 改成=static BOOTPROTO="static" #添加3行 #静态IP IPADDR=192.168.0.134 #子网掩码 NETMASK=255.255.255.0 #网关或者路由地址 GATEWAY=192.168.0.1 #按:wq保存 #重启网络配置 service network restart9.4.修改xftp默认的22端口为其它非标准端口
第一步:修改/etc/ssh/sshd_config
vi /etc/ssh/sshd_config #找到行下面Port 22行,然后再下面添加一行使用10022作为xftp端口 #Port 22 #添加一行 Port 10022 #:wq保存退出
第二步: 修改SELinux配置:
systemctl restart sshd.service semanage port -m -t ssh_port_t -p tcp 10022 #然后确认一下是否添加进去 semanage port -l | grep ssh #删除端口 #semanage port -d -t http_port_t -p tcp 10022
如果成功会输出 ssh_port_t tcp 10022, 22
第三步: 修改firewall配置
执行下面命令开放防火墙端口并重启防火墙服务。
firewall-cmd --zone=public --add-port=10022/tcp --permanent && firewall-cmd --reload
第四步: 重启ssh服务
systemctl restart sshd.service
第五步: 测试新端口的ssh连接
ssh xx.xx.xx.xx -p 100229.5.开启自启动服务
编辑文件
vi /etc/rc.d/rc.local #添加nginx开机自动启动命令 /usr/local/nginx/sbin/nginx # :wq保存修改
配置开启自启动权限
chmod +x /etc/rc.d/rc.local #执行下面命令没有输出则需要执行第二行命令systemctl daemon-reload启动开机自启动服务 systemctl list-dependencies multi-user.target | grep rc-local #systemctl daemon-reload #再次执行命令可以看到 ├─rc-local.service信息表示启动成功 systemctl list-dependencies multi-user.target | grep rc-local9.6 设置系统字符集
vi /etc/sysconfig/il8n #添加下面两行 LANG="zh_CN.UTF-8" LC_ALL="zh_CN.UTF-8" #:wq保存退出,执行下面让配置文件生效 source /etc/sysconfig/i18n #编辑环境变量配置 vi /root/.bash_profile #添加下面两行 export LC_ALL="zh_CN.UTF-8" export LANG="zh_CN.UTF-8" #:wq保存退出,执行source让环境变量生效 source /root/.bash_profile9.7. 安装nfs挂载共享存储
安装nfs可以使多台服务器的文件资源共享
- 准备2台及以上机器测试,例:192.168.0.100,192.168.0.101,…服务器
- 在192.168.0.100服务器安装nfs服务
- 在192.168.0.101服务器把目录挂载到nfs服务上面
第一步:安装服务
#安装nfs服务 yum -y install nfs-utils #启动nfs服务 systemctl start nfs #设置开机自启动 systemctl enable nfs #查看服务状态 systemctl status nfs
第二步:创建挂载目录并设置权限
mkdir /opt/data chmod 777 /opt/data
第三步:编辑共享目录访问权限
vi /etc/exports # *表示所有的客户机都可以挂接此目录,rw表示读写权限 /opt/data *(rw,) #保存完需要重启nfs systemctl restart nfs9.7.2.客户端程序配置
#挂载到nfs服务端的路径 本地路径 mount -t nfs 192.168.0.100:/opt/data /opt/data #取消挂载 umount /opt/data



