[TOC]
1. 网络配置补充
# 配置/etc/passwd时如何找到MAC地址?
dmesg | grep eth
DNS1=
DNS2=
DNS3=
# 最多配置3个DNS地址, \
# 且使用systemctl restart network后会将这三个DNS的配置写入/etc/resolv.conf中
# 如何将系统的eno16777736改为原来的eth0?
vi /etc/default/grub
# (1) 在GRUB_CMDLINE_LINUX=...后添加 net.ifnames=0 biosdevname=0
# (2) grub2-mkconfig -o /boot/grub2/grub2.cfg 重新生成grub2.cfg文件
# (3) 将ifcfg-eno16777736中的DEVICE值修改为eth0
虚拟机中的虚拟网络编辑器可调整虚拟机使用的网卡, DHCP等信息
2. 计划任务
at 10:56
at now+5min
at -l # 列出所有一次性的计划任务, 可用来查看jobnum
at -c jobnum # 查看对应jobnum的计划任务详细信息
at -d jobnum # 删除jobnum的计划任务
crontab -e # 有语法错误时退出会有提示
* * * * * username command
分 时 日 月 周 指定用户 绝对路径的命令或脚本
10 * * * * # 每小时的第10分钟
* 1,2,3 * * * # 每天的1点, 2点, 3点
* 1-3 * * *
*/10 1,2,3 7-9 *
crontab -r # 删除所有计划任务
crontab -l # list
crontab -u username -e # 给指定用户创建crontab
# 用crontab创建计划任务, 都放在/var/spool/cron/目录下
# 命令的执行结果会以邮件的形式返回给用户
# 配置文件:
# (1) /var/spool/cron/* (2) /etc/crontab (3) /etc/cron.d/*
# 个人的 系统级的 自定义的
# /etc/cron.deny /etc/cron.allow
# 仅允许 仅拒绝
# 若两个文件都存在相同用户, 以/etc/cron.allow优先
/etc/anacrontab # 将上一次执行的时间与当前时间对比, \
# 其中上一次执行时间记录在
# /var/spool/anacron/cron.{weekly,monthly,daily}
delay in minutes # 延迟时间(延迟时间后执行)
# /etc/cron.d/0hourly -> /etc/cron.hourly/0anacron 由crontab到anacrontab
# anacron每隔一小时检测一次, 本质是一个脚本
3. 进程process
- process: 加载到内存中的指令集
systemctl restart named # PID会变, 缓存被清除
systemctl reload named # PID不变, 不清除缓存 \
# 修改配置文件后建议使用此命令, 等价于kill -1 named
ps aux
VSZ # 向系统申请的虚拟内存
RSS # 实际使用的物理内存
TTY # 该进程运行在哪个终端上 \
# tty1, tty2... (终端, 个数有限) pts1, pts2... (伪终端, 个数无限)
STAT # 进程状态
TIME # 上一次连续工作的时间
COMMAND # 某个命令或服务的名字
ps -eo %cpu,%mem,pid,user # -o, option 指定显示的内容
pidof # 截取某个进程的PID
pidof httpd
echo $? # 可用于判断某个服务是否已启动
- signals
# 帮助页 man 7 signal
kill 7968 <=默认=> kill -15 7968 # 正常结束
kill -9 7968 # 强制结束
kill -1 7968 # 重新读取配置文件
killall httpd # 根据服务名(进程名)杀死一组服务
pkill [-signal] pattern
pkill httpd
- NICE值
# -20~19 默认优先级为0
# 值越小, 优先级越高, CPU轮询, 相同优先级的进程均会被执行
nice -n num COMMAND # 进程启动前修改优先级
nice -n 10 vim /etc/passwd
renice [-]num PID # 进程启动后修改优先级
- job control
# 命令会占据终端界面, 用 & 将进程放到后台运行
jobs # 列出后台任务运行状态
ctrl + z # 将前台运行的进程丢到后台暂停
fg %jobnum # 将后台暂停的进程放到前台运行
bg %jobnum # 后台
kill -19 [PID|%jobnum] # 将后台运行的进程暂停
- exit status
0 # 成功
1~255 # 失败
exit [num] # 数字随意, 后面的整个脚本不会被执行
command1 && command2 # 逻辑与, 两者均成功, $?才为0
command1 || command2 # 逻辑或, 两者其一成功, $?就位0
{ echo "test"; exit 2; } # 自定义退出吗, 注意两个冒号!
4. dd命令的补充
- device to device
# 用途:
# 1. 测试
# 2. 磁盘配额
# 3. swap
# 4. 字节级别拷贝, 不经过上层应用
# 5. 备份分区, 磁盘
dd if=/dev/sda1 of=/tmp/sda1.bak # 将分区备份到文件中
dd if=/tmp/sda1.bak of=/dev/sda1 # 还原数据
5. wget
[curl | links] # 文字界面浏览网页
# 支持http, ftp, 无交互
wget http://172.25.254.250/passwd -P /tmp # 下载到指定目录
-O /tmp/psd # 下载到指定目录并重命名为psd
6. ssh
ssh root@192.168.235.130 'mkdir /tmp/test' # 用单引号包括命令
-X # 将远程图形调到本地
7. scp
scp [-r] source dest # 注意用户权限, 有同名文件时会直接覆盖
-p # 保留时间戳和权限
-C # 压缩
scp root@192.168.235.130:/tmp/file .
8. rsync
- 优点: 增量同步
rsync -av source dest
-z # 压缩
# 常见用法:
rsync -avz 192.168.1.100:/etc/passwd 192.168.1.200:/tmp/
rsync -avz --delete source_dir dest_dir
# 此命令对目录有很神奇的效果,
# 会先将dest_dir下的原有文件删除, 然后将source_dir下的新文件同步到dest_dir内,
# 一般在运维人员进行jar包分发的时候经常会用到
9. 加密算法
对称加密 | 非对称加密 |
---|---|
只有一把钥匙, 加密和解密 | 两把钥匙(公钥, 加密 私钥, 解密) |
gpg -c file # 加密 | |
gpg file # 解密 |
# 如何在client端开启ssh无需输入密码即可访问server端?
ssh-keygen -t [rsa|dsa] # 可设置加密类型及加密私钥的密码
ssh-copy-id -i 公钥 username@192.168.235.130 # 将公钥传递到远端主机
ssh-agent bash # 开启ssh代理
ssh-add # 输入加密私钥的密码
# 是否允许密码验证, 是否允许root用户登录, 修改远程连接使用的端口等如何配置:
vi /etc/ssh/sshd_config
10. FTP服务器的搭建
- CLI: lftp (客户端和服务端各自需求的软件)
- SERVER: vsftpd
lftp ftp://username:password@ip
# 实例:
lftp ftp://alex:redhat@192.168.235.130
# 客户端登录:
lftp 192.168.235.130
help
user user1 # 切换到user1用户 (前提是服务端有user1用户)