日常操作

htop 多功能监控系统

  1. #CentOS7下 启用RPMForge存储库
  2. wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  3. rpm -ivh epel-release-latest-7.noarch.rpm
  4. #安装htop
  5. yum -y install htop

cat 结合EOF标准输入结束 追加信息

  1. #EOF可以是任意关键字
  2. [root@guanlizhuji ansible]# cat <<EOF >>/etc/hosts
  3. > 192.168.31.163 guanlizhuji
  4. > 192.168.31.9 cunchu
  5. > 192.168.31.124 beifen
  6. > 192.168.31.238 wangzhan
  7. > EOF

查看磁盘io读写能力

  1. dd if=/dev/zero of=/data/bigfile bs=1M count=2048

创建普通用户给予不通的权限

  1. root用户下:
  2. useradd cao
  3. passwd cao
  4. vi /etc/sudoers
  5. 找到root ALL=(ALL) ALL在下边加上:
  6. cao ALL=(ALL) ALL
  7. chmod -v u-w /etc/sudoers #将sudoers文件的权限修改成不可编辑
  8. 注:如需新用户使用sudo时不用输密码,把最后一个ALL改为NOPASSWD:ALL即可。

vim 块的操作

  1. 如果无意中删除错了,可以使用‘u’键恢复(命令模式下)
  2. 1.多行注释:
  3. 1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;
  4. 2. 在行首使用上下键选择需要注释的多行;
  5. 3. 按下键盘(大写)“I”键,进入插入模式;
  6. 4. 然后输入注释符(“//”、“#”等);
  7. 5. 最后按下“Esc”键。
  8. 注:在按下esc键后,会稍等一会才会出现注释,不要着急~~时间很短的
  9. 2.删除多行注释:
  10. 1. 首先按esc进入命令行模式下,按下Ctrl + v, 进入列模式;
  11. 2. 选定要取消注释的多行;
  12. 3. 按下“x”或者“d”.
  13. 注:如果是“//”注释,那需要执行两次该操作,如果是“#”注释,一次即可
  14. 3.多行删除
  15. 1.vim 文件名,首先在命令模式下,输入“:set nu”显示行号;
  16. 2.通过行号确定你要删除的行;
  17. 3.命令输入“:32,65d”,回车键,32-65行就被删除了,很快捷吧
  18. 4.显示所有符号
  19. esc进入命令行模式下,输入:set list

报错排错日志路径

/var/log

看进程情况

ps -ef | more(ps -ef| grep 进程名称)

第二列 就是进程号

杀死进程

  1. kill 9 进程号

rwx(421) 读写执行

web http服务(80端口)

/var/www/html/index.html

ftp vsftpd服务(20数据传输21连接)

/etc/vsftp/vsftpd.conf

dns named服务(53端口)

/etc/resolv.conf

dncp dhcpd服务(68端口)

/etc/dhcpd.conf

执行history历史命令

  1. 格式:[!number] [!command] [!!]
  2. number :第几个指令的意思;
  3. command :指令的开头几个字母
  4. ! :上一个指令的意思!
  5. [test@linux] #!99 (!和99中间没有空格) #使用命令记录号码执行命令,执行历史清单中的第99条命令
  6. [test@linux] #!! #重复执行上一个命令
  7. [test@linux] #!rpm #执行最后一次以rpm开头的命令(!? ?代表的是字符串,这个String可以随便输,Shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行。)

用于查看某一端口的占用情况

  1. lsof -i:端口号

用于查看指定的端口号的进程情况

  1. netstat -tunlp |grep 端口号

查看行数

vi编辑文件输入:set nu

查看已开启端口的详细信息

  1. ss -tpln

清理yum源缓存并重新同步

  1. yum clean all && yum makecache

scp #跨主机复制文件

  1. scp root@192.168.120.204:/opt/soft/mongodb /opt/soft/

scp [可选参数] file_source file_target
-1: 强制scp命令使用协议ssh1
-2: 强制scp命令使用协议ssh2
-4: 强制scp命令只使用IPv4寻址
-6: 强制scp命令只使用IPv6寻址
-B: 使用批处理模式(传输过程中不询问传输口令或短语)
-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限。
-q: 不显示传输进度条。
-r: 递归复制整个目录。
-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port:注意是大写的P, port是指定数据传输用到的端口号
-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

免密码登录三种方式

  1. 1a服务器登录b服务器 使用秘钥连接
  2. 执行:ssh-keygen -t rsa
  3. 这时.ssh目录下会生成私钥和公钥的键值对id_rsaid_rsa.pub
  4. [root@a ~]# scp /root/.ssh/id_rsa.pub root@192.168.1.101:/root/.ssh/authorized_keys
  5. [root@b ~]# chmod 600 /root/.ssh/authorized_keys
  6. [root@a ~]# ssh -l root 192.168.1.101
  7. 也可以这样:
  8. 输入命令:ssh-keygen,一直按回车,直至完成操作
  9. ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.100.11
  10. 2ab互相免密连接
  11. 执行:ssh-keygen -t rsa
  12. cd /root/.ssh
  13. mv id_rsa.pub authorized_keys
  14. scp -r /root/.ssh 192.168.100.11:/root
  15. 3windows 服务器产生秘钥 使用xhsell 使用公钥远程连接服务器
  16. 使用xshell 生成一对key
  17. 公钥复制到linux 服务器上 /root/.ssh/authorized_keys
  18. sed -i "s/PasswordAuthentication yes/PasswordAuthentication no/" /etc/ssh/sshd_config
  19. systemctl restart shhd

免登陆配置session密码

  1. ssh-keygen #创建秘钥,需要所有主机都做
  2. ssh-copy-id 节点主机 #复制节点主机的免密密钥

文件的MD5校验

  1. export LANG=en_US.UTF-8 #修改语言为英语便于校验结果
  2. md5sum /etc/passwd > chkpwd.log #生成校验文件
  3. md5sum -c chkpwd.log #校验

防火墙加端口

iptables

-A:指定链名
-p:指定协议类型
-d:指定目标地址
—dport:指定目标端口(destination port 目的端口)
—sport:指定源端口(source port 源端口)
-j:指定动作类型

  1. iptables -A INPUT -p icmp -j ACCEPT
  2. iptables -A INPUT -p tcp --dport 22 -j ACCEPT

firewalld

drop(丢弃):
任何接收的网络数据包都被丢弃,没有任何回复。
仅能有发送出去的网络连接。
block(限制):
任何接收的网络连接,都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。
public(公共):
该区域是系统默认区域,在公共区域内使用,不能相信网络内的其它计算机不会对您的计算机造成危害,只能接收经过选取的连接。
external(外部):
特别是为路由器启用了伪装功能的外部网。
您不能信任来自网络的其它计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。
dmz(非军事区):
用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。
work(工作):
用于工作区。
您可以基本相信网络内的其它电脑不会危害您的电脑。
仅仅接收经过选择的连接。
home(家庭):
用于家庭网络。
您可以基本信任网络内的其它计算机不会危害您的计算机。
仅仅接收经过选择的连接。
internal(内部):
用于内部网络。
您可以基本上信任网络内的其它计算机不会威胁您的计算机。
仅仅接受经过选择的连接。
trusted(信任):
可接受所有的网络连接。

  1. firewall-cmd --permanent --add-service=ssh
  2. firewall-cmd --add-source=172.25.254.60 --zone=trusted
  3. firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.118

发邮件

方式1、使用自带的mail

  1. echo this is 正文” | mail -s "this is tatle" 3037800336@qq.com

方式2、使用第三方邮件服务器

1、获取126客户端授权码

  1. 1)启用pop3功能
  2. 2)获取授权码

