大家好,又见面了,我是你们的朋友全栈君。
目录
2.在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
11.Linux的安全如何做?从哪些方面入手,请简要说明步骤。
23.如何在/home目录下找出120天之前被修改过的文件?
25.在整个目录树下查找文件“core”,如发现则无需提示直接删除它们。
26.绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?
28.怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?
30.终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
31.用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
32.Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
33.psaux中的 VSZ 代表什么意思,RSS 代表什么意思
35.linux系统中你会用到什么命令查看硬件使用状态信息?
36.利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?
37.把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
50.linux系统设置定时任务,星期六凌晨四点重启设备,请写出定时任务
53.linux平台下为如何程序打补丁?参数P1或P2代表什么含义?
56.查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?
57.当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?
59.你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
63.使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到 tcpdump.log
65.将本地的80端口的请求转发到8080端口,本机地址10.0.0.254,写出命令
67.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
70.实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令
76.Cobbler装机平台与传统PXE网络装机的优势有哪些?
79.如何修改Linux内核参数,调整进程可以打开的最大文件数量?
81.客户端无法连接服务时,如何查看服务器的服务是否启动,端口是否开放?
84.配置NFS服务器,如何禁止root降权为nfsnobody用户?
86.DNS的工作过程,当我们访问百度,敲下回车的一瞬间DNS做了什么操作?
88.一个shell 脚本手工可以执行,放入定时任务后不能执行,可能的原因?
90.Ceph提供了哪些存储方式,客户端通过什么方式访问Ceph存储?
95.简述raid0 raid1 raid5 三种工作模式的工作原理及特点
105.rsync+inotify是实现文件实时同步的,加什么参数才能实现实时同步,–delete参数又是什么意思?
1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在 他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技 术,运维又包括很多种,有DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等等 2)游戏运维又有分工,分为开发运维、应用运维(业务运维)和系统运维 开发运维:是给应用运维开发运维工具和运维平台的 应用运维:是给业务上线、维护和做故障排除的,用开发运维开发出来的工具给业务上线、维 护、做故障排查系统运维:是给应用运维提供业务上的基础设施,比如:系统、网络、监控、硬件等等 总结:开发运维和系统运维给应用运维提供了“工具”和“基础设施”上的支撑 开发运维、应用运维和系统运维他们的工作是环环相扣的
游戏运营要做的一个事情除了协调工作以外,还需要与各平台沟通,做好开服的时间、开服数,用户导量、活动等计划
开机加电BIOS自检———–>MBR引导———–>grub引导菜单———–>加载内核———–>启动init进程———–>读取inittab文件———–>启动mingetty进程———–>登录系统
因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端, ”你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
不用root,添加普通用户,通过sudo授权管理 更改默认的远程连接SSH服务端口及禁止root用户远程连接 定时自动更新服务器时间 配置国内yum源 关闭selinux及iptables(iptables工作场景如果有外网IP一定要打开,高并发除外) 调整文件描述符的数量 精简开机启动服务(crond rsyslog network sshd) 内核参数优化(/etc/sysctl.conf) 更改字符集,支持中文,但建议还是用英文字符集,防止乱码 锁定关键系统文件 清空/etc/issue,去除系统及内核版本登录前的屏幕显示
DNS (53) Telent (23) SSH (22) SMTP (25) Mysql (3306) HTTP (80) HTTPS (443) FTP (21,20) Nginx (80) Tomcat (8005,8009,8080) Redis (6379) Zabbix_server (10051) Zabbix_agent (10050) Pop (110) Imap (143) Rpc (111) Ntp (123) DHCP (67/68) Memcache (11211)
top uptime w tload
Linux系统启动时,会读取/etc/fstab文件,该文件中包含有所有分区的挂载信息,系统根据该信息将 所有设被挂载到特定位置
/:整个Linux文件系统的根目录 /boot:存放系统内核、启动菜单配置等文件/home:存放普通用户的默认家目录(同名子目录) /root:管理员的家目录 /bin、/sbin:存放各种系统命令、可执行的程序 /dev:存放设备文件 /etc:存放各种系统配置、系统服务配置文件
1)Linux系统的稳定性 Linux采取了许多安全技术措施,其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。Linux由于需要应用到网络服务器,这对稳定性也有比较高的要求,实际上Linux在这方面也十分出色。 2)Linux系统的安全性 Linux系统在设计的时候就是针对多用户环境的,所以对系统文件,用户文件都做了明确的区分,每个文件都有不同的用户属性,作为一个普通用户,通常只能读写自己的文件,而对一般的系统文件只能读取不能改动,一些敏感的系统文件甚至连读取都是被禁止的,这种设计从根本上保证了系统的安全性,即使一个用户文件出现了问题,也不会殃及整个系统。 3)Linux软件安装的便利性: 在Windows平台下,通常只要一直用鼠标单击下一步按钮就 4)Linux软件资源消耗 可以完成安装。由于内核小,因此他可以支持多种电子产品,如:Android手机,PDA等,资源消耗很少。
1)关闭不用的服务 2)用iptables限定规则,只开放22,80等常用端口 3)禁止root用户直接登录服务器,只允许密钥验证,配置合适的sudo规则 4)限定登录服务器的ip白名单 5)Apache/nginx配置文件中配置web认证、访问控制、限定某些目录禁止解析等操作 6)设置php.ini,禁掉高危函数,配置合适的open_basedir
uname -r 或者uname -v
(Linux企业运维人员最常用192个命令汇总_kali_yao的博客-CSDN博客不熟悉命令的参考此网站) 1)Top:实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理.(P、M等) 2)Free:可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。 3)uptime:能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。(top w tload也可以,如果能说出更多会更好) 4)vmstat:的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。 5)NetHogs是一个开源的命令行工具(类似于Linux的top命令),用来按进程或程序实时统计网络带宽使用率(实时查看进程流量)。 6)iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU的使用情况 7)strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。 8)sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。 (sar -n DEV查看历史网卡流量,或者实时查看流量) sar -r(察看内存和交换空间的使用率) 9)time命令用于统计给定命令所花费的总时间。 10)iftop(需要安装iftop软件包,实时查看具体IP、端口的流量,iftop -P) 11)Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。 12)lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。
(1)如果是单一应用的服务器,只需要用iftop、sar等工具统计网卡流量就可以。 (2)如果服务器跑了多个应用,可以使用nethogs工具实现,它的特别之处在于可以显示每个进程的带宽占用情况,这样可以更直观获取网络使用情况。
1)top命令的第一行 2)uptime命令 3)w命令 4)查看/proc/uptime文件,输出的第一个字段就是系统运行的时间,单位是秒
主机路由 route add -host 192.168.197.100 dev eth0 网关路由 route add default gw 192.168.197.1 网络路由 route ad -net 192.168.1.0 netmask 255.255.255.0 deveth1 route ad -net 192.168.1.0 netmask 255.255.255.0 gw192.168.197.1
‘who -r’ 和 ‘runlevel’ 命令可以用来查看当前的Linux服务器的运行级别。
1)内核参数的查看方法 使用“sysctl -a”命令可以查看所有正在使用的内核参数。内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4、net.ipv6、net.core、vm、fs、dev.parport、 dev.cdrom 、dev.raid、kernel等等。相同的linux,安装的组件和使用的方式不一样,正在使用的内核参数是不一样的。所有的内核参数的说明文档是放到/usr/src/linux/Documentation/sysctl中的,如果想知道对内核参数的说明,可以到该目录下查看相应的说明文档。 2)内核参数的的设置方法 由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。也可以通过文件的方式进行设置。下面就介绍这两种修改方法。 命令行的设置可以用两种方法实现。 1)使用“sysctl -w 参数名=值”的方式假设我们把net.ipv4.ip_forward的值修改为1,使用命令“sysctl -w net.ipv4.ip_forward=1”。 e799bee5baa6e997aee7ad94e58685e5aeb931333335346137 2)修改内核参数对应的proc文件 内核参数位于/proc/sys/之下,参数名称是以文件所在的路径,并将“/”以“.”来取代。举例来 说,/proc/sys/net/ip_forward的参数名称为net.ipv4.ip_forward。同样把net.ipv4.ip_forward的值修改为1,使用命令“echo “1” > /proc/sys/net/ipv4/ip_forward”。 注意,这里proc文件跟普通的文件不一样。一般一个文件用echo写入内容之后,会变成一个文本文件,但echo修改proc文件之后还是个空文件。
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行级别2:多用户状态(没有NFS) 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式 运行级别4:系统未使用,保留 运行级别5:X11控制台,登陆后进入图形GUI模式 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
用 “route -n” 和 “netstat -nr” 命令,我们可以查看默认网关。除了默认的网关信息,这两个命令还可以显示当前的路由表。
/proc文件系统是一个基于内存的文件系统,其维护着关于当前正在运行的内核状态信息,其中包括CPU、内存、分区划分、I/O地址、直接内存访问通道和正在运行的进程。这个文件系统所代表的并不是各种实际存储信息的文件,它们指向的是内存里的信息。/proc文件系统是由系统自动维护的。
find /usr -size +10M
find /home -mtime +120
find /var ! -atime -90
find / -name core -exec rm {} \;
绝对路径:如/etc/init.d 当前目录和上层目录:./ ../ 主目录:~/ 切换目录:cd
查看当前进程:ps 执行退出:exit 查看当前路径:pwd
清屏:clear 退出当前命令:ctrl+c 彻底退出 执行睡眠 :ctrl+z 挂起当前进程fg 恢复后台 查看当前用户 id:”id“:查看显示目前登陆账户的 uid 和 gid 及所属分组及用户名 查看指定帮助:如 man adduser 这个很全 而且有例子;adduser –help 这个告诉你一些常用参数;info adduesr;
vi 文件名 #编辑方式查看,可修改 cat 文件名 #显示全部文件内容 more 文件名 #分页显示文件内容 less 文件名 #与 more 相似,更好的是可以往前翻页 tail 文件名 #仅查看尾部,还可以指定行数 head 文件名 #仅查看头部,还可以指定行数
终端/etc/tty 黑洞文件/dev/null
wc 命令 – c 统计字节数 – l 统计行数 – w 统计字数。
1)不可中断状态:进程处于休眠状态,但是此刻进程是不可中断的。不可中断,值进程不响应异步信号 2)暂停状态/跟踪状态:向进程发送一个SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。 “正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。 3)就绪状态:在 run_queue 队列里的状态 4)运行状态:在 run_queue 队列里的状态 5)可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待 socket 连接、等待信号量),而被挂起 6)zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体 (task_struct)也释放掉 7)退出状态 D 不可中断 Uninterruptible(usually IO) R 正在运行,或在队列中的进程 S 处于休眠状态 T 停止或被追踪 Z 僵尸进程 W 进入内存交换(从内核 2.6 开始无效) X 死掉的进程
VSZ:虚拟内存集,进程占用的虚拟内存空间 RSS:物理内存集,进程战用实际物理内存空间
mount.cifs//Ip地址 /server /mnt/server -o user=administrator,password=123456 linux下的 server需要自己手动建一个后面的 user与 pass是 windows主机的账号和密码 注意空格和逗号
lscpu(查看 cpu信息)、 free-m(查看内存信息)、 df-h(查看硬盘分区信息)、 top(还可以动态查看 cpu、内存使用情况的信息) /proc/目录下也可以查看很多硬件信息
ps -ef (system v 输出) ps -aux bsd 格式输出 ps -ef | grep pid
把后台任务调到前台执行 fg 把停下的后台任务在后台执行起来 bg
ifconfifig 网卡名(查看网卡整体流量) iftop(需要安装iftop软件包,实时查看具体IP、端口的流量,iftop -P) iptraf-ng (需要安装iptraf-ng软件包,实时查看IP、端口的流量) sar -n DEV(需要安装sysstat软件包,查看历史网卡流量,或者实时查看流量) nethogs eth0(需要安装nethogs软件包,实时查看进程流量) 查看网站的访问日志(利用awk统计资源的大小并求和)
查看所有 env 查看某个,如 home:env $HOME
cpio就是复制入和复制出的意思。cpio可以向一个归档文件(或单个文件)复制文件、列表,还可以从中提取文件。
patch命令就是用来将修改(或补丁)写进文本文件里。patch命令通常是接收diffff的输出并把文件的旧版本转换为新版本。举个例子,Linux内核源代码由百万行代码文件构成,所以无论何时,任何代码贡献者贡献出代码,只需发送改动的部分而不是整个源代码,然后接收者用patch命令将改动写进原始的源代码里。
aspell是Linux操作系统上的一款交互式拼写检查器。aspell命令继任了更早的一个名为ispell的程序,并且作为一款免费替代品 ,最重要的是它非常好用。当aspell程序主要被其它一些需要拼写检查能力的程序所使用的时候,在命令行中作为一个独立运行的工具的它也能十分有效。
strings命令用来提取和显示非文本文件中的文本字符串。(LCTT 译注:当用来分析你系统上莫名其妙出现的二进制程序时,可以从中找到可疑的文件访问,对于追查入侵有用处)
tee 过滤器用来向多个目标发送输出内容。如果用于管道的话,它可以将输出复制一份到一个文件,并复制另外一份到屏幕上(或一些其它程序)。
sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。 sar命令 选项 间隔时间 次数 CPU使用情况:sar -u 平均负载情况:sar -q内存使用情况:sar -r swap分区情况:sar -W IO和传递速率:sar -b 磁盘使用情况:sar -d 网络信息情况:sar -n 网络接口信息:sar -n DEV socket连接信息:sar -n SOCK TCP连接统计:sar -n TCP
conda create -n ForPytorch python=3.6 https://www.cnblogs.com/picassooo/p/11776853.html
logrotated logrotated的配置文件/etc/logrotate.d/haproxy 然后使用logrotate的默认设置来做日志滚动压缩: /etc/logrotate.conf 也可以手动调用: 假设我们的配置文件放在: /data/log/logrotate.d/haproxy 然后,在计划任务中配置: 59 23 * * * /usr/sbin/logrotate -f /data/log/logrotate.d/haproxy
Linux中很多命令不支持|管道来传递参数解决方法 – 使用xargs命令 xargs命令: 1.默认命令是echo,空格是默认定界符。 2.常用的几种用法: 1> touch fifind | xargs touch -c 2> rm find ./ -name “.gitignore” | xargs rm -rf – 3> ls find ./ -name “*.sh” | xargs ls -l
route add -net 192.168.2.0/24 gw 192.168.2.254
crontab -e -u 用户名 * 04 * * 6 /usr/sbin/reboot
1、kill -9 id:一般不加参数kill是使用15来杀,这相当于正常停止进程,停止进程的时候会释放进 程所占用的资源;他们的区别就好比电脑关机中的软关机(通过“开始”菜单选择“关机”)与硬关机 (直接切断电源),虽然都能关机,但是程序所作的处理是不一样的。 2、kill – 9 表示强制杀死该进程;而 kill 则有局限性,例如后台进程,守护进程等; 3、执行kill命令,系统会发送一个SIGTERM信号给对应的程序。SIGTERM多半是会被阻塞的。kill -9命令,系统给对应程序发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能 顺利杀掉进程。
at命令用来安排一个程序在未来的做一次一次性执行。所有提交的任务都被放在 /var/spool/at 目录下并且到了执行时间的时候通过atd守护进程来执行。
patch,是打补丁的命令 patch -p1 (“p”后面的数字1,表示去掉前第一个路径) 参数0,1,2,是指略去的patch文件中的前几级目录 patch -p数字 指定删除补丁文件中的多少层路径前缀 patch -RE # 还原旧版本,反向修复 -R(reverse)反向修复,-E修复后如果文件为空,则删除该文件
lspci命令用来显示你的系统上PCI总线和附加设备的信息。指定-v,-vv或-vvv来获取越来越详细的输出,加上-r参数的话,命令的输出则会更具有易读性。
\u:显示当前用户账号 \h:显示当前主机名 \W:只显示当前路径最后一个目录 \w:显示当前绝对路径(当前用户目录会以~代替)$PWD:显示当前全路径 :显示命令行′’或者’#’符号 #:下达的第几个命令 \d:代表日期,格式为week day month date,例如:”MonAug1″ \t:显示时间为24小时格式,如:HH:MM:SS \T:显示时间为12小时格式 \A:显示时间为24小时格式:HH:MM \v:BASH的版本信息 如export PS1=’[\u@\h\w#]$‘
whereis [-bfmsu][-B <目录>…][-M <目录>…][-S <目录>…][文件…] 补充说明:whereis 指令会在特定目录中查找符合条件的文件。这些文件的烈性应属于原始代码,二进制文件,或是帮助文件。 -b 只查找二进制文件 -B<目录> 只在设置的目录下查找二进制文件。-f 不显示文件名前的路径名称。 -m 只查找说明文件。 -M<目录> 只在设置的目录下查找说明文件。-s 只查找原始代码文件。 -S<目录> 只在设置的目录下查找原始代码文件。-u 查找不包含指定类型的文件。 which 指令会在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。 -n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。 -p 与-n 参数相同,但此处的包括了文件的路径。-w 指定输出时栏位的宽度。 -V 显示版本信息
可以使用bind命令,bind可以很方便地在shell中实现宏或按键的绑定。 在进行按键绑定的时候,我们需要先获取到绑定按键对应的字符序列。 比如获取F12的字符序列获取方法如下:先按下Ctrl+V,然后按下F12 .我们就可以得到F12的字符序列 ^[[24~。接着使用bind进行绑定。 [root@localhost ~]# bind ‘”\e[24~”:”date”‘ 注意:相同的按键在不同的终端或终端模拟器下可能会产生不同的字符序列。 【附】也可以使用showkey -a命令查看按键对应的字符序列。
使用命令compgen -c,可以打印出所有支持的命令列表。 使用Linux 命令dirs可以将当前的目录栈打印出来 【附】:目录栈通过pushd popd 来操作。
使用linux命令 ’disown -r ’可以将所有正在运行的进程移除。
split分割 语法:split [-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名] 模式一:指定分割后文件行数 Split:按指定的行数截断文件格式:split[-n]fifile[name]参数说明:-n:指定截断的每 一文件的长度,不指定缺省为 1000行 fifile:要截断的文件 name:截断后产生的文件的文件名的开头字母,不指定,缺省为 x,即截断后产生的文件的文件名为 xaa,xab….直到 xzz 模式二:指定分割后文件大小 命令:split-b10m server.logserver_part_ 其中 server.log是要分割的文件,server_part_是分割文件的前缀。 对二进制文件我们同样也可以按文件大小来分隔 1) 解压要分割的文件 2) 计算文件的总数 3) 通过指定行数将文件切割成两两个文件 split -l 4) 使用fifile * 查看切割后的两个文件的属性是否一致另一种方法,通过大小分割split -C,-C(大C)是按大小分,并尽量保持按行,-c(小c)就可能 分将一行分到不同文件中。测试-C(大C)没有问题,相对-l(按行)来说,统计一个大文件的字节 要比统计行数要快得多。用-C(大C)还是-l,请按实际情况而定。 dd分割 语法:dd (语法) dd bs(字节数) count(区块数) if(输入文件路径) of(输出文件路径) 1)解压要分割的文件 2)按大小分第一个文件 dd bs=xx count=xx if=xx of=xx 3)按大小分第二个文件 4)使用fifile * 查看切割后的两个文件的属性是否一致 bs:将 ibs(输入)与 obs(输出)设成指定的字节数; cbs:转换时,每次只转换指定的字节数; conv:指定文件转换的方式 count:仅读取指定的区块数 ibs:每次读取的字节数 obs:每次输出的字节数 of:输出到文件 seek:一开始输出时,跳过指定的区块数 skip:一开始读取时,跳过指定的区块数 head+tail切割 1)解压要分割的文件,也可以在下面使用zcat命令而不解压 2)统计文件的行数 3)将文件的前x行重定向输出到一个文件中 4)文件的后y行输入到另一个文件中 5)使用gzip命令将两个文件进行压缩 awk分割 1)解压要分割的文件 2)使用awk进行if判断精确查找出文件的x行重定向输出到一个文件
Tcpdump Wireshark进行抓包分析
export HISTFILESIZE=0 export HISTSIZE=0 unset HISTFILE 恢复关闭的历史记录命令 查看bash的man手册 shopt -u -o history或set +o history
tcpdump ‘host 192.168.1.1 and port 80’ > tcpdump.log
四表: filter表:负责过滤功能 (默认) nat表:网络地址转换功能 mangle表:拆解报文 raw表:关闭nat表上启用的连接追踪机制 五链: INPUT链(入站规则) OUTPUT链(出站规则) FORWARD链(转发规则) PREROUTING链(路由前规则) POSTROUTING链(路由后规则):将内网转换成公网 \# iptables -I INPUT -p icmp -j REJECT #拒绝ping
[root@localhost ~]# iptables -t nat -A PRETOUTING -d 10.0.0.254 -p tcp –dport 80 -j DNAT – to-destination 10.0.0.254:8080
iptables -t fifilter –sport 80 -j REJECT iptables -t fifilter –dport 80 -j REJECT
iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080
实现这个功能需要安装iptables的 time 模块。默认发行版linux的iptables是没有安装time模块 的,所以首先你必须重新编译安装iptables加上该模块,才能使用。 命令例子:在周一到周五的8点至18点间,禁止112.112.112.0/24段访问 iptables -I INPUT -s 112.112.112.0/24 -m time –timestart 8:00 –timestop 18:00 –days Mon,Tue,Wed,Thu,Fri -j DROP
使用snat进行地址伪装 iptables -t nat -A POSTROUTING -o 网卡名 -j SNAT –to-source ip
tcpdump -nn tcp port 80
1)将硬盘或分区转化为物理卷 2)将一个或多个物理卷组成卷组 3)从卷组中划分逻辑卷 创建基本分区 /dev/vdb1 /dev/vdb2等 创建卷组 vgcreate myvg /dev/vdb1 /dev/vdb2 划分逻辑卷: lvcreate -L 16G -n mylv myvg
1)准备空闲存储 2)安装targetcli 3)运行targetcli进行配置 – 创建与命名后端存储:backstores/block create name=back dev=/devvdb1 – 创建target磁盘组: iscsi/create iqn.2020-01.com.example:server0 -lun逻辑单元:iscsi/iqn.2020-01.com.example:server0/tpg1 luns create /backstores/block/back – 配置访问控制,设置访问服务时,客户端声称的名字:iscsi/iqn.2020- 01.com.example:server0/tpg1/acls create iqn.2020-01.com.example:client0 -客户端访问本机的ip地址以及端口:iscsi/iqn.2020-01.com.example:server0/tpg1/ portals create 172.25.0.10 4)重起服务target设置开机自启 在客户端访问iscsi磁盘: 1)安装所需软件包 iscsi-initiator-utils 2)修改配置文件/etc/iscsi/initiorname.iscsi设置访问服务时,客户端声称的名字 iqn.2020-01.com.example:client0 3)重起服务iscsid更新iqn标识 4)发现服务端共享存储 iscsiadm –mode discoverydb –type sendtargets –portal 172.25.0.10 –discover5)本机识别加载服务端共享,重启iscsi服务设置开机自启
软连接的源文件或目录如果被删除,则链接文件将失效,可以跨分区/文件系统创建软连接 硬链接的源文件或目录如果被删除,则硬链接依旧可以正常使用,硬链接不可以跨分区/文件系统
安装依赖包 使用tar解包 使用./confifigure完成系统检测与配置 make编译源代码 make install 安装软件包
DHCP服务器:为客户机提供ip地址等参数,并告知下一个服务器地址、启动文件名 TFTP服务器:为客户机提供启动文件、启动菜单配置、用来安装系统的内核以及初始驱动程序 软件仓库:通过HTTP或FTP方式为客户机提供安装树资源(RHEL7光盘目录结构) 实现kickstart无人值守安装: 1)提前准备一份安装过程中所涉及问题的答案清单(即应答文件)一般利用system-confifig-kickstart 图形生成 2)将此文件部署到客户机下载的位置 3)通过菜单文件进行指定客户端下载
Cobbler具备多系统的镜像仓库以及应答文件仓库,非常适合多系统的安装 Cobbler会默认生成菜单文件以及应答文件,非常自动化 Cobbler自动搭建网络yum仓库
作用: (1)捕获网络协议包 (2)分析网络协议包 命令格式: tcpdump [选项] [过滤条件] 选项: -i 指定监控的网络接口 -A 转换为ACSII码,以方便阅读 -w 将数据包信息保存到指定的文件 -r 从指定文件读取数据包信息 -c 定义抓包个数 过滤条件: 类型:host、net、port、portrange 方向:src(源地址)、dst(目标地址) 协议:tcp、udp、ip、wlan、arp… 多个组合条件:and、or、not
DNS分离解析:针对同一个域名,为不同的客户机提供不同的解析结果 关键配置:通过view语句为客户端分类,在每个视图内使用match-client来匹配客户机的来源地址,每个视图内都定义目标DNS区域但不调用不同的地址库文件
临时调整的规则: ulimit -Hn 数量 #硬限制 ulimit -Sn 数量 #软限制 永久规则: vim /etc/security/limit.conf 用户或组 soft nofifile 数量 用户或组 hard nofifile 数量
SVN是一个版本控制系统,主要功能为版本控制,支持日志、数据恢复功能 可以实现的功能: svn co 下载代码 svn ci 提交代码 svn log 查看日志 svn update 更新代码 svn diffff 查看代码差异 svn rm 删除 svn merge 合并 工作中主要用于: 代码管理(通过版本库上线代码到服务器) 文档管理(技术指导手册的版本控制)
netstat或ss命令查看系统中启动的端口信息 该命令的常用选项: -a 显示所有端口信息 -n 以数字形式显示端口号 -t 显示tcp连接的端口 -u 显示udp连接的端口 -l 显示服务器正在监听的端口信息,如httpd启动后,会一直监听80端口 -p 显示监听端口的服务名称是什么(也就是程序名称)
1)安装rpmbuild工具 2)将源码包放到SOURCES目录下 3)在SPECS目录下创建一个spec配置文件,病按照格式要求编辑文件内容 4)使用rpmbuild -ba spec 文件,即可转换成一个RPM包 SPECS文件可以定义: 软件的描述信息,如何编译安装源码软件,对什么文件进行打包封装为RPM,安装前和安装后脚本等
读取sysfs文件系统下的设备信息,udev可以动态地将设备添加到/dev/目录 基于事先定义的规则,可以定义设备的名称、修改设备的权限、触发命令等操作
在NFS配置文件/etc/exports中添加共享属性no_root_squash
NAS网络附加存储,如NFS、Samba、FTP SAN存储区域网络,如ISCSI、HP、EMC 分布式存储,如Ceph
client –> 本机缓存 –> hosts文件 –> 本地DNS服务器 –> 根域服务器 –> cn域服务器 — >baidu.com服务器 返回结果就是逆过程
用户要访问http://www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.http://baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站http://www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端
手工可以执行,表明脚本本身不存在逻辑上的问题,可能原因有以下几点 1)定时任务书写有错误导致,执行的脚本没有写绝对路径,找不到脚本 2)环境变量问题导致。
1)监控脚本(监控系统、监控服务、监控硬件信息、监控性能、安全监控等) 2)系统初始化脚本(创建目录、创建账户、安装软件包、设置权限、修改内核参数等) 3)一键部署脚本(源码安装脚本) 4)备份脚本(自动备份数据库、备份网站数据、备份日志、备份配置文件) 5)日志分析脚本(分析日志数据、汇总统计相关信息,如PV或UV等、日志切割) 6)mysql全量备份、增量备份脚本设置crontab定时任务,使用innobackup进行周日凌晨3点全量备份并删除上周的全量备份和周一至周六凌晨3点增量备份 7)配置ip地址、子网、网关,扩展硬盘空间 8)健康检测脚本:检测nginx服务是否运行来判断是否该关闭keepalived服务9)预防脑裂脚本:指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数 据损坏。对于无状态服务的HA,无所谓脑裂不脑裂;但对有状态服务(比如MySQL)的HA,必须要严格防止 脑裂 解决办法:在keepalived配置文件中增加check配置,服务器周期性ping一下网关,累计连续失败的次数,当连续失败达到一定次数关闭keepalived服务;如果发现又能够ping通网关,再重启 keepalived服务
块设备的方式: 1)服务器需要MON和OSD组件实现块设备共享 2)客户端可以使用Linux系统直接访问或者通过KVM访问共享存储 3)Linux直接访问时,客户端需要安装ceph-common,并拷贝配置文件和密钥文件 4)通过KVM访问时,需要修改KVM虚拟机的XML文件并定义Secret账户 文件系统方式: 1)服务器需要额外部署一台MDS主机(存储元数据metedata) 2)客户端直接通过mount或者/etc/fstab实现挂载访问 3)客户端挂载时需要提供服务器IP地址、端口、账户和密码 对象存储的方式: 1)服务器需要额外部署一台RGW主机(提供web服务的接口) 2)客户端无法直接访问对象存储,必须使用第三方软件3)或者开发人员自己编写的程序调用Ceph的API 4)API(是Ceph提前准备好的函数,开发人员直接调用这些函数就可以对Ceph做读写操作)
即内容分发网络 其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可就近取得所需的内容,提高用户访问网站的速度
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式 AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B,如果用户对B没有什 么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度
以nginx为例 步骤: 1)查看原版本的现有配置 nginx -V 2)下载解压新版本 3)将原版本的重要文件做备份(为了安全)cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old 4)编译新版本,要求要和旧版本的所有配置一模一样,如果有新的模块也要添加,不执行make install(由于原先已有nginx,所以不能执行make install,否则会覆盖掉以前的配置文件及内容) 5)检查是否成功 nginx -t 6)平滑升级切换 注意:要根据自己实际的编译的配置内容,查找自己的pid文件的位置。kill -USR2 cat nginx.pid 将旧版本Nginx的主进程将重命名为nginx.pid.oldbin,并执行新 版本的Nginx可执行程序,启动新的主进程和新的工作进程,再次生成新的nginx.pid文件 kill -WINCH cat nginx.pid.oldbin 平缓停止worker process(此步骤可省略) kill -QUIT cat nginx.pid.oldbin 平缓停止旧的Nginx服务进程 7)查看当前nginx的版本信息 nginx -V nginx支持的信号,可以用来控制nginx的活动 TERM,INT——快速关闭 QUIT 平滑关闭 HUP 平滑重启,重新加载配置文件 USR1 重新打开日志文件 USR2 平滑升级可执行程序 WINCH 平滑关闭工作进程
在linux文件系统中,是以块为单位存储信息的,为了找到某一个文件在存储空间中存放的位置,用i节点对一个文件进行索引。I节点包含了描述一个文件所必须的全部信息。所以i节点是文件系统管理的一个数据结构。
RAID,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据 还有一个大功能,多块盘放在一起可以有冗余(备份) RAID整合方式有很多,常用的:0 1 5 10 RAID 0,可以是一块盘和N个盘组合 其优点读写快,是RAID中最好的 缺点:没有冗余,一块坏了数据就全没有了 RAID 1,只能2块盘,盘的大小可以不一样,以小的为准 10G+10G只有10G,另一个做备份。它有100%的冗余,缺点:浪费资源,成本高 RAID 5,3块盘,容量计算10*(n-1) ,损失一块盘 特点,读写性能一般,读还好一点,写不好 冗余从好到坏:RAID1 RAID10 RAID 5 RAID0 性能从好到坏:RAID0 RAID10 RAID5 RAID1 成本从低到高:RAID0 RAID5 RAID1 RAID10单台服务器:很重要盘不多,系统盘,RAID1 数据库服务器:主库:RAID10 从库 RAID5RAID0(为了维护成本,RAID10) WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘) 有多台,监控、应用服务器,RAID0 RAID5 我们会根据数据的存储和访问的需求,去匹配对应的RAID级别
1、RAID10的情况 这种情况中,我们假设当DISK0损坏时,在剩下的3块盘中,只有当DISK1一个盘发生故障时,才会导致整个RAID失效,我们可简单计算故障率为1/3。 2、RAID01的情况 这种情况下,我们仍然假设DISK0损坏,这时左边的条带将无法读取。在剩下的3块盘中,只要 DISK2,DISK3两个盘中任何一个损坏,都会导致整个RAID失效,我们可简单计算故障率为2/3
基础选择器 1.通用选择器 2.元素选择器 3.类选择器 4.伪类选择器 5.id选择器 6.群组选择器
RabbitMQ也就是消息队列中间件,消息中间件是在消息的传息过程中保存消息的容器消息中间件再将消息从它的源中到它的目标中标时充当中间人的作用队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用消息队列不会保留消息,直到可以成功地传递为止,当然,消息队列保存消息也是有期限地
user:user模块实现用户账号管理 yum:yum模块管理程序包 copy:copy模块实现文件复制 cron:cron模块可以让每一个被管理节点能够自动生成一个定期任务计划 command:这是默认的模块,表示在被管理主机上运行一个命令。对于command模块,-a不再 是指定参数,而是命令本身。 shell:和command模块类似,但是可以使用变量 service:service模块是管理服务的
-m:要执行的模块,默认为command -a:模块的参数 -u:ssh连接的用户名,默认用root,在ansible.cfg文件中可以配置 -k:提示输入ssh登录密码。当使用密码验证的时候用 -s:sudo运行 -U:sudo到那个用户,默认为root -K:提示输入sudo密码,当不是NOPASSWD模式时使用 -C:只是测试一下会改变什么内容,不会真正去执行 -c:连接类型(default=smart) -f:fork多少个进程并发处理,默认为5个 -i:指定hosts文件路径,默认default=/etc/ansible/hosts -I 指定pattern,对<host_pattern>已匹配的主机中再过滤一次 –list-hosts:只打印有哪些主机会执行这个playbook文件,不是实际执行 -M:要执行的模块路径,默认为/usr/share/ansible -o:压缩输出,摘要输出 –private-key 私钥路径 -T: ssh连接超时时间,默认10秒 -t:日志输出到该目录,日志文件名以主机名命名 -v:verbost
第一种武器 ansible命令,用于执行临时性工作。 第二种武器 ansible-doc是ansible模块的文档说明,针对每个模块都有详细的说明 第三种武器 ansible-console是ansible为用户提供的交互是工具 第四种武器 ansible-galaxy从github上下载管Roles的一款工具,与Python的pip相似 第五种武器 ansible-playbook是日常应用中使用频率最高的命令,ansible任务集 第六种武器 ansible-vault主要用于配置文件加密,可用它加密、解密这个文件 第七种武器 ansible-pull/push默认使用push模式工作、pull和push工作模式机制刚好相反
概念:ansible是一个开源的自动化运维工具,基于python开发,是方便快捷,功能强大的远程配置管理工具。 功能:批量系统配置,批量程序部署,批量运行命令,批量修改服务配置,锁定加密文件等 架构:由控制主机和被管理主机组成,基于SSH架构。 模块:有2800+的模块,还可以自定义模块,模块本身就是脚本,多查看帮助文档。
配置管理:比如部署一个集群任务的时候,可以用ansible批量配置提供主要服务的服务器,安装软件包,修改配置文件,启动服务等 流程控制:比如运用ansible的时候,添加when,while,handler等语句,对流程进行控制。
CPU密集程序难以多核优势,IO期间会释放GIL,对IO密 集程序影响不大
rsync是远程同步工具、inotify 是一种强大的异步文件系统系统监控机制。 通过inotifywait中的-m 参数可以实现“始终保持事件监听状态”。rsync中的-delete参数是指“ 删除那些 DST 中 SRC没有的文件”
(1) rsync -av /dira/ ip:/dirb/ 是通过ssh方式同步的 (2) rsync -av /dira/ ip::dirb 是通过rsync服务的方式同步的
curl是将下载文件输出到stdout,将进度信息输出到stderr,不显示进度信息使用–silent选项。
我们一般通过 hexdump命令 来查看二进制文件的内容。hexdump-C XXX(文件名)-C 是参数 不同的参数有不同的意义 -C 是比较规范的 十六进制和 ASCII码显示 -c是单字节字符显示 -b单字节八进制显示 -o是双字节八进制显示 -d是双字节十进制显示 -x是双字节十六进制显示
SNMP是简单的网络管理协议,它不是一个软件,而是用于网络管理的一套规则。利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。 但话又说回来,为什么要使用SNMP协议? 因为网络设备可能来自不同的厂商,如果每个厂商提供一套独立的管理接口,将使网络管理变得越来越复杂,若想对网络中来自不同厂商的设备监控,用基于SNMP开发的软件进行管理最方便的,因为大部分的设备都支持SNMP协议。那么SNMP有哪些技术有点? (1)基于TCP/IP互联网的标准协议,传输层协议一般用UDP (2)自动化网络管理。网络管理员可以利用SNMP平台在网络上的节点检索信息、修改信息、发现故障、完成故障诊断、进行容量规划和生成报告 (3)屏蔽不同设备的物理差异,实现对不同厂商产品的自动化管理。SNMP只提供最基本得功能集,使得管理任务与被管理设备的物理特征和实际网络类型相对独立,从而实现对不同厂商设备的管理 (4)简单的请求-应答方式和主动通告方式相结合,并有超时和重传机制 (5)报文种类少,报文格式简单,方便解析,易于实现 (6)SNMPv3版本提供了认证和加密安全机制,以及基于用户和视图的访问控制功能,增强了安全性
jenkins系统的工作流程大概分为以下几步: 1. 开发者将新版本push到git server (Gitlab)。 2. Gitlab随后触发jenkins master结点进行一次build。(通过web hook或者定时检测) 3. jenkins master结点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结 点根据一个事先设置好的脚本进行build。这个脚本可以做的事情很多,比如编译,测试,生 成测试报告等等。这些原本需要手动完成的任务都可以交给jenkins来做。 4. 我们在build中要进行编译,这里使用了分布式编译器distcc来加快编译速度
Git:是目前最先进的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。(马云gitee) Git的特点:分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。 Git工作原理:git的工作总共分四层,其中三层是在本地也就是说git仓库,包括了工作目录、暂存区和本地仓库,工作目录就是我们执行命令git init时所在的地方,也就是我们执行一切文件操作的地方;暂存区和本地仓库都是在.git目录下,因为它们只是用来存数据的。远程仓库在中心服务器,也就是我们做好工作之后推送到远程仓库,或者从远程仓库更新下来最新代码到本地。 Git常用功能:创建git仓库,克隆数据到本地仓库,提交数据到暂存区,git仓库,提交到远程服务器回退,提交到暂存区的或者远程服务器上的数据,可以通过命令回退远程跟踪(在本地添加远程仓库)和分支操作(将本地已提交分支推送到远程仓库的分支)
概念:Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台.允许持续集成和持续交付项目,可以处理任何类型的构建或持续集成。Java语言编写的程序. CI:持续集成 CD:持续部署 用途: 1.持续、自动地构建/测试软件项目。 2.监控一些定时执行的任务。 特性: 1.易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。 2.易于配置-所有配置都是通过其提供的web界面实现。 3. 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。 4.生成JUnit/TestNG测试报告。 5.分布式构建支持Jenkins能够让多台计算机一起构建/测试。 6.文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。 7.插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。 注意:jenkins我们运维是安装部署出来,给开发人员在web页面上用的.
环境准备: 1.dk环境,Jenkins是java语言开发的,因需要jdk环境。 2.git客户端,代码是放在git服务器上,我们需要拉取代码。 3.maven客户端,因一般java程序是由maven工程,需要maven打包。 Gitlab部署,git客户端安装 Jenkins安装:下载最新版本的war安装包 安装插件
概念、原理:(自带高可用) 概念:Ceph是一种性能优秀的、高可靠性和可扩展性的分布式文件系统。 功能:提供块存储,对象存储,文件系统存储 ceph集群组件/架构:OSD:存储设备,用于集群中所有数据与对象的存储。 Monitor:集群监控组件,监控整个集群的状态。 MDS:存放文件系统的元数据。 client:客户端,数据用户。 工作原理:1)客户端 创建cluster handler集群处理程序。 2)客户端 读取配置文件。 3)客户端 连接上monitor,获取集群map信息。 4)客户端 读写io 根据crshmap 算法请求对应的主osd数据节点。 5)主osd数据节点同时写入另外两个副本节点数据。 6)等待主节点以及另外两个副本节点写完数据状态。 7)主节点及副本节点写入状态都成功后,返回给client,io写入完成。 Ceph的优点:高性能-数据分布均衡,并行度高,支持大规模存储节点,支持TB到PB级的数据 高可用性–支持故障域分隔,数据强一致性,多种故障场景自动进行修复自愈 高可扩展性–去中心化,扩展灵活 特性丰富:支持块存储,对象存储,文件存储。
环境准备:如防火墙,SELinux,ssh无密连接,时间同步,准备ceph相关iso镜像 安装相关ceph软件 启动mon服务 启动osd共享硬盘 初始化硬盘 应用:块存储,文件系统存储,对象存储 块存储:指在一个RAID(独立磁盘冗余阵列)集中,一个控制器加入一组磁盘驱动器,然后提供固定大小的RAID块作为LUN(逻辑单元号)的卷 对象存储:对象存储中所有数据都被认为是一个对象,所以,任何数据都可以存入对象存储服务器,如图片丶视频丶音频等. 文件系统存储:inode元数据和block真实的数据
RabbitMQ 也就是消息队列中间件,消息中间件是在消息的传息过程中保存消息的容器消息中间件 再将消息从它的源中到它的目标中标时充当中间人的作用队列的主要目的是提供路由并保证消息 的传递;如果发送消息时接收者不可用消息队列不会保留消息,直到可以成功地传递为止,当 然,消息队列保存消息也是有期限地
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137727.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有