2、配置linux下的邮件服务器配置文件

  1. vi /etc/mail.rc 在末尾添加
  2. set bsdcompat
  3. set from="sj13271473920@163.com"
  4. set smtp=smtp.163.com
  5. set smtp-auth-user=sj13271473920@163.com
  6. set smtp-auth-password=AYCGRUEFGMOEJFYT
  7. set smtp-auth=login

nfs文件共享服务部署

  1. yum -y install nfs*
  2. mkdir /usr/share/nfsTest
  3. echo "this is nfs test" > /usr/share/nfsTest/daemon.txt
  4. chown nfsnobody /usr/share/nfsTest
  5. vim /etc/exports
  6. /usr/share/nfsTest 172.16.0.0/24(rw,sync,root_squash) #该网段为只允许网段内IP访问
  7. exportfs -r #重新挂载
  8. exportfs -v #显示共享目录
  9. systemctl restart nfs
  10. systemctl enable nfs
  11. firewall-cmd --permanent --add-service=nfs
  12. firewall-cmd --permanent --add-service=rpc-bind
  13. firewall-cmd --permanent --add-service=mountd
  14. firewall-cmd --reload
  15. showmount -e 172.16.0.76 #查询172.16.0.76服务器的nfs共享目录
  16. mkdir /nfsDaemon
  17. mount -t nfs 172.16.0.76:/usr/share/nfsTest /nfsDaemon

Linux开机启动过程

  1. 1、加载BIOS(包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等)
  2. 2、读取MBR(硬盘上第0磁道第一个扇区)
  3. 3Boot Loader(初始化硬件设备、建立内存空间的映射图)
  4. 4、加载内核
  5. 5、设定运行等级(init0-init6
  6. 6、执行rc.sysinit
  7. 7、启动内核模块
  8. 8、执行不同运行级别的脚本
  9. 9、执行rc.local
  10. 10、执行/bin/login 进入登陆状态

常用命令:

nmtui 图形化修改网络配置

hostnamectl 修改主机名

  1. hostnamectl set-hostname name1

man 命令可选参数查看

  1. man ipaddr

ln -s 建立软链接

常用命令和问题 - 图2

  1. ln -s 源地址 目标链接
  2. //查询建立的软连接
  3. ls -il
  4. //删除软连接
  5. rm -rf 链接路径 (注意后边不要有/,否则源文件也删除了)

ls 显示文件

ls [-a] 显示全部文件

ls [-al] 以长列表的方式显示全部文件

ls [-alt] 按时间排序

ls /home/directory 显示某个路径下的文件列表

pwd 显示当前工作目录

cd 切换工作目录(类似dos下用法)

cd .. 返回上一层目录

cd ../other 返回上一层目录并进入其它目录

cd ~ 返回家目录

cd / 返回到根目录

cd - 两个目录之前切换(相当于电视机的”回看”键)

tab 自动补全,如果存在多个相同的目录,可按两下会显示所有相同的目录,再进行选择

mkdir 创建目录/文件

  1. mkdir dirname 在当前目录下创建文件
  2. mkdir /root/test 使用绝对路径创建目录
  3. mkdir -p /root/test1/test2 创建多级目录,同时创建父、子目录(test1test2都不存在)

rm 删除目录/文件

  1. rm a.txt 删除a.txt文件(需要确认是否删除,输入 y/n)
  2. rm -f a.txt 强制删除a.txt文件(不需要确认是否删除)
  3. rm -r test1/ 删除"test1/"目录(需要确认是否删除,输入 y/n)
  4. rm -rf test1/ 强制删除"test1/"目录(不需要确认是否删除)

cp 拷贝文件或目录

  1. cp source dest
  2. cp a.txt b.txt a复制一份并重命名为b(同目录下)
  3. cp /root/vivi/a.txt /root/even/b.txt a复制一份并重命名为b(不同目录下)
  4. cp -r source dest 复制整个目录要用-r参数
  5. cp -r test1 test2 把目录test1复制一份并重命名为test2
  6. cp -rv test1 test2 把目录test1复制一份并重命名为test2(显示详细信息)

cat 显示文件内容(全部),还可用来连接两个或多个文件,形成新的文件。

  1. cat doc.txt 显示doc.txt的内容
  2. cat -n doc.txt 显示行号
  3. tac doc.txt 倒序显示文件内容
  4. cat doc.txt|more 分屏显示(按空格显示下一屏,按回车显示下一行)

head 从头部开始显示文件内容(默认显示10行)

  1. head doc.txt 显示文件全部内容
  2. head -n doc.txt 显示前n

tail 从尾部开始显示文件内容(默认显示10行)

  1. tail doc.txt 显示文件全部内容
  2. tail -n doc.txt 显示后n
  3. tail -f doc.txt 即时输出文件变化后追加的数据(比如在查日志时就很有用)
  4. ctrl+c 退出tail状态

more 翻页显示文件内容(只能向下翻页,回车:下一行,空格:下一页)

less 翻页显示文件内容(带上下翻页)

grep 文件内容查询

  1. grep a doc.tx 显示doc.txt中包含a的行
  2. grep a doc.tx|wc -l 查找doc.txt中包含a的有多少行
  3. grep -n a doc.tx 带行号的显示doc.txt中包含a的行
  4. grep -v a doc.tx 显示doc.txt中不包含a的行

find 文件查找

  1. find / -name doc.txt 从根目录开始查找名字为doc.txt的文件
  2. find / -type f 从根目录开始查找文件

wc 统计文件行数、单词数、字节数

  1. wc doc.txt 显示文件行数、单词数、字节数
  2. wc -l doc.txt 显示文件行数

* 通配符

  1. ls * 分类显示所有文件
  2. ls *.txt 查看全部txt文件

which 查看命令完整路径

  1. which ls

whereis 所有包含命令的列表

  1. whereis ls 显示所有包含ls命令的路径

clear 清屏(并未删除)

touch 创建文件

  1. touch doc.txt 在当前目录创建doc.txt文件

sort 排序

  1. sort doc.txt 以字母排序
  2. sort -n doc.txt 以数据排序
  3. sort -u doc.txt 去重排序
  4. sort -rn doc.txt 倒序数字排序

tar 打包(未压缩),将多个文件或目录打包在一个文件里

  1. tar [option] 打包后的文件名.tar 要打包的文件或目录

echo 输出显示信息

  1. echo hello world!

su 切换用户

  1. su - root

查看时间信息

  1. date 当前系统时间
  2. hwclock/clock 硬件时间
  3. cal 查看日历
  4. uptime 查看系统运行时间

shutdown [-h,-r] 关机(-h)、重启(-r)

  1. shutdown -h now 立即关机
  2. shutdown -h +10 10分钟后关机
  3. shutdown -h 11:30   11:30关机
  4. shutdown -r now 立即重启
  5. poweroff     立即关机
  6. reboot      立即重启

vi/vim 文本编辑器

一般模式:默认模式,其他模式可通过esc键回到一般模式,可进行选择、复制、粘贴、撤销等操作
i 在光标前插入文本
o 在当前行的下面插入新行
dd 删除行
yy 复制当前行
n+yy 复制n行
p 粘贴
u 撤销上一个操作
r 替换当前字符
/ 查找关键字

编辑模式:在一般模式中按 i、o、r ,可编辑文件,按esc可回到一般模式

命令模式:在一般模式中按”:”,可保存修改或退出vi f 关键字 直接跳转到这一行关键字位置 r 关键字 修改当前字符为关键字 ctrl+x 当前数值自减1,前边加上数字那就是减几 ctrl+a 当前数值自增1,前边加上数字那就是加几 :w 保存当前修改
:q 退出
:q! 强制退出,不保存修改
:x 保存并退出,相当于:wq
:set number 显示行号
:!系统命令 执行一个系统命令并显示结果
:sh 切换到命令行,使用ctrl+d切换加vi

常见问题

yum安装软件报错,显示找不到镜像地址—dns解析的问题,处理办法:

  1. vim /etc/resolv.conf
  2. 加入:
  3. nameserver 8.8.8.8
  4. nameserver 8.8.4.4
  5. search localdomain

tomcat基于Oracle数据库的报错ORA-01653

报错日志:java.sql.BatchUpdateException: 批处理中出现错误: ORA-01653: 表 DZWL.GSMDATA20211208 无法通过 1024 (在表空间 DZWL2021C 中) 扩展

  1. 错误原因:DZWL2021C表空间上限了,无法写入
  2. 解决:
  3. 查询相应的表对应的数据表空间,再修改相应的表的关联数据表空间
  4. select * from dba_data_files;
  5. alter tablespace DZWL2021C add datafile 'E:\APP\ADMINISTRATOR\ORADATA\DZWL\DZWL2021C_04.DBF' size 2G autoextend on next 100M;

table键转为2个空格

  1. vim /etc/vimrc
  2. vim /etc/virc
  3. cat << EOF >> /etc/vimrc
  4. set tabstop=2 "table转为2个空格
  5. set expandtab "插入table自动替换为空格
  6. set nu "显示行号
  7. set autoindent "每行开头设置缩进
  8. set softtabstop=2 "退回缩进的长度,当使用 expandtab 时特别有用
  9. set shiftwidth=2 "缩进级别为2,与softtabstop 保持一致
  10. EOF

time_wait调优

查看随机端口

  1. cat /proc/sys/net/ipv4/ip_local_port_range

查看open files数量

  1. ulimit -a

timewait调优参数

  1. cat /proc/sys/net/ipv4/tcp_tw_recycle   默认为0,关闭;需要修改为1. 快速回收内网打开对外不要开
  2. cat /proc/sys/net/ipv4/tcp_tw_reuse  默认为0,关闭;需要修改为1. time_wait重用
  3. cat /proc/sys/net/ipv4/tcp_timestamps  默认为1,需要打开.

内核调优

  1. /etc/sysctl.conf sysctl -p
  2. net.ipv4.tcp_syncookies = 1 #表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
  3. net.ipv4.tcp_tw_reuse = 1 #默认为0,关闭;需要修改为1. time_wait重用
  4. net.ipv4.tcp_tw_recycle = 1 #表示开启TCP连接中TIME-WAIT sockets的快速回收 内网打开对外不要开
  5. net.ipv4.tcp_fin_timeout = 30 #修改系统默认的 TIMEOUT 时间
  6. net.ipv4.tcp_keepalive_time = 1200 #keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
  7. net.ipv4.ip_local_port_range = 1024 65000 #表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
  8. net.ipv4.tcp_max_syn_backlog = 8192 #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
  9. net.ipv4.tcp_max_tw_buckets = 5000 #系统同时保持TIME_WAIT套接字的最大数量,超过将立即清除
  10. #默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。