关于linux:linux之我常用的20条命令之一

cd 切换目录> cd ../ #切换到父级目录> cd /tmp # 切换到/tmp目录> cd ~ # 切换到以后用户的家目录ls命令查看文件与目录的命令,list的缩写> ls -l #列出长数据串,蕴含文件的属性与权限数据等> ls -a #列出暗藏文件> ls -d # 列出目录自身,而不是列出目录的文件数据> ls -lh # 将文件容量以较易读的形式(GB,kB等)列出来> ls -lR #连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示进去grep命令文本查找>grep -a #将binary文件以text文件的形式查找数据>grep -c #计算找到查找字符串的次数>grep -i #疏忽大小写的区别,即把大小写视为雷同>grep -v #反向抉择,即显示出没有‘查找字符串’内容的那一行>grep -rl#递归查问目录下的匹配文件find命令find是一个基于查找的性能十分弱小的命令> find / -name *.txt #查找零碎中所有的.txt文件> find / -size +300M. #查找零碎中文件大小超过300M的文件> find . -perm 0755 # 查找当前目录中文件权限的0755的文件> find / -user rumenz #列出文件所有者为rumenz的文件> find / -group rumenz #列出文件所属用户组为name的文件> find / -size +300M -exec rm -rf {} \; #查找零碎中大于300M的文件,并删除cp命令文件复制>cp -a #将文件的个性一起复制>cp -p #连同文件的属性一起复制,而非应用默认形式,与-a类似,罕用于备份>cp -i #若指标文件曾经存在时,在笼罩时会先询问操作的进行>cp -r #递归继续复制,用于目录的复制行为>cp -u #指标文件与源文件有差别时才会复制>cp -rf #文件强制笼罩复制mv命令用于挪动文件>mv -f #force强制的意思,如果指标文件曾经存在,不会询问而间接笼罩>mv -i #若指标文件曾经存在,就会询问是否笼罩>mv -u #若指标文件曾经存在,且比指标文件新,才会更新>mv -rf #强制递归复制文件rm命令删除文件或目录>rm -f #就是force的意思,疏忽不存在的文件,不会呈现正告音讯>rm -i #互动模式,在删除前会询问用户是否操作>rm -r #递归删除,最罕用于目录删除,它是一个十分危险的参数>rm -rf / #这是一个危险的命令,会造成零碎所有文件失落>rm -rf rumenz/* #强制删除rumenz目录下的非暗藏文件>rm -rf rumenz/* #强制删除rumenz目录下的所有文件,蕴含暗藏文件ps命令查看过程>ps aux # 查看零碎所有的过程数据>ps ax # 查看不与terminal无关的所有过程>ps -lA # 查看零碎所有的过程数据>ps axjf # 查看连同一部分过程树状态 kill命令该命令用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号kill -signal PID ...

November 2, 2021 · 1 min · jiezi

关于linux:TCP性能和发送接收窗口Buffer的关系

阐明:转载https://plantegg.github.io/20...外围linux 2.4 会主动调整tcp recv send buffer 大小, 无需手动设置;https://man7.org/linux/man-pa...前言本文心愿解析分明,当咱们在代码中写下 socket.setSendBufferSize 和 sysctl 看到的rmem/wmem零碎参数以及最终咱们在TCP经常谈到的接管发送窗口的关系,以及他们怎么影响TCP传输的性能,同时如何通过图形来展现哪里是传输瓶颈。 拥塞窗口相干文章比拟多,他们跟带宽严密相干,所以大家比拟好判断,反而是接管、发送窗口一旦呈现瓶颈,就没这么好判断了。 先明确一下:文章题目中所说的Buffer指的是sysctl中的 rmem或者wmem,如果是代码中指定的话对应着SO_SNDBUF或者SO_RCVBUF,从TCP的概念来看对应着发送窗口或者接管窗口 最初补充各种场景下的传输案例,一站式将影响传输速度的各种起因都拿下,值得珍藏。 本文次要剖析rt、buffer如何影响TCP的传输性能,更多其余因素影响TCP性能的案例见:TCP传输速度案例剖析 TCP性能和发送接管Buffer的关系先从碰到的一个理论问题看起: 利用通过专线跨网络拜访云上的服务,专线100M,时延20ms,一个SQL查问了22M数据,后果花了大略25秒,这太慢了,不失常。 如果通过云上client拜访云上服务那么1-2秒就返回了(不跨网络服务是失常的,阐明服务自身没有问题)。 如果通过http或者scp从云下向云上传输这22M的数据大略两秒钟也传送结束了(阐明网络带宽不是瓶颈), 所以这里问题的起因基本上是咱们的服务在这种网络条件下有性能问题,须要找出为什么。 抓包剖析 tcpdump+wireshark抓包剖析这22M的数据传输,如下图(wireshark 时序图),横轴是工夫,纵轴是sequence number: image.png 粗一看没啥问题,因为工夫太长覆盖了问题。把这个图形放大,只看两头50ms内的传输状况(横轴是工夫,纵轴是sequence number,一个点代表一个包) image.png 能够看到传输过程总有一个20ms的期待平台,这20ms没有发送任何包,换个角度,看看窗口尺寸图形: image.png 从bytes in flight也大抵能算进去总的传输速度 16K*1000/20=800Kb/秒 咱们的利用代码中会默认设置 socketSendBuffer 为16K: socket.setSendBufferSize(16*1024) //16K send buffer 原理解析如果tcp发送buffer也就是SO_SNDBUF只有16K的话,这些包很快都收回去了,然而这16K的buffer不能立刻释放出来填新的内容进去,因为tcp要保障牢靠,万一两头丢包了呢。只有等到这16K中的某些包ack了,才会填充一些新包进来而后持续收回去。因为这里rt根本是20ms,也就是16K发送结束后,等了20ms才收到一些ack,这20ms利用、内核什么都不能做,所以就是如后面第二个图中的大略20ms的期待平台。这块请参考这篇文章 比方下图,wmem大小是8,收回1-8后,buffer不能开释,等到收到ack1-4后,开释1-4,buffer也就是开释了一半,这一半能够填充新的发送数据进来了。 下面的问题在于ack花了很久,导致buffer始终不能开释。 image.png sendbuffer相当于发送仓库的大小,仓库的货物都发走后,不能立刻腾出来发新的货物,而是要等对方确认收到了(ack)能力腾出来发新的货物。 传输速度取决于发送仓库(sendbuffer)、接管仓库(recvbuffer)、路宽(带宽)的大小,如果发送仓库(sendbuffer)足够大了之后接下来的瓶颈就会是高速公路了(带宽、拥塞窗口)。而实际上这个案例中带宽够、接管仓库也够,然而发送仓库太小了,导致发送过程断断续续,所以十分慢。 如果是UDP,就没有牢靠的概念,有数据通通收回去,基本不关怀对方是否收到,也就不须要ack和这个发送buffer了。 几个发送buffer相干的内核参数$sudo sysctl -a | egrep "rmem|wmem|tcp_mem|adv_win|moderate"net.core.rmem_default = 212992net.core.rmem_max = 212992net.core.wmem_default = 212992 //core是给所有的协定应用的,net.core.wmem_max = 212992net.ipv4.tcp_adv_win_scale = 1 //net.ipv4.tcp_moderate_rcvbuf = 1net.ipv4.tcp_rmem = 4096 87380 6291456 //最小值 默认值 最大值】net.ipv4.tcp_wmem = 4096 16384 4194304 //tcp这种就本人的专用选项就不必 core 外面的值了net.ipv4.udp_rmem_min = 4096net.ipv4.udp_wmem_min = 4096vm.lowmem_reserve_ratio = 256 256 32net.ipv4.tcp_mem = 88560 118080 177120vm.lowmem_reserve_ratio = 256 256 32net.ipv4.tcp_wmem 默认就是16K,而且内核是可能动静调整的,只不过咱们代码中这块的参数是很多年前从Cobra中继承过去的,初始指定了sendbuffer的大小。代码中设置了这个参数后就敞开了内核的动静调整性能,这就是为什么http或者scp都很快,因为他们的send buffer是动静调整的。 ...

November 2, 2021 · 5 min · jiezi

关于linux:linux常用命令

tail -f catalina.out #在 logs 上面查看日志( -f 实时查看)rm -rf /var/log/httpd/access #删除文件(-r删除文件 并删除文件夹下的内容 -f 疏忽不存在)mv user.sql /etc/mysql #将文件挪动到mysql目录下 (也能够重命名)vi /etc/environment #批改 文件夹 (exit 退出,shit+: 输出wq 保留退出)du -h * #查看文件下的所有文件大小du -h /data #查看文件/data的大小 shutdown -t now #关机 reboot #重启yum install dockerapt-get install docker #装置wget -P /var http://sun.com/ #把 网址的内容下载到var目录下#IP 端口查看 网络netstat -nltp #查看运行的端口netstat -anp | grep #查看端口 grep 筛选80端口curl localhost #运行 网址 查看是否通  #查看目录下 文件数量 ls |wc -wfor i in `ls /pic/tmp/fannao_1w` ;do mv -f $i /pic/;done #批量mv (针对文件比拟大的目录)其余后续补充

November 2, 2021 · 1 min · jiezi

关于linux:Linux一学就会第十四章-RAID磁盘阵列的原理与搭建

November 2, 2021 · 0 min · jiezi

关于linux:linux之Ansible快速入门

Ansible是一款简略的运维自动化工具,只须要应用ssh协定连贯就能够来进行系统管理,自动化执行命令,部署等工作。Ansible的长处不须要装置客户端,不须要运行服务应用python开发的一套主动执行工作的模块playbook采纳yaml配置,构造清晰Ansible的组成构造Ansible:外围命令工具,一次性或临时性执行的操作都由该工具执行Ansible playbook:工作剧本(又称工作集),编排定义Ansible工作集的配置文件,由Ansible执行,格局是yamlInventory:Ansible治理的主机,在/etc/ansible/hosts中配置Modules:Ansible执行命令的功能模块,Ansible2.3版本为止,共有1039个模块。还能够自定义模块。Plugins:插件,模块性能的补充,常有连贯类型插件,循环插件,变量插件,过滤插件,插件性能用的较少。API:提供给第三方程序调用的应用程序编程接口。Ansible罕用的功能模块命令模块 command shell文件模块 copy fetch file装置模块 yum服务模块 service挂载模块 mount定时工作 cron用户模块 group user压缩解压 unarchiveAnsible装置> yum install ansible -y配置主机> vim /etc/ansible/hosts[web]192.168.2.10 ansible_ssh_port=22 ansible_ssh_user=rumenz ansible_ssh_pass="123456"192.168.2.11 ansible_ssh_port=22 ansible_ssh_user=rumenz ansible_ssh_pass="123456"咱们定义了一个web组(能够加很多主机),Ansible默认应用的是ssh协定,指定好端口,账号,明码就能够了。除了应用账号,明码的模式配置,咱们也能够用秘钥,前面拜访。测试> ansible web -m pingweb就是下面咱们定义的分组,-m我前面指定模块,这里咱们应用ping模块,用于查看主机是否网络可达。应用Ansible执行pwd命令> ansible web -m shell -a "pwd"这里咱们应用的是shell 模块,-a前面跟上须要执行的shell命令应用Ansible查看web分组下nginx服务是否在运行> ansible web -m shell -a "ps -ef | grep nginx"应用Ansible简略批量装置redis> ansible web -m shell -a "yum install redis -y"留神简单的软件装置,须要编写Ansible playbook配置文件,更加灵便。原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

November 1, 2021 · 1 min · jiezi

关于linux:Linux一学就会第十三章-Linux文件系统结构

November 1, 2021 · 0 min · jiezi

关于linux:Hive-勒索软件新变体用-Go-语言编写现在专门针对-Linux-服务器和-FreeBSD

据 BleepingComputer 报道,斯洛伐克互联网安全公司 ESET 发现,Hive 勒索软件团伙现已专门针对 Linux 和FreeBSD 这些平台,开发出了新恶意软件变体进行加密。不过,Hive 勒索软件团伙的新加密机仍在开发中,不足性能。 ESET的钻研人员在剖析过程中发现,Hive 勒索软件的 Linux 版变体被证实存在显著 Bug ,当恶意软件以显式门路执行时,加密就会齐全失败。 此外,该 Linux 版变体还主动反对单个命令行参数(-no-wipe)。相比之下,Hive 的 Windows 版勒索软件最多可提供5种执行选项,如终止过程,跳过磁盘清理、无趣文件和旧文件。 如果没有 root 权限的状况下执行,勒索软件的 Linux 版本变体也是无奈触发加密的,因为它试图在受损设施的根文件系统上删除勒索阐明。 ESET钻研实验室示意:“就像 Windows 版本一样,这些Linux 版本的变体也是用 Go 语言编写的,然而字符串、包名和函数名都被混同了,很可能是通过混同工具 gobfuscate 来实现的。” 勒索软件的攻打指标开始转向 Linux 服务器 据理解,勒索软件组织 Hive 至多从 2021 年 6 月份开始沉闷,至今已袭击了 30 多个组织(仅包含回绝领取赎金的受害者)。 然而,Hive 仅是开始拿 Linux 服务器作为攻打指标的泛滥勒索软件团伙之一。通过瞄准虚拟机,勒索软件运营商能够用一个命令同时加密多个服务器。 有报道称,早在往年6月份,钻研人员就发现了一种叫做 REvil 的新型勒索软件 Linux 加密机,其设计指标正是针对 VMware ESXi 虚拟机的(一种风行的企业虚拟机平台)。 奥地利的出名的病毒安全软件 Emsisoft 首席技术官 Fabian Wosar 在媒体采访中示意,其余勒索软件团体,如 Babuk、RansomExx/Defray、Mespinoza、GoGoogle、DarkSide 和 Hellokitty ,他们也创立了本人的 Linux 加密机。 ...

November 1, 2021 · 1 min · jiezi

关于linux:linux去掉空行的几种方法

应用grep> grep -v '^$' rumenz.txt^示意结尾,$示意结尾应用sed> sed '/^$/d' rumenz.txt^$用于匹配空白行,d用于删除匹配项应用awk> awk '!/^$/' rumenz.txt^$用于匹配空白行,!用来取反。应用tr> cat rumenz.txt | tr -s '\n'-s 用于将其输入中相邻字符序列压缩为单个字符应用vi/vim> vim rumenz.txt:g/^$/dg指定全局搜寻,^$用于匹配空白字符行,d示意删除匹配项。原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

October 31, 2021 · 1 min · jiezi

关于linux:Linux-安装-KVM-虚拟机

在 Archlinux 中装置sudo pacman -Sy qemu libvirt ebtables dnsmasq bridge-utils virt-managerkvm 负责 CPU 和内存的虚拟化qemu 向 Guest OS 模仿硬件(例如,CPU,网卡,磁盘,等)ovmf 为虚拟机启用UEFI反对libvirt 提供治理虚拟机和其它虚拟化性能的工具和 APIvirt-manager 是治理虚拟机的 GUI开启 libvirt 服务 sudo systemctl enable libvirtdsudo systemctl start libvirtd将以后用户退出 KVM 用户组 sudo usermod -a -G kvm $USER参考: 在 Arch Linux (Manjaro) 中应用 KVM 虚拟机/)ArchLinux/Manjaro 配置KVM环境在Ubuntu 中装置查看 CPU 是否反对虚拟化 egrep -c '(vmx|svm)' /proc/cpuinfo查看零碎是否反对 kvm 减速 sudo kvm-ok装置 CPU 查看器 sudo apt install cpu-checker重启电脑后开始装置 KVM sudo apt updatesudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils将以后登录用户增加到名为 libvirt 和 KVM 的组中。 ...

October 31, 2021 · 1 min · jiezi

关于linux:linux中同时移动多种格式文件

同时挪动多种文件类型办法一假如 rumenz 的目录中有多种类型的文件,如 .pdf .doc .mp3 .mp4 .txt 等,咱们先来查看 rumenz中的内容:> ls rumenz/123.pdf 456.pdf rumenz.mp4 rumenz.mp3 1.txt将 doc,pdf 和 txt 文件一次性挪动到另一个名为tmp 的目录中,你能够应用如下命令:> mv rumenz/*.{doc,pdf} tmp/办法二而后将抉择的文件类型挪动到目标目录tmp:> cd rumenz> mv *.doc *.txt tmp/挪动特定扩展名的所有文件,例如 .txt> mv rumenz/*.txt tmp/原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

October 30, 2021 · 1 min · jiezi

关于linux:LINUX01-linux系统

job间接将命令丢到后盾中执行:&例:rm -rf ~/test/ &将工作丢在后盾里暂停:[ctrl] + z查看后盾工作状态:jobs同时查看过程号:jobs -l将后盾工作拿到前台解决:fg %jobnumber例:fg %1将后盾工作变成运行状态:bg %jobnumber例:bg %1删除工作:kill -9 %jobnumber亦可:kill -9 PID 过程治理查看所有过程:ps -A仅查看本人的bash相干过程:ps -l过程状态 |-R(Running) | S(Sleep)state | D(Uninterruptable) | T(Stop) |-Z(Zombie) "僵尸"状态PRI/NI: Priority/Nice 过程优先级TTY:登录者的终端地位,若为近程登录则应用动静终端接口(pts/n) 动静查看过程变动:top指定n秒更新一次:top -d n指定某个过程:top -p PID查看所有过程的过程树:pstree -A更改过程优先级:PRI(new)=PRI(old)+nice把vi优先级进步5:nice -n -5 viPID的nice改为-5:renice -5 PID过程管控 |-1 SIGHUP 重启过程 | 2 SIGINT 中断([ctrl]-c)signal | 9 SIGKILL 强制中断 | 15 SIGTERM 失常的完结 |-17 SIGSTOP 暂停([ctrl]-z)启动相干/boot---grub 疏导装载程序---vmlinuz 内核文件------/lib/modules 内核模块(可动静加载)/etc 次要是一些配置文件留神:要想通过更新grub来增加windows启动项(双系统),首先要保障linux能辨认windows ntfs文件系统。

October 30, 2021 · 1 min · jiezi

关于linux:每周一个linux命令nano入门级使用

根底环境 nano命令介绍nano是一个字符编辑软件,相似于vi/vim,比vi/vim简略方便快捷。 装置nano输出nano命令,提醒未找到此命令,则须要装置,否则无需装置 centos装置命令如下:yum install nano -y nano命令入门级应用nano 关上一个文件 nano test 罕用快捷键编辑器窗口下方有提醒 保留快捷键 ctrl+o-->确认写入的文件名字-->确认写入的行数 退出快捷键 ctrl+x 组合键按完当前主动退出编辑窗口,而后能够cat 一下文件是否更改胜利 搜寻快捷键 ctrl+w -->输出搜寻关键字-->回车-->找到第一个光标闪动处 显示以后行号 ctrl+c-->下边会主动显示以后行号以及列号

October 30, 2021 · 1 min · jiezi

关于linux:linux中删除特殊文件

罕用的几种办法删除时带上门路删除时应用 --删除时用引号引起来应用转义字符辅助删除依照i节点号删除应用通配符删除创立一个非凡文件> echo "123" > -rumenz.txt> cat ./-rumenz.txt123删除-rumenz.txt> rm -rf -rumenz.txtrm: invalid option -- 'u'Try 'rm ./-rumenz.txt' to remove the file ‘-rumenz.txt’.Try 'rm --help' for more information.因为-rumenz.txt外面蕴含特殊字符,所以惯例的删除会报错。> rm -rf ./-rumenz.txt能够增加门路./就能够胜利删除应用--删除-rumenz.txt文件> rm -rf -- -rumenz.txt胜利删除删除时用引号引起来对于特殊字符,如<>!*等组成的文件如何删除呢?,创立<>\!*.txt文件> echo "123" > "<>\!*".txt对于这种类型的文件,咱们须要用引号将文件名蕴含起来> rm -rf "<>\!*".txt留神:文件名为!*的文件就不能通过这样的形式删除,因为!*是有其余含意的,能够应用本义删除减少转义字符删除文件既然!*无奈通过加引号的形式删除,那还有什么方法吗?有!删除时,减少转义字符:> echo "123" > \!*.txt> cat \!\*.txt 123删除须要加\本义> rm -rf \!*.txt依照i节点号删除很多时候,文件名压根没法输出,因为它们都是一堆乱码。咱们能够应用inode删除 在操作系统中,它是如何辨认一个文件的呢?它并不是通过文件名,而是通过一个iNode号,即i节点号来辨认不同的文件,文件名不过是这个文件其中的一个属性而已。 > ls -i12345 䄀䈀䌀䐀䔀䘀䜀⸀䠀㔀䤀䨀.txt下面的文件名根本无法失常输出,这时候就能够应用inode删除。12345就是该文件的inode号。> find ./ -inum 12345 -exec rm {}\;通配符删除所有文件> rm *.txt间接匹配txt删除,容易误删,删除前思考分明。原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

October 29, 2021 · 1 min · jiezi

关于linux:Linux-安装-Cassandra-非集群单机版

下载https://mirrors.tuna.tsinghua... 下载到你须要的中央 wget https://mirrors.tuna.tsinghua.edu.cn/apache/cassandra/3.11.11/apache-cassandra-3.11.11-bin.tar.gz而后解压 而后间接输出上面的启动命令是不行的 ./bin/cassandra -f会报错 expr: 语法错误:未预期的参数 “2”expr: 语法错误:未预期的参数 “2”./cassandra: 59: [: Illegal number:./cassandra: 63: [: Illegal number:./cassandra: 67: [: Illegal number:expr: 语法错误:未预期的参数 “4”./cassandra: 81: [: Illegal number:Invalid initial heap size: -XmsMError: Could not create the Java Virtual Machine.Error: A fatal exception has occurred. Program will exit.那怎么办呢? 编辑 cassandra/conf/cassandra-env.sh 脚本,勾销正文即可。 #MAX_HEAP_SIZE="4G"#HEAP_NEWSIZE="800M"

October 29, 2021 · 1 min · jiezi

关于linux:Linux一学就会第十二章-硬盘介绍和磁盘管理

October 29, 2021 · 0 min · jiezi

关于linux:linux之zgrep查找压缩包文件文本

但如果想要过滤 Nginx 的 access_log.gz 的压缩文件的内容,如果先解压,而后过滤出有用的文本,再把文件压缩回去,这就变的十分不不便。传统做法> gunzip access_log.gz> grep "/rumenz" access_log> gzip access_log应用 zgrep 来一步实现> zgrep "/rumenz" access_log.gzzgrep 也能够指定多个文件同时进行搜寻过滤> zgrep "/rumenz" access_log.gz error.gz查找.tar.gz文件> zgrep -anH "rumenz" rumenz.tar.gzrumenz.tar.gz:9:rumenz-a 让其二进制文件当做文本处理-n 显示行号-H 显示文件名原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

October 28, 2021 · 1 min · jiezi

关于linux:linux内存泄漏定位方法

free命令: free -h -s [n] 以[n]秒为距离,一直刷新信息swap列:内存缓和时,会把内存不罕用的数据写进去 swap是一个 磁盘分区or文件一般来说,用到这个swap反而影响性能内核提供参数:swappiness[0, 100]依据swappiness的大小来抉择是否写入swapfree列:示意真正可用的内存空间avalibale列:容量为 free + buff/cache

October 28, 2021 · 1 min · jiezi

关于linux:Linux一学就会第十一章-重定向和文件的查找

October 28, 2021 · 0 min · jiezi

关于linux:干货分享-Systemd-技术原理amp实践下

systemd 文章续集来啦,上期咱们介绍了 systemd 的基本概念 ,本期就为大家具体解说 systemd 相干的运行逻辑,心愿能对钻研系统资源优化的优客有所帮忙。 systemd 时代的开机启动流程在 systemd 作为零碎的 init 程序的时代下,Linux 零碎的启动流程能够大抵分为 6 个阶段:BIOS 自检阶段、GRUB 疏导阶段、kernel 内核加载阶段、initrd 虚构根文件系统阶段、systemd 初始化阶段、终端登录阶段。每个阶段都各司其职,为下一个阶段的进行做铺垫,互相分割,缺一不可。接下来对每个阶段做一下介绍: 1.BIOS 自检阶段从咱们启动计算机从按下电源键开始,计算机开始通电,而后零碎就开始加载主板内存上的第一段代码:BIOS,零碎进入 BIOS 自检阶段。 BIOS 为根本输入输出零碎,全称 Basic Input Output System,它烧录在主板的内存上,其中的内容只能读不能改,如果要进行更改只能从新烧录到主板的内存上。BIOS 在开机阶段最次要的性能为上电自检,它会对主板上接入的硬件设施一个个进行查看,例如查看 CPU、主板、内存、软硬盘零碎、键盘、光驱等等硬件是否接入失常,有无故障,当某一些次要的硬件(例如 CPU、内存等)呈现问题时,BIOS 就会报错,无奈持续启动零碎。咱们在启动电脑时听到的滴滴的声音就是 BIOS 蜂鸣器收回的声音,当硬件出问题的时候就能够听到它蜂鸣器响两到三声报错,零碎就无奈进行下一步的启动。 BIOS 查看完所有硬件状态并状态无误的时候,就会依照设置的启动程序去找相应的启动盘,而后疏导零碎进入相应的启动盘持续启动零碎。有过刷机教训的敌人应该晓得在系统启动时按 F12 或者 delete 键就会进入 BIOS 界面,而后就会去抉择相应的启动盘进行刷机,启动盘能够是装机 U 盘、光驱,也能够是曾经装了零碎的磁盘等等,BIOS 能够设置默认的启动程序,例如:能够设置 U 盘为第一启动项,开机启动时 BIOS 就会疏导零碎去找 U 盘对应的硬件接口,当找不到 U 盘时,BIOS 会持续尝试第二启动项,当抉择好了启动项时,零碎进入相应的启动盘,并开始执行启动盘中第一块磁盘第一个扇区的代码,至此 BIOS 自检阶段完结。 2.GRUB 疏导阶段GRUB 是 GRand Unified Bootloader 的缩写,它是一个多重操作系统的管理器,寄存在第一个磁盘的第一个扇区的主疏导扇区外面,如果你的电脑外面装了多个零碎,例如 Linux 零碎和 Windows 零碎,那么你能够通过 GRUB 来挪动光标抉择本人想要进入的零碎,抉择好零碎当前 GRUB 就会依据零碎分区表里找到对应零碎所在的磁盘分区,加载相应的 grub.cfg 配置文件,通过配置文件,加载 /boot 分区的文件系统驱动,而后在文件系统中找到零碎内核,把内核加载进来并启动,最初把零碎的控制权交给内核,至此 GRUB 疏导阶段完结。 ...

October 28, 2021 · 3 min · jiezi

关于linux:Linux内核学习2-进程的管理和调度

Linux内核学习-2. 过程的治理和调度(要点) 内核的工作 过程的治理和调度过程优先级过程优先级粗犷分为实时过程和非实时过程: 硬实时过程:有严格的工夫限度/Linux不反对硬实时/一些linux旁支版本RTLinux反对硬实时,次要起因是调度器没有做进内核中,内核作为一个独立的过程解决一些不仅要的工作。Linux的工作优先满足吞吐量,所以弱化了过程调度。然而这些年人们也在升高内核提早下面做了很多钻研,比方提出可抢占机制、实时互斥内核锁还有齐全偏心调度器。软实时过程:相似与写CD这种工作品种的过程,就算是写过程被临时中断也不会造成宕机之类的危险操作。一般过程: 没有具体的工夫束缚限度,然而会调配优先级来辨别重要性。过程的生命周期生命周期分为:运行、期待、休眠和终止。过程的状态机由调度器来扭转状态。不在于周期范畴内的过程:“僵尸过程”:子过程被KILL信号(SIGTERM和SIGKILL)杀死,父过程没有调用wait4()。失常流程是,子过程被KILL,父过程调用wait4零碎调用,告诉内核子过程已死。处于僵尸过程状态过程: 还会在过程表中(ps/top能刷出过程)占用很少的资源重启后能力刷掉该过程抢占式多任务处理 过程执行分为内核态和用户态,最大区别在于,内存地址区域拜访划分不同。进内核态办法一:如果用户态过程进入内核态:访问共享数据,文件系统空间,必须通过零碎调用,能力进入到内核态。进内核态办法二:中断触发进入内核态。中断触发和零碎调用能够使用户态进入到内核态,但用户态是被动调用的,中断是内部触发的。用户态 < 外围态 < 中断过程抢占档次: 一般过程总会被抢占如果

October 28, 2021 · 1 min · jiezi

关于linux:如何手动安装-ncompress

最近因为一些起因,要在不连外网的服务器下面操作 .tar.Z 格局的压缩文件。这个格局是基于 LZW 压缩的,而且相对来说很是古老,所以比拟新的零碎上的常用命令都曾经不反对这个格局了(比方 gzip)。 想要操作这个格局,就须要借助 ncompress 这个包。如果联网,间接 sudo apt updatesudo apt install ncompress就完事了。但问题是当初不能联网,所以就只能找到它的官网,而后手动装置了。 ncompress 的 GitHub 链接是:https://github.com/vapier/nco... 进入之后,不要下载 release 版,而是间接将整个仓库下载下来。 而后用 scp、sftp 之类的形式传到服务器上,解压缩之后进入其目录,并运行 build 文件(不须要运行 make 之类。这些性能全都集成在了 build 中): cd ncompress-mainsudo sh build 进入之后就能看到其装置菜单。默认的装置门路在最下面的 1 中能够看到。留神,这个装置工具比拟蠢。如果装置门路对应的目录不存在,会间接失败。所以须要咱们手动创立这些目录: sudo mkdir -p /usr/local/man/man1sudo mkdir -p /usr/man/man1而后就能够在 build 中执行 c(compile)和 i(install)来进行装置了。 装置好了之后,能够用 export 指令将当前目录增加到 PATH 中,从而在别处也可能调用指令(留神这里增加的是 compress 文件所在的目录,而不是它自身的门路,以及这里要写绝对路径): export PATH=$PATH:/path/to/current/dir想要再下次启动的时候也可能间接应用,能够将这段指令增加到 ~/.bashrc 中。 而后就能够测试成果了: # 间接生成 .Z 文件compress fileuncompress file.Z# 生成 .tar.Z 文件tar Zcvf output.tar.Z file_to_compresstar Zxvf output.tar.Z没有 sudo 权限如果没有管理员权限,那么能够批改装置目录到本人的 home 下,比方: ...

October 27, 2021 · 1 min · jiezi

关于linux:linux之yum下载rpm包离线安装

某些状况下因为某些起因服务器无法访问互联网。此时就须要进行离线装置,首先咱们须要在能够上网的服务器上将须要装置软件的rpm离线包下载下来,而后去不能上网的服务器上安装。以下是几种下载的办法.查看依赖包> yum deplist nginxpackage: nginx.x86_64 1:1.20.1-1.el7.ngx dependency: /bin/sh provider: bash.x86_64 4.2.46-34.el7 dependency: libc.so.6(GLIBC_2.17)(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libcrypt.so.1()(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libcrypt.so.1(GLIBC_2.2.5)(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libcrypto.so.10()(64bit) provider: openssl-libs.x86_64 1:1.0.2k-21.el7_9 dependency: libcrypto.so.10(OPENSSL_1.0.2)(64bit) provider: openssl-libs.x86_64 1:1.0.2k-21.el7_9 dependency: libcrypto.so.10(libcrypto.so.10)(64bit) provider: openssl-libs.x86_64 1:1.0.2k-21.el7_9 dependency: libdl.so.2()(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libdl.so.2(GLIBC_2.2.5)(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libpcre.so.1()(64bit) provider: pcre.x86_64 8.32-17.el7 dependency: libpthread.so.0()(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libpthread.so.0(GLIBC_2.2.5)(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libpthread.so.0(GLIBC_2.3.2)(64bit) provider: glibc.x86_64 2.17-324.el7_9 dependency: libssl.so.10()(64bit) provider: openssl-libs.x86_64 1:1.0.2k-21.el7_9 dependency: libssl.so.10(libssl.so.10)(64bit) provider: openssl-libs.x86_64 1:1.0.2k-21.el7_9 dependency: libz.so.1()(64bit) provider: zlib.x86_64 1.2.7-19.el7_9 dependency: openssl >= 1.0.2 provider: openssl.x86_64 1:1.0.2k-21.el7_9 dependency: rtld(GNU_HASH) provider: glibc.x86_64 2.17-324.el7_9 provider: glibc.i686 2.17-324.el7_9 dependency: shadow-utils provider: shadow-utils.x86_64 2:4.6-5.el7 dependency: systemd provider: systemd.x86_64 219-78.el7_9.3办法一:应用repotrack下载nginx rpm装置所须要的所有依赖> yum install yum-utils -y//下载nginx全量依赖包> repotrack nginx办法二:应用yumdownloader下载> yum install yum-utils -y> yumdownloader --resolve --destdir=. nginx--destdir:指定 rpm 包下载目录(不指定时,默认为当前目录)--resolve:下载依赖的 rpm 包。办法三:yum 的 downloadonly 插件> yum install yum-download -y> yum -y install nginx --downloadonly --downloaddir=.与 yumdownloader 命令一样,也是仅会将主软件包和基于你当初的操作系统所短少的依赖关系包一并下载。离线装置 rpm> rpm -Uvh --force --nodeps *.rpm原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 27, 2021 · 1 min · jiezi

关于linux:深度解析Linux-命令-su-和-sudo-的区别

之前始终对 su 和 sudo 这两个命令犯迷糊,最近专门搜了这方面的材料,总算是把两者的关系以及用法搞清楚了,这篇文章来零碎总结一下。 筹备工作因为本篇博客中波及到用户切换,所以我须要提前准备好几个测试用户,不便后续切换。 Linux 中新建用户的命令是 useradd ,个别零碎中这个命令对应的门路都在 PATH 环境变量里,如果间接输出 useradd 不论用的话,就用绝对路径名的形式:/usr/sbin/useradd 。 useradd 新建用户命令只有 root 用户能力执行,咱们先从普通用户 ubuntu 切换到 root 用户(如何切换后文会介绍): ubuntu@VM-0-14-ubuntu:~$ su -Password: # 输出 root 用户登录明码root@VM-0-14-ubuntu:~# useradd -m test_user # 带上 -m 参数root@VM-0-14-ubuntu:~# ls /hometest_user ubuntu # 能够看到 /home 目录上面有两个用户了因为还没有给新建的用户 test_user 设置登录明码,这就导致咱们无奈从普通用户 ubuntu 切换到 test_user,所以接下来,咱们须要用 root 来设置 test_user 的登录明码。须要用到 passwd 命令: root@VM-0-14-ubuntu:~# passwd test_userEnter new UNIX password: # 输入 test_user 的明码Retype new UNIX password: passwd: password updated successfullyroot@VM-0-14-ubuntu:~#接着咱们输出 exit 退出 root 用户到 普通用户 ubuntu: ...

October 27, 2021 · 4 min · jiezi

关于linux:Linux一学就会第十章-Centos8-系统进程管理

October 27, 2021 · 0 min · jiezi

关于linux:ubuntu-1604搭建gitlab

hint:此次搭建因为没有root账户权限,所以最开始筹备用在线装置形式的步骤开始,在装置gitlab-ce的时候无奈换镜像源,所以gitlab-ce采纳了离线下载安装包的形式,其余的依赖是在线装置形式。 最开始传统步骤 sudo apt update sudo apt install curl openssh-server ca-certificatessudo apt install postfix换源失败后1.在线下载包 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/xenial/main/g/gitlab-ce/gitlab-ce_13.11.1-ce.0_amd64.deb2.解压装置 sudo dpkg -i gitlab-ce_11.0.0-ce.0_amd64.deb3.编辑文件(这里呈现很多问题)sudo vim /etc/gitlab/gitlab.rb内容(这里我要讲一下!!!!!!!!!!!!!unicorn和gitlab_workhorse的端口号不要和EXTERNAL_URL设置一样,例如我的9998和9991) external_url 'http://***.***.***.***:9998'unicorn['enable'] = trueunicorn['port'] = 9991gitlab_workhorse['auth_backend'] = "http://localhost:9991"unicorn['worker_processes'] = 4unicorn['worker_memory_limit_min'] = "200 * 1 << 20"unicorn['worker_memory_limit_max'] = "300 * 1 << 20"puma['enable'] = false关注原作者 https://segmentfault.com/u/yo...4.启动(一行一行启动) sudo gitlab-ctl reconfiguresudo gitlab-ctl restart启动时unicorn会占用很高的cpu,基本上单颗拉满,启动后呈现下图以上就是我的亲身经历

October 27, 2021 · 1 min · jiezi

关于linux:在Linux上实现自定义的-ls命令

浏览联机帮助列出无关文件的信息(默认为当前目录)。如果未指定 -cftuvSUX 或 --sort,则按字母程序对条目进行排序。 能够看到,ls命令 可能找出当前目录中所有文件的文件名,按字典序排序后输入。 ls命令 还能显示其余信息,如果加上 -l 选项,ls 会列出每个文件的详细信息,也叫 ls的长格局,在 man手册 中能够看到: 应用长列表格局 当初在咱们的终端键入命令: 通过试验和联机帮助能够晓得 ls 做了以下两件事(ls 能断定参数指定的是文件还是目录): 列出目录的内容显示文件的信息在正式开始之前,来看一下 Unix 是如何组织磁盘上的文件的。 大方框示意目录,大方框内的小方框示意文件,目录之间的连线示意目录之间的组织关系。https://www.doc88.com/p-38773... ls是如何工作的通过联机帮助(过程省略)能够晓得,从目录读数据与从文件读数据是相似的, opendir 关上一个目录,readdir 返回目录中的以后项,closedir 敞开一个目录,seekdir、telldir、rewinddir与 lseek 的性能相似。接下来用 man手册 查问一下 readdir(3) ,能够看到: readdir() 函数返回一个指向 dirent 构造的指针,该构造示意 dirp 指向的目录流中的下一个目录条目。它在达到目录流开端或产生谬误时返回 NULL。 也就是说, readdir() 来读取 struct dirent取得目录中的记录。 如何编写ls最高级的ls命令上面实现了一个最高级的 ls命令 include <stdio.h>include <sys/types.h>include <dirent.h> // opendir() readdir() closedir()https://www.doc88.com/p-38773...void do_ls(char*); int main(int argc, char* argv[]) { if (argc == 1) { do_ls(".");}else { while (--argc) { printf("%s:\n", *(++argv)); do_ls(*argv); }}return 0;} ...

October 27, 2021 · 1 min · jiezi

关于linux:linux之同时监控多个日志文件变化

MultiTail是一个开源的ncurses的实用工具,可用于在一个窗口或繁多外壳,显示实时一样的尾巴命令,该命令拆分控制台为更多子窗口的日志文件的最初几行(很像显示多个日志文件到规范输入屏幕命令 )。 它还反对色彩突出显示,过滤,增加和删除窗口等。他和tail的区别就是他会在控制台中关上多个窗口,这样能够同时监控多个日志。装置命令> sudo apt install multitailCentos装置> yum install multitail -y高低展现监控两个日志文件,窗口高低> multitail /var/log/nginx/access.log /var/log/nginx/error.log如果要让窗口左右排布> multitail -s 2 /var/log/nginx/access.log /var/log/nginx/error.log进入 multitail 之后,有一些交互式命令h 来关上帮忙应用 b 来抉择关上的文件,应用高低键抉择文件,一旦抉择文件 multitail 会显示文件最初 100 行,应用 jk 挪动光标,或者 gg/G 来疾速挪动到文件顶部或者最初,q 退出a 用来增加另外的监控日志文件原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

October 26, 2021 · 1 min · jiezi

关于linux:Linux一学就会第九章-文件的归档和压缩

October 26, 2021 · 0 min · jiezi

关于linux:Linux下最常用的命令

cd命令cd .. 到上一层目录cd ~ 到以后用户目录cd / 到根目录cd - 到上一次拜访的目录pwd命令pwd 查看以后所在目录ll命令ll 查看本文件夹下的所有文件mkdir命令mkdir book 在当前目录下创立book目录,相对路径;mkdir /data/book 在根目录下data目录创立book目录,绝对路径;mv命令mv book data/student 将当前目录下的book目录,挪动到data目录下,并且批改名称为studentmv bookOld bookNew 讲当前目录下的bookOld目录重命名为bookNew目录 rm命令rm -rf /book 强制删除/book目录及其子目录rm -r book.html 删除当前目录下的book.html文件 cp命令cp -r book /student 将当前目录下的book目录复制到/student目录下clear命令clear 清空屏幕指令cat命令cat book.java 查看当前目录下book.java的内容tar命令tar -zxvf nginx-1.20.1.tar.gz 解压以后文件ps命令ps -A 查问所有正在运行的过程信息grep命令ps -ef | grep nginx 查问nginx正在运行的过程信息kill命令kill -9 8080 杀死正在执行的过程,8080为过程的pid14.vim命令vim book.java 编辑book.java,按i进行输出模式,输出结束后按esc,在输出:wq而后回车 su命令su root 切换到root用户ifconfig命令ifconfig 查看端口ip地址敞开防火墙命令复制yum install firewalld firewalld-config 装置firewalldsystemctl status firewalld 查看防火状态systemctl stop firewalld 临时敞开防火墙systemctl disable firewalld 永恒敞开防火墙理解更多java培训内容欢送关注小编!

October 26, 2021 · 1 min · jiezi

关于linux:linux之rsync远程同步文件

rsync全名Remote Sync,是类unix下数据镜像的备份工具。能够不便的实现本地,近程备份文件,rsync最重要的一点是反对增量备份。命令语法rsync [OPTION]... SRC DESTrsync [OPTION]... SRC [USER@]host:DESTrsync [OPTION]... [USER@]HOST:SRC DESTrsync [OPTION]... [USER@]HOST::SRC DESTrsync [OPTION]... SRC [USER@]HOST::DESTrsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]对应于以上六种命令格局,rsync有六种不同的工作模式:拷贝本地文件。当SRC和DES门路信息都不蕴含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup应用一个近程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到近程机器。当DST门路地址蕴含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src应用一个近程shell程序(如rsh、ssh)来实现将近程机器的内容拷贝到本地机器。当SRC地址门路蕴含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data从近程rsync服务器中拷贝文件到本地机。当SRC门路信息蕴含"::"分隔符时启动该模式。如:rsync -av root@192.168.78.192::www /databack从本地机器拷贝文件到近程rsync服务器中。当DST门路信息蕴含"::"分隔符时启动该模式。如:rsync -av /databack root@192.168.1.110::www列近程机的文件列表。这相似于rsync传输,不过只有在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.1.110/www如果主机和path门路之间应用单个冒号隔开,示意应用的是近程shell通信形式,而应用双冒号隔开的则示意的是连贯rsync daemon罕用几个参数- -v verbose具体输入- -a 递归模式,递归形式传输文件,并放弃连贯,权限,用户和组,工夫信息- -z 压缩传输- -h human-readable, 输入敌对- -u 跳过曾经存在的文件rsync 全副参数-v, --verbose 具体模式输入-q, --quiet 精简输入模式-c, --checksum 关上校验开关,强制对文件传输进行校验-a, --archive 归档模式,示意以递归形式传输文件,并放弃所有文件属性,等于 -rlptgoD-r, --recursive 对子目录以递归模式解决-R, --relative 应用相对路径信息-b, --backup 创立备份,也就是对于目标曾经存在有同样的文件名时,将老的文件重新命名为~filename。能够应用 --suffix 选项来指定不同的备份文件前缀。--backup-dir 将备份文件(如~filename) 寄存在在目录下。-suffix=SUFFIX 定义备份文件前缀-u, --update 仅仅进行更新,也就是跳过所有曾经存在于 DST,并且文件工夫晚于要备份的文件。(不笼罩更新的文件)-l, --links 保留软链结-L, --copy-links 想看待惯例文件一样解决软链结--copy-unsafe-links 仅仅拷贝指向 SRC 门路目录树以外的链结--safe-links 疏忽指向 SRC 门路目录树以外的链结-H, --hard-links 保留硬链结-p, --perms 放弃文件权限-o, --owner 放弃文件属主信息-g, --group 放弃文件属组信息-D, --devices 放弃设施文件信息-t, --times 放弃文件工夫信息-S, --sparse 对稠密文件进行非凡解决以节俭 DST 的空间-n, --dry-run 事实哪些文件将被传输-W, --whole-file 拷贝文件,不进行增量检测-x, --one-file-system 不要逾越文件系统边界-B, --block-size=SIZE 测验算法应用的块尺寸,默认是 700 字节-e, --rsh=COMMAND 指定应用 rsh、ssh 形式进行数据同步--rsync-path=PATH 指定近程服务器上的 rsync 命令所在门路信息-C, --cvs-exclude 应用和 CVS 一样的办法主动疏忽文件,用来排除那些不心愿传输的文件--existing 仅仅更新那些曾经存在于 DST 的文件,而不备份那些新创建的文件--delete 删除那些 DST 中 SRC 没有的文件--delete-excluded 同样删除接收端那些被该选项指定排除的文件--delete-after 传输完结当前再删除--ignore-errors 及时呈现 IO 谬误也进行删除--max-delete=NUM 最多删除 NUM 个文件--partial 保留那些因故没有齐全传输的文件,以是放慢随后的再次传输--force 强制删除目录,即便不为空--numeric-ids 不将数字的用户和组 ID 匹配为用户名和组名--timeout=TIME IP 超时工夫,单位为秒-I, --ignore-times 不跳过那些有同样的工夫和长度的文件--size-only 当决定是否要备份文件时,仅仅观察文件大小而不思考文件工夫--modify-window=NUM 决定文件是否工夫雷同时应用的工夫戳窗口,默认为 0-T --temp-dir=DIR 在 DIR 中创立临时文件--compare-dest=DIR 同样比拟 DIR 中的文件来决定是否须要备份-P 等同于 --partial--progress 显示备份过程-z, --compress 对备份的文件在传输时进行压缩解决--exclude=PATTERN 指定排除不须要传输的文件模式--include=PATTERN 指定不排除而须要传输的文件模式--exclude-from=FILE 排除 FILE 中指定模式的文件--include-from=FILE 不排除 FILE 指定模式匹配的文件--version 打印版本信息本地拷贝当 SRC 和 DES 门路信息都不蕴含有单个冒号 “:” 分隔符时就启动这种工作模式。将jdk.tar.gz拷贝到rumenz目录> rsync -avhz jdk.tar.gz rumenz将src目录拷贝到rumenz目录将/opt/src 目录下的文件同步发送到rumenz目录下。记住如果指标地址没有src目录,rsync 会主动创立该文件夹。> rsync -azhv /opt/src rumenz/将src目录下的所有文件拷贝到rumenz目录> rsync -azhv /opt/src/ rumenz/SRC 门路开端的 / 示意不主动创立 DEST 文件夹,在 man rsync 中的解释就是开端的 / 示意”拷贝当前目录下的文件” ,而不是”拷贝以后的目录”.近程拷贝应用一个近程 shell 程序(如 rsh、ssh) 来实现将本地机器的内容拷贝到近程机器。当 DES 门路地址蕴含冒号:或::分隔符时启动该模式。将本地/opt/src/目录下 所有文件同步备份到近程 /opt/rumenz/ 目录> rsync -avhz /opt/src/ root@rumenz.com:/opt/rumenz/将本地/opt/src/目录同步备份到近程 /opt/rumenz/ 目录> rsync -avhz /opt/src root@rumenz.com:/opt/rumenz/将近程 /opt/rumenz目录拷贝到rumenz目录(ssh模式,单冒号)> rsync -avhz root@rumenz.com:/opt/rumenz rumenz/将近程 /opt/rumenz目录下所有的文件拷贝到rumenz目录(ssh模式,单冒号)> rsync -avhz root@rumenz.com:/opt/rumenz/ rumenz/将近程 /opt/rumenz目录拷贝到rumenz目录(rsync模式,双冒号)> rsync -avhz root@rumenz.com::/opt/rumenz rumenz/将近程 /opt/rumenz目录下所有的文件拷贝到rumenz目录(rsync模式,双冒号)> rsync -avhz root@rumenz.com::/opt/rumenz/ rumenz/列近程机的文件列表> rsync -v rsync://rumenz.com /wwwrsync 应用非标准端口常常遇见的一种状况就是 ssh 更改了默认 22 端口,这个时候就须要应用 -e 参数。rsync 有两种罕用的认证形式,一种为 rsync-daemon 形式,另外一种则是 ssh。ssh 个别为首选,但当远端服务器的 ssh 默认端口被批改后,rsync 找不到一个适合的办法来输出对方 ssh 服务端口号。比方当初向机器rumenz.com传送文件,但此时rumenz.com的 ssh 端口曾经不是默认的 22 端口。> rsync -avz -e "ssh -p $port" /opt/src/ root@rumenz.com:/opt/rumenz/显示备份进度> rsync -zhve ssh --progress jdk.tar.gz root@rumenz.com:/opt/rumenz/限度备份文件最大值> rsync -zhve ssh --max-size='2000k' jdk.tar.gz root@rumenz.com:/opt/rumenz/备份完结后主动删除本地文件> rsync --remove-source-files -zvh jdk.tar.gz root@rumenz.com:/opt/rumenz/设置备份带宽> rsync --bwlimit=100 -avzhe ssh /opt/src/ root@rumenz.com:/opt/rumenz/原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 25, 2021 · 2 min · jiezi

关于linux:centos-devmapperclroot-100-记一次服务器发生的问题

测试服务器呈现问题 忽然服务启动不了 查看日志发现是空间有余 把一些过期的日志文件删除后服务器能够失常启动根本原因是啥呢 发现测试环境服务器的空间被占满了 进一步查找 原来是数据库的数据太多了测试环境上放了公司很多其余的服务 数据库也在下面 只能清理一下杂七杂八的货色了

October 25, 2021 · 1 min · jiezi

关于linux:如何诊断-Linux-服务器的性能

本文译者:开源中国社区,原文链接:https://urlify.cn/Y7nyqa对 Linux 的性能诊断当你为了解决一个性能问题登录到一台 Linux 服务器:在第一分钟你应该查看些什么? 在 Netflix,咱们有一个微小的 EC2 Linux 云,以及大量的性能剖析工具来监控和诊断其性能。其中包含用于云监控的 Atlas,以及用于按需实例剖析的 Vector。尽管这些工具能够帮忙咱们解决大多数问题,但咱们有时仍须要登录到一个服务器实例,并运行一些规范 Linux 性能工具。 在这篇文章中,Netflix Performance Engineering 团队将会向你解说在命令行中进行一次最佳的性能剖析的前 60 秒要做的事,应用的是你应该能够失去的规范 Linux 工具。 前六十秒:总览通过运行上面十个命令,你就能在六十秒内粗略地理解零碎正在运行的过程及资源应用状况。通过查看这些命令输入的错误信息和资源饱和度(它们都很容易看懂),你能够接下来对资源进行优化。饱和是指某个资源的负载超出了其可能解决的限度。一旦呈现饱和,它通常会在申请队列的长度或等待时间上裸露进去。 uptimedmesg | tailvmstat 1mpstat -P ALL 1pidstat 1iostat -xz 1free -msar -n DEV 1sar -n TCP,ETCP 1top 其中某些命令须要事后装置 sysstat 软件包。这些命令展现进去的信息可能帮你施行 USE 办法(一种用于定位性能瓶颈的办法),比方查看各种资源(如 CPU、内存、磁盘等)的使用率、饱和度和错误信息。另外在定位问题的过程中,你能够通过应用这些命令来排除某些导致问题的可能性,帮忙你放大查看范畴,为下一步查看指明方向。 上面的章节将以在一个生产环境上执行这些命令作为例子,简略介绍这些命令。若想具体理解这些工具的应用办法,请参考它们的 man 文档。 1uptime$ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02 这是一种用来疾速查看零碎均匀负载的办法,它表明了零碎中有多少要运行的工作(过程)。在 Linux 零碎中,这些数字蕴含了须要在 CPU 中运行的过程以及正在期待 I/O(通常是磁盘 I/O)的过程。它仅仅是对系统负载的一个粗略展现,略微看下即可。你还须要其余工具来进一步理解具体情况。 这三个数字展现的是一分钟、五分钟和十五分钟内零碎的负载总量平均值依照指数比例压缩失去的后果。从中咱们能够看到零碎的负载是如何随工夫变动的。比如你在查看一个问题,而后看到 1 分钟对应的值远小于 15 分钟的值,那么可能阐明这个问题曾经过来了,你没能及时察看到。 ...

October 25, 2021 · 6 min · jiezi

关于linux:Linux一学就会第八章-Centos8软件包的管理与安装

October 25, 2021 · 0 min · jiezi

关于linux:KVM-WEB管理工具-WebVirtMgr

一、webvirtmgr介绍及环境阐明 舒适提醒:装置KVM是须要2台都操作的,因为咱们是打算将2台都设置为宿主机所有都须要装置KVM相干组件 github地址https://github.com/retspen/we... WebVirtMgr是一个基于libvirt的Web界面,用于治理虚拟机。它容许您创立和配置新域,并调整域的资源分配。VNC查看器为来宾域提供残缺的图形控制台。KVM是目前惟一反对的虚拟机管理程序。 查看服务器版本号 [root@webc ~]# cat /etc/redhat-releaseCentOS Linux release 7.9.2009 (Core)内核版本 [root@webc ~]# uname -r3.10.0-1160.42.2.el7.x86_64敞开Selinux & 防火墙 [root@webc ~]# systemctl stop firewalld[root@webc ~]# systemctl disable firewalld[root@webc ~]# setenforce 0setenforce: SELinux is disabled[root@webc ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config更新软件包并装置epel扩大源 [root@webc ~]# yum update[root@webc ~]# yum install epel*查看python版本 [root@webc ~]# python -VPython 2.7.5[root@webc ~]#查看KVM 驱动是否加载 [root@webc ~]# lsmod | grep kvmkvm_intel 188740 0kvm 637515 1 kvm_intelirqbypass 13503 1 kvm[root@webc ~]#[root@webc ~]#[root@webc ~]# modprobe -a kvm[root@webc ~]# modprobe -a kvm_intel[root@webc ~]#免密配置 ...

October 25, 2021 · 3 min · jiezi

关于linux:linux删除目录下文件的几种方法

删除某个目录下的文件> tree ..└── rumenz ├── 1.txt ├── 2.txt └── one2 directories, 2 files删除rumenz目录下的所有文件(不删除目录)> rm -f rumenz/*rm: cannot remove ‘rumenz/one’: Is a directory如果是一个目录就跳过提醒应用find删除rumenz目录下的所有文件(不删除目录)> find rumenz -type f -delete //或者> find rumenz -type f -exec rm -f {}\;应用xargs删除rumenz目录下的所有文件(不删除目录)> find rumenz -type f | xargs rm -f删除rumenz目录下的全副一般文件> rm -f `find rumenz -type f`用for循环语句删除rumenz目录下的所有类型的文件> for delete in `ls -l rumenz`;do rm -f *;done删除当前目录下的文件删除当前目录下的所有文件(不删除目录)> rm -f *rm: cannot remove ‘one’: Is a directory应用find删除当前目录下的所有文件(不删除目录)> find . -type f -delete//或者> find . -type f -exec rm -f {}\;应用xargs删除当前目录下的所有文件(不删除目录)> find . -type f | xargs rm -f 删除当前目录下的全副一般文件> rm -f `find . -type f`用for循环语句删除当前目录下的所有类型的文件> for delete in `ls -l .`; do rm -f * ;done原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 24, 2021 · 1 min · jiezi

关于linux:linux删除目录下文件的几种方法

删除某个目录下的文件> tree ..└── rumenz ├── 1.txt ├── 2.txt └── one2 directories, 2 files删除rumenz目录下的所有文件(不删除目录)> rm -f rumenz/*rm: cannot remove ‘rumenz/one’: Is a directory如果是一个目录就跳过提醒应用find删除rumenz目录下的所有文件(不删除目录)> find rumenz -type f -delete //或者> find rumenz -type f -exec rm -f {}\;应用xargs删除rumenz目录下的所有文件(不删除目录)> find rumenz -type f | xargs rm -f删除rumenz目录下的全副一般文件> rm -f `find rumenz -type f`用for循环语句删除rumenz目录下的所有类型的文件> for delete in `ls -l rumenz`;do rm -f *;done删除当前目录下的文件删除当前目录下的所有文件(不删除目录)> rm -f *rm: cannot remove ‘one’: Is a directory应用find删除当前目录下的所有文件(不删除目录)> find . -type f -delete//或者> find . -type f -exec rm -f {}\;应用xargs删除当前目录下的所有文件(不删除目录)> find . -type f | xargs rm -f 删除当前目录下的全副一般文件> rm -f `find . -type f`用for循环语句删除当前目录下的所有类型的文件> for delete in `ls -l .`; do rm -f * ;done原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 24, 2021 · 1 min · jiezi

关于linux:麒麟杯一等奖你的-AI-智能相册管家

日前,第十届“麒麟杯”全国开源应用软件开发大赛获奖后果已颁布,大家对于取得最高奖金的作品充斥了好奇。别着急,小优这就将一等奖作品《解优相册》展现给大家,一起来看看吧—— 《解优相册》是一款集智能治理、智能搜寻等性能的相片治理自动化工具,由解优杂货队的席闻、刘东汉和聂腾飞三名同学单干实现。用以解决照片分类难、备份难、反复存储、查找不便等诸多痛点,它能够帮咱们把照片主动分门别类存储,晋升用户应用优麒麟零碎的体验,具备肯定的实用价值和创新性。 软件特色自动检索多设施中的相片集,轻松的一站式相册浏览体验智能剖析相片场景、人物脸孔,疾速检索重拾失落的记忆批量图片治理与备份,开释海量相片治理压力图1 《解优相册》作品展现软件性能反对相片页缩放性能,可根据工夫、场景、人物进行视图切换反对挪动设施相片智能导入反对相片主动整顿成册,可根据工夫、地点主动创立相册反对相片场景主动分类,可根据风光、美食、修建等类别主动创立相册反对相片人物分类和人物标记,可根据人物脸孔主动创立相册反对相片场景、工夫、人物、文字标记、辨认和检索反对插件扩大。开发者能够将图片解决算法打包成插件,供用户动静地增加、删除、分享图片图像处理插件反对关上图像处理软件编辑指定相片反对通过邮件、微信分享相片 软件 UI主题背景变动灵便,格调简洁时尚,反对随桌面背景变动而扭转软件UI格调。 图2 不同桌面背景下的UI格调 其余性能展现多标签、多场景智能分类,共有 365 种场景标签待解锁! 图3 相册智能分类展现 OCR 文字辨认加持,更智能更弱小!输出相片内的文字,即可精准定位。 图4 OCR 文字辨认性能展现 软件开源库应用申明图5 解优相册原创性状况阐明

October 22, 2021 · 1 min · jiezi

关于linux:Linux一学就会第七章-Centos8-文件权限管理

October 22, 2021 · 0 min · jiezi

关于linux:linux之curl命令

curl命令 是一个利用URL规定在命令行下工作的文件传输工具。它反对文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl反对包含HTTP、HTTPS、ftp等泛滥协定,还反对POST、cookies、认证、从指定偏移处下载局部文件、用户代理字符串、限速、文件大小、进度条等特色。命令语法> curl (选项)(参数)命令选项-A/--user-agent <string> 设置用户代理发送给服务器-b/--cookie <name=string/file> cookie字符串或文件读取地位-c/--cookie-jar <file> 操作完结后把cookie写入到这个文件中-C/--continue-at <offset> 断点续转-D/--dump-header <file> 把header信息写入到该文件中-e/--referer 起源网址-f/--fail 连贯失败时不显示http谬误-o/--output 把输入写到该文件中-O/--remote-name 把输入写到该文件中,保留近程文件的文件名-r/--range <range> 检索来自HTTP/1.1或FTP服务器字节范畴-s/--silent 静音模式。不输入任何货色-T/--upload-file <file> 上传文件-u/--user <user[:password]> 设置服务器的用户和明码-w/--write-out [format] 什么输入实现后-x/--proxy <host[:port]> 在给定的端口上应用HTTP代理-#/--progress-bar 进度条显示以后的传送状态文件下载curl命令能够用来执行下载、发送各种HTTP申请,指定HTTP头部等操作curl是将下载文件输入到stdout,将进度信息输入到stderr,不显示进度信息应用--silent选项。> curl https://rumenz.com --silent下载文件到指定的文件小写-o,大写 -O 保留文件和它的原始文件名> curl https://rumenz.com/1.html -o 2.html大写 -O 保留文件和它的原始文件名> curl https://rumenz.com/1.html -O--progress显示进度条> curl https://rumenz.com/2.html -o 2.html --progress断点续传> curl -O -u 'rumenz':'test' ftp://rumenz.com/jdk.tar.gz而后你的连贯忽然断开,你能够用以下命令持续下载> curl -C - -O -u 'rumenz':'test' ftp://rumenz.com/jdk.tar.gz留神断点续传的参数是-C, 要主动续传的话要应用 -C -, 否则须要手工指定断点的字节地位.伪造申请起源> curl -e https://json.im https://rumenz.com参照页是位于HTTP头部中的一个字符串,用来示意用户是从哪个页面达到以后页面的,如果用户点击网页A中的某个连贯,那么用户就会跳转到B网页,网页B头部的参照页字符串就蕴含网页A的URL。也能够应用--referer选项指定参照页字符串.-H参数能够通过间接增加标头 Referer,达到同样成果> curl -H 'Referer: https://json.im' https://rumenz.com设置申请header> curl -H "Host:rumenz.com" -H "accept-language:zh-cn" URLcurl的带宽管制> curl --limit-rate 200k https://rumenz.com/1.html用curl进行认证应用curl选项 -u 能够实现HTTP或者FTP的认证,能够指定明码,也能够不指定明码在后续操作中输出明码:> curl -u user:pwd https://rumenz.com> curl -u user https://rumenz.com只打印响应头> curl -I https://rumenz.comHTTP/1.1 200 OKServer: openresty/1.19.3.1Date: Wed, 02 Jun 2021 13:37:41 GMTContent-Type: text/html; charset=utf-8Connection: keep-alive应用curl模仿get申请间接显示网页内容> curl https://json.im/1.txt123456显示申请头和网页内容> curl -i https://json.im/1.txtHTTP/1.1 200 OKServer: openrestyDate: Wed, 02 Jun 2021 14:02:30 GMTContent-Type: text/plainContent-Length: 8Last-Modified: Wed, 02 Jun 2021 14:00:57 GMTConnection: keep-aliveETag: "60b78f19-8"Accept-Ranges: bytes123456间接显示网页内容> curl -l https://json.im/1.txt显示get申请全过程解析> curl -v https://json.im/1.txt· ...

October 20, 2021 · 3 min · jiezi

关于linux:卸载通过-deb-包安装的花生壳

装置后的花生壳叫做 pddns应用一下命令卸载: sudo apt purge phddns后果如下: ─bot@amd-5700G ~/Downloads╰─➤ sudo apt purge phddns正在读取软件包列表... 实现正在剖析软件包的依赖关系树正在读取状态信息... 实现下列软件包将被【卸载】: phddns*降级了 0 个软件包,新装置了 0 个软件包,要卸载 1 个软件包,有 6 个软件包未被降级。解压缩后将会空出 12.5 MB 的空间。您心愿继续执行吗? [Y/n] y(正在读取数据库 ... 零碎以后共装置有 342122 个文件和目录。)正在卸载 phddns (5.1.0) ...phdaemon: 未找到过程phtunnel: 未找到过程phddns_mini_httpd: 未找到过程Remove Phtunnel Service Success.Thanks For Using Phtunnel Service.(正在读取数据库 ... 零碎以后共装置有 342108 个文件和目录。)正在革除 phddns (5.1.0) 的配置文件 ...

October 19, 2021 · 1 min · jiezi

关于linux:linux之tar使用技巧

解压压缩命令详解-c: 建设压缩文档-x: 解压-t:查看压缩包内容-r:向压缩归档的文件外面追加文件-u:更新原压缩包中的文件-v:显示所有过程-f:指定压缩文件-C:切换到指定目录-p:解压文件权限信息(默认只为超级用户服务)-N:只保留比 DATE-OR-FILE 更新的文件--exclude=PATTERN排除以 PATTERN 指定的文件--remove-files 在增加文件至归档后删除它们tar罕用压缩格局-z: 有gzip属性rumenz.tar.gz-j: 有bz2属性rumenz.tar.bz2-J:有xz属性rumenz.tar.xztar.gz文件压缩文件成tar.gz> tar -czvf rumenz.tar.gz *查看tar.gz的文件内容> tar -tzvf rumenz.tar.gz1.txtrumenz.txt只解压1.txt单个文件> tar -xzvf rumenz.tar.gz 1.txt全副解压> tar -xzvf rumenz.tar.gz向归档的文件外面追加文件> tar -cvf rumenz.tar *.txt> lsrumenz.tar> tar -rvf rumenz.tar 3.txt留神: 如果是压缩(-z)和归档(-c)文件,则无奈给它追加文件。查看归档文件> tar -tvf rumenz.tartar.bz2文件tar.bz2依赖bzip2命令,yum install bzip2 -y压缩文件成tar.bz2> tar -cjvf rumenz.tar.bz2 *查看tar.bz2的文件内容> tar -tjvf rumenz.tar.bz21.txtrumenz.txt只解压1.txt单个文件> tar -xjvf rumenz.tar.bz2 1.txt全副解压> tar -xjvf rumenz.tar.bz2tar.xz文件压缩文件成tar.xz> tar -cJvf rumenz.tar.xz *查看tar.xz的文件内容> tar -tJvf rumenz.tar.xz1.txtrumenz.txt只解压1.txt单个文件> tar -xJvf rumenz.tar.xz 1.txt全副解压> tar -xJvf rumenz.tar.gztar 其它常用命令文件备份下来,并保留其权限> tar -czvfp rumenz.tar.gz *.txt在文件夹当中,比某个日期新的文件才备份> tar -N '2021/01/01' -czvf rumenz.tar.gz *.txt压缩的时候排除某个文件目录src/doc目录不打包压缩进去。> tar --exclude src/doc -czvf rumenz.tar.gz src/*打包文件之后删除源文件> tar -cvf rumenz.tar rumenz --remove-filestar解压到指定的目录> tar -xzvf rumenz.tar.gz -C one/压缩以后文件夹下非暗藏文件包含文件夹> tar -czvf rumenz.tar.gz *压缩以后文件夹下非暗藏文件但不包含文件夹> tar -czvf rumenz.tar.gz *.*压缩以后文件夹下暗藏文件排除两个暗藏文件夹.和..> tar -czvf rumenz.tar.gz .[!.]*压缩以后文件夹下所有文件和目录包含暗藏文件> tar -czvf rumenz.tar.gz .[!.]* *从1.15版本开始tar就能够自动识别压缩的格局,故不需人为辨别压缩格局就能正确解压tar -xvf rumenz.tar.gztar -xvf rumenz.tar.bz2tar -xvf rumenz.tar.xztar -xvf rumenz.tar.Z原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 19, 2021 · 1 min · jiezi

关于linux:Linux-启动停止重启-springboot-jar包-脚本

#!/bin/bash#这里可替换为你本人的执行程序,其余代码无需更改APP_NAME=asug.jarWAR_LOCATION=../asug/targetBAK_LOCATION=warBak#应用阐明,用来提醒输出参数usage() { echo "Usage: sh 脚本名.sh [start|stop|restart|status|deploy]" exit 1}#检查程序是否在运行is_exist(){ pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi}#启动办法start(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is already running. pid=${pid} ." else nohup java -jar ./${APP_NAME} --server.port=8080 --spring.profiles.active=prod > /dev/null 2>&1 & fi}#进行办法stop(){ is_exist if [ $? -eq "0" ]; then kill -9 $pid else echo "${APP_NAME} is not running" fi}#输入运行状态status(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is running. Pid is ${pid}" else echo "${APP_NAME} is NOT running." fi}#重启restart(){ stop start}deploy(){ stop cp $APP_NAME $BAK_LOCATION/$APP_NAME.$(date "+%Y%m%d%H%M") rm -rf $APP_NAME rm -rf nohup.out cp $WAR_LOCATION/$APP_NAME $APP_NAME start}#依据输出参数,抉择执行对应办法,不输出则执行应用阐明case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; "deploy") deploy ;; *) usage ;;esac

October 19, 2021 · 1 min · jiezi

关于linux:wgcloud-可以管理外网设备吗

能够 如果外网设施不能连上内网的server主机,但server主机能够连上外网设施那么能够应用【数通监测】模块来监测外网设施,数通监测是server来被动扫描外网设施,只有server主机能ping通外网设施即可

October 19, 2021 · 1 min · jiezi

关于linux:windows-virtualbox-安装3台centos75-虚拟机配置网络互通

1. 下载centos7.5镜像国内镜像源找不到历史版本了,只有最新的版本,历史版本去 https://vault.centos.org 下载centos7.5-1804 地址:https://vault.centos.org/7.5....2. 应用virtualbox 装置操作系统新建,抉择linux, 64bit始终点击下一步,实现根本配置;持续3. 配置网络虚拟机几种网络模式解读NAT 模式: 虚拟机能拜访互联网,相互不能拜访;网桥模式: 跟主机平等位置,占用IP仅主机模式: 相互能拜访,拜访不了互联网NAT网络 模式: 第一种模式加强版,相互可能拜访,但主机不能拜访虚拟机抉择NAT 网络模式如何解决主机能拜访虚拟机的问题,两种办法通过端口映射,将主机的端口映射到虚拟机的端口虚拟机再配置一张网卡,设置成主机模式虚拟机如何配置网络vim /etc/sysconfig/network-scripts/ifcfg-enp0s3 配置如下: TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=enp0s3UUID=d14c3bea-ab51-4f05-b9f9-62ce1f14e3cfDEVICE=enp0s3ONBOOT=yesIPADDR=10.0.2.5NETMASK=255.255.255.0BOOTPROTO=static/dhcp 示意是动态或动态分配的策略ONBOOT=yes 是否启动,肯定要留神yesIPADDR, NETMASK 示意动态地址NAME,DEVICE 示意网卡的名称,不须要改变service network restart 重启网络网络相干命令 ifconfig 查看网络状况route -n 查看路由

October 18, 2021 · 1 min · jiezi

关于linux:Linux服务器如何实现Rdesktop连接

用的是小鸟云服务器,操作步骤具体如下: 1.装置rdesktop。 运行 rdesktop 命令查看零碎是否曾经装置,若未装置则请 转到 github 下载最新安装包 >> 或 单击以下链接间接下载 v1.8.3版本: rdesktop-1.8.3.tar.gzrdesktop-1.8.3.zip 并在相应目录下运行以下命令解压和装置tar xvzf rdesktop-<x.x.x>.tar.gz ##替换x.x.x为下载的版本号cd rdesktop-1.8.3./configuremakemake install 2.连贯Windows实例。3.运行以下命令:rdesktop -u <您的服务器账户名> -p <服务器明码> <服务器IP或者自定义域名> rdesktop为应用远程桌面连贯的命令。 -u 用户名。 -p 您的管理员的明码。 最初加上连贯指标的IP地址。 如果登录失败,请查看云服务器端口号3389是否容许流入。

October 18, 2021 · 1 min · jiezi

关于linux:ubuntu-1604-install-clangformat和clang-11-12-13

当初,咱们在 Debian/Ubuntu 中间接应用 apt install clang-format 来装置 clang-format。 然而,Debian/Ubuntu 提供的 clang-format 曾经很老了。 例如,来自 Ubuntu 18.04 的最新版本的 clang-format 是 v7,但最新的稳固版本曾经达到了 v13。 您能够依照以下步骤装置最新版本的 clang-format: Step 1: 获取key wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -Step 2: 依据操作系统在/etc/apt/sources.list的开端追加以下内容: Buster (Debian 10):deb http://apt.llvm.org/buster/ llvm-toolchain-buster maindeb-src http://apt.llvm.org/buster/ llvm-toolchain-buster main# 11 deb http://apt.llvm.org/buster/ llvm-toolchain-buster-11 maindeb-src http://apt.llvm.org/buster/ llvm-toolchain-buster-11 main# 12 deb http://apt.llvm.org/buster/ llvm-toolchain-buster-12 maindeb-src http://apt.llvm.org/buster/ llvm-toolchain-buster-12 mainBullseye (Debian 11):deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye maindeb-src http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye main# 11 deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-11 maindeb-src http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-11 main# 12 deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-12 maindeb-src http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-12 mainXenial (Ubuntu 16.04):deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial maindeb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial main# 11deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-11 maindeb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-11 main# 12deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-12 maindeb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-12 mainBionic (Ubuntu 18.04):deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic maindeb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic main# 11deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 maindeb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main# 12deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 maindeb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 mainYou can check https://apt.llvm.org/ if your operating system is not on this list.Step 3: 对以后已装置软件包的更新 ...

October 18, 2021 · 2 min · jiezi

关于linux:Linux一学就会第三章-文件的基本管理和xfs-文件系统备份恢复

October 18, 2021 · 0 min · jiezi

关于linux:linux之crontab使用技巧

crontab命令次要用于设置命令行或者脚本周期性的执行。该命令从规范输出设施读取指令,并将其寄存于文件中,以供之后读取和执行。本文次要讲述crontb命令的根本语法和配置办法。crontab命令格局crontab [-u user] -e -l -r-u 用户名,不加-u参数默认为以后用户。-e 编辑crontab文件。-l 列出crontab文件中的内容。取值起源为/var/spool/cron下对应的文件-r 删除crontab文件。crontab命令格局# Example of job definition: .---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr ... | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat | | | | | * * * * * command/script一个定时工作的配置共包含6个字段,别离是分、时、日、月、周、命令行或脚本,每一列取值的范畴或者含意如上述格局中正文形容。特地留神一点是命令行或者脚本肯定要配置成绝对路径。非凡字段阐明星号(*):代表所有可能的值,例如在第1列示意每分钟执行,第2列示意每小时执行,第3列示意每天执行。逗号(,):能够用逗号隔开的值示意指定一个列表范畴,例如,在第1列设置15,30,45示意在第15分钟、30分钟、45分钟执行。中杠(-):能够用整数之间的中杠示意一个整数范畴,例如"2-6"示意2,3,4,5,6正斜线(/):能够用正斜线指定工夫的距离频率,例如第2列设置成"*/2",示意每两小时执行一次。每天晚上10点运行rumenz.sh脚本0 22 * * * /root/rumenz.sh每月的1,3,7的早上8.30运行rumenz.sh> 30 8 1,3,7 * * /root/rumenz.sh每周六,日的的凌晨2点执行rumenz.sh> 0 2 * * 6,0 /root/rumenz.txt每天的的18点到23点每30分执行rumenz.sh0,30 18-23 * * /root/rumenz.sh//或者*/30 18-23 * * /root/rumenz.sh每天凌晨2点拜访一个网址> 0 2 * * * /usr/bin/curl https://rumenz.comcrontab每10秒执行一次rumenz.sh* * * * * /root/rumenz.sh* * * * * sleep 10;/root/rumenz.sh* * * * * sleep 20;/root/rumenz.sh* * * * * sleep 30;/root/rumenz.sh* * * * * sleep 40;/root/rumenz.sh* * * * * sleep 50;/root/rumenz.sh每 90 分钟运行一次rumenz.sh0 0-21/3 * * * /root/rumenz.sh30 0-22/3 * * * /root/rumenz.sh须要两个表达式实现每90秒执行一次rumenz.sh*/3 * * * * /root/rumenz.sh*/3 * * * * sleep 90;/root/rumenz.sh须要两个表达式实现原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 17, 2021 · 1 min · jiezi

关于linux:Linux-安装-oh-my-zsh并开启常见插件

装置 zsh下载查看所有的 shell cat /etc/shells装置 zsh sudo apt install zsh把 zsh 设为默认的 shellchsh -s /bin/zsh装置 oh my zsh差劲的形式应用 gitee 下载 oh my zsh git clone https://gitee.com/mirrors/oh-my-zsh.git装置 oh my zsh bash oh-my-zsh/tools/install.sh最好的形式sh -c "$(wget https://gitee.com/Devkings/oh_my_zsh_install/raw/master/install.sh -O -)"装置插件zsh-autosuggestionsgit clone https://gitee.com/githubClone/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions罕用alias ll='ls -alF'plugins=(gitzsh-autosuggestions)

October 17, 2021 · 1 min · jiezi

关于linux:linux之awk使用技巧

打印文件的第一列> awk '{print $1}' rumenz.txt打印文件的前两列> awk '{print $1,$2}' rumenz.txt打印文件的最初一列> awk '{print $NF}' rumenz.txt打印文件的总行数> awk 'END{print NR}' rumenz.txt打印文件的第一行> awk 'NR==1{print}' rumenz.txtNR是指awk正在解决的记录位于文件中的地位(行号)打印文件的第3行第2列> sed -n '3,1p' rumenz.txt | awk '{print $2}'删除空行> awk 'NF' rumenz.txt打印奇数行> awk 'b=!b' rumenz.txt打印文件按#宰割后,行长度为3的所有行> awk -F '#' 'if(NF==3){print}' rumenz.txtNF是指awk正在解决的记录蕴含几个域(字段),这与域分隔符无关,默认为空统计Linux零碎中每个用户所用的shell> cat /etc/passwd | awk -F ":" '{print $1" : "$7}'用awk统计linux零碎中所有的用户数> cat /etc/passwd | awk '{count++}END{ print count}'统计某个文件夹下文件所占的字节数> ls -l | awk 'BEGIN{size=0}{size=size+$5}END{print size}'统计某个文件夹下文件所占的字节数,按M显示> ls -l | awk 'BEGIN{size=0}{size=size+$5}END{print size}'netstat联合awk统计TCP连接数> netstat -tunlp | awk '/^tcp/{++a[$6]}END{for(i in a) print i,a[i]}'过滤空行> awk '/^[^$]/ {print $0}' rumenz.txt列运算> cat 1.txt123求和> cat 1.txt | awk '{a+=$1}END{print a}'求平均值> cat 1.txt | awk '{a+=$1}END{print a/NR}'求列的最大值> cat 1.txt | awk 'BEGIN{a=0}{if($1>a) a=$1 fi}END{print a}'原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 16, 2021 · 1 min · jiezi

关于linux:内核参数rpfilter-校验数据包源地址

rp_filter作用校验数据包源地址是否可达 rp_filter 值阐明0: 敞开rp_filter检测性能,数据包经网卡eth1流入,不论源IP是否可达,都不会抛弃 1:数据包经网卡eth1流入,通过检测发现源IP能够通过eth1可达,数据包放行,如果源IP不能通过eth1可达,则抛弃以后数据包 2:数据包经网卡eth1流入,只有源IP通过路由可达即可,未必非得是以后eth1网卡,其余网卡也能够,如果源IP通过所有的网卡,都不可达,则失落数据包。 留神:此值默认为0,但其余脚本会批改此值。 设置内核参数 rp_filter编辑/etc/sysctl.conf 配置文件在文件结尾追加net.ipv4.conf.all.rp_filter =1执行命令sysctl -p 失效原文链接

October 16, 2021 · 1 min · jiezi

关于linux:docker-安装nextcloudonlyofficemysql

环境类目版本备注操作系统centos 7 64位 Docker最新版 Docker compose最新版临时没有用上能够不装置nextcloud最新版 onlyoffice最新版 mysql最新版 装置根底依赖 yum install epel-release -yyum install lynx wget expect iptables net-tools -y敞开防火墙systemctl stop firewalldsystemctl disable firewalld装置docker相干yum install git docker docker-compose -y配置docker 国内镜像源curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://e674da1e.m.daocloud.io启动docker 并设置开机自启 systemctl start docker.service systemctl enable docker拉取mysql、nextcloud、onlyoffice镜像docker pull mysqldocker pull nextclouddocker pull onlyoffice/documentserver装置MySQLdocker run -p 3306:3306 --restart=always --name mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/logs:/logs -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql配置MySQLdocker exec -it mysql容器ID /bin/bashroot@ID:/# mysql -u root -pmysql> GRANT ALL PRIVILEGES on *.* to root@'%' WITH GRANT OPTION;mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;Query OK, 0 rows affected (0.02 sec)mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; Query OK, 0 rows affected (0.01 sec)mysql> FLUSH PRIVILEGES;mysql> exit装置nextclouddocker run -p 8080:80 --restart=always -v /root/nextcloud/html:/var/www/html -v /root/nextcloud/apps:/var/www/html/custom_apps -v /root/nextlcoud/config:/var/www/html/config -v /root/nextcloud/nextcloud/data:/var/www/html/data -v /rott/nextcloud/themes:/var/www/html/themes -d nextcloud配置nextcloud设置用户名、明码配置连贯mysql 数据库配置信息(数据库【没有时可主动创立】、用户名、明码、IP地址)装置onlyofficedocker run -i -t -d -p 6060:80 --restart=always -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql onlyoffice/documentserver配置onlyofficenextcloud装置onlyoffice app ...

October 16, 2021 · 1 min · jiezi

关于linux:每周一个linux命令cd

命令cd格局cd 参数 目录常用命令切换到指定目录/homecd /home 切换到以后用户目录cd ~ 切换到上一层目录cd .. 切换到绝对于当前目录下的指定门路cd ./home 切换到暗藏目录下cd .test 原文链接

October 16, 2021 · 1 min · jiezi

关于linux:linux之sed使用技巧

抉择第5行> sed -n '5p' rumenz.txt抉择2到5行,共4行> sed -n '2,5 p' rumenz.txt> sed -n '2,+3 p' rumenz.txt抉择奇数行> sed -n '1~2 p' rumenz.txt 抉择偶数行> sed -n '2~2 p' rumenz.txt从第2行开始打印到文本最初> sed -n '2,$ p' rumenz.txt 抉择rumenz字样的行,以及前面的3行。> sed -n '/rumenz/,+3 p' rumenz.txt抉择以rumenz结尾的行,和呈现zhan字样行之间的数据> sed -n '/^rumenz/,/zhan/ p' rumenz.txtp意思就是打印删除第2行到第5行的数据> sed '2,5 d' rumenz.txt留神:下面没有加-i的参数,只是在终端上删除,原文件并没有被操作删除第2行到第5行的数据。将第2行到第5行的数据保留到1.txt> sed -n '2,5 w 1.txt' rumenz.txt抉择以rumenz结尾的行,和呈现zhan字样行之间的数据,并将a替换成b> sed -n '/^rumenz/,/zhan/s/a/b/g' rumenz.txt抉择rumenz字样的行,以及前面的3行,并将a全替换成b> sed '/rumenz/,+3 s/a/b/g' rumenz.txt将rumenz.txt文本中的a替换成b并写入到2.txt文件> sed -n 's/a/b/gipw' rumenz.txt正则本义因为正则的关系,很多字符须要本义。你会在脚本里做些很多\,*之类的解决。你能够应用|^@!四个字符来替换> sed '/aaa/s/\/etc/\/usr/g' rumenz.txt> sed '/aaa/s@/etc@/usr@g' rumenz.txt> sed '/aaa/s^/etc^/usr^g' rumenz.txt> sed '/aaa/s|/etc|/usr|g' rumenz.txt> sed '/aaa/s!/etc!/usr!g' rumenz.txt以上5条命令是等价的备份源文件替换> sed -i.bak 's/a/b/g' rumenz.txt> lsrumenz.txt.bak rumenz.txt输入长度不小于50个字符的行> sed -n '/^.{50}/p'查找目录中的php文件,删掉所有行级正文> find . -name "*.php" | xargs sed -i.bak '/^[ ]*#/d'以first结尾end结尾的所有行全副打印> sed -n '/^first.*end$/p' rumenz.txt从第2行到最初一行都追加rumenz> sed '2,$ s/$/rumenz/' rumenz.txt从第2行到最初一行后面都加rumenz> sed '2,$ s/^/rumenz/' rumenz.txt查看非间断的线和范畴> sed -n -e '2,5p' -e '4,9p' rumenz.txt删除正文> sed '/^#\|^$\| *#/d' rumenz.txt将文件中zip,Zip对立替换成rar> sed 's/[zZ]ip/rar/g' rumenz.txt一次进行两个或多个取代> sed -i 's/that/this/gi;s/line/rumenz/gi' rumenz.txt删除文件的最初一行> sed "$d" rumenz.txt将rumenz.txt文本中以rumenz结尾的行保留到1.txt文件> sed -n '/^rumenz/w 1.txt' rumenz.txt原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 15, 2021 · 1 min · jiezi

关于linux:Linux一学就会第二章Linux基本命令操作

October 15, 2021 · 0 min · jiezi

关于linux:linux之grep使用技巧

显示不以#结尾的行> grep ^[^#] rumenz.txt显示#结尾的行> grep ^# rumenz.txt从单个文件查找指定字符串> grep "rumenz" 1.txt从多个文件查找指定字符串> grep "rumenz" *.html疏忽大小写, 并显示行号> grep -in "rumenz" 1.txt显示查找到的总行数> grep -c "rumenz" 1.txt查找目录下所有文件,并只输入含有该文本的文件名> grep -l "rumenz" *-l: 查问多文件的时候只输入蕴含匹配字符的文件名递归查找目录下所有文件,并只输入含有该文本的文件门路> grep -rl "rumenz" .grep静默输入不会输入任何信息,如果命令运行胜利返回0,失败则返回非0值。个别用于条件测试。> grep -q "rumenz" 1.txt除开某一个目录不匹配> grep -R --exclude-dir="tmp" "rumenz"tmp 中的文件不必查找去掉文本中的空行> cat 1.txt | grep -v "^\s*$"过滤正文行> cat 1.txt | grep -v "^#"同时过滤空白行与正文行> cat 1.txt | grep -v "^$" | grep -v "^#"打印匹配行的后5行> grep -A 5 'rumenz' 1.txt打印匹配行的前5行> grep -B 5 'rumenz' 1.txt打印匹配行的前后5行> grep -C 5 'rumenz' 1.txt含糊匹配> grep "abc" 1.txt //后果为abcd, abcde, abc等准确匹配> grep -w "abc" 1.txt同时匹配多个字符串> cat 1.txt | grep -e "ab" -e "ef" -o-e 指定字符串作为查找文件内容的要害字符-o 只输入文件中匹配到的局部, 不会打印多余的内容。只在目录中所有的.php和.html文件中递归搜寻字符"rumenz"> grep -r "rumenz" --include *.{html,php}在搜寻后果中排除所有README文件> grep -r "rumenz" --exclude "README" .在搜寻后果中排除filelist文件列表里的文件> cat filelistaaabbbrumenz> grep -r "rumenz" --exclude-from filelist .原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 14, 2021 · 1 min · jiezi

关于linux:Linux一学就会第一章Linux学习环境搭建

October 14, 2021 · 0 min · jiezi

关于linux:大数据开发Linux系统入门之netstat-命令学习

netstat 命令用于显示与 IP、TCP、UDP 和 ICMP 协定相干的统计数据,个别用于测验本机各端口的网络连接状况。netstat 是在内核中拜访网络及相干信息的程序,大数据培训它能提供 TCP 连贯,TCP 和 UDP 监听,过程内存治理的相干报告。如果你的计算机有时候接管到的数据报导致出错数据或故障,你不用感到奇怪,TCP/IP 能够答应这些类型的谬误,并可能主动重发数据报。但如果累计的出错状况数目占到所接管的 IP 数据报相当大的百分比,或者它的数目正迅速减少,那么你就应该应用 netstat 查一查为什么会呈现这些状况了。1.命令格局:netstat -acCeFghilMnNoprstuvVwx[--ip]2.命令性能:netstat 用于显示与 IP、TCP、UDP 和 ICMP 协定相干的统计数据,个别用于测验本机各端口的网络连接状况。3.命令参数:-a 或–all 显示所有连线中的 Socket。 -A<网络类型>或–<网络类型> 列出该网络类型连线中的相干地址。 -c 或–continuous 继续列出网络状态。 -C 或–cache 显示路由器配置的快取信息。 -e 或–extend 显示网络其余相干信息。 -F 或–fib 显示 FIB。 -g 或–groups 显示多重播送性能群组组员名单。 -h 或–help 在线帮忙。 -i 或–interfaces 显示网络界面信息表单。 -l 或–listening 显示监控中的服务器的 Socket。 -M 或–masquerade 显示假装的网络连线。 -n 或–numeric 间接应用 IP 地址,而不通过域名服务器。 -N 或–netlink 或–symbolic 显示网络硬件外围设备的符号连贯名称。 -o 或–timers 显示计时器。 ...

October 14, 2021 · 8 min · jiezi

关于linux:如何定期备份gitea并上传至OSS

gitea比拟轻量,容易保护,占用服务器资源少(最根底的ECS甚至树莓派即可运行),自带备份命令行工具。此处,只是利用现有工具做的定期备份shell。 以下基于centos7(阿里云),仅供参考 1.装置配置gitea,参考官网,下载二进制文件,配置/etc/gitea/app.ini即可 https://docs.gitea.io/ 2.配置gitea主动启动服务 配置gitea.service(官网提供示例代码,这儿不再赘述)至,并执行sudo systemctl enable gitea 3.配置阿里云OSS上传下载备份工具ossutil64 执行./ossutil64 config生成OSS配置 4.编辑备份脚本,并设置为每周运行一次 执行crontab -e,而后追加如下内容0 2 * * 0 /bin/sh /data/backup/backup.sh 运行crontab -l查看后果: 附残缺备份shell: 应用gitea dump命令备份。只保留最近两次的文件。上传#!/bin/shcd /data/backupsu git -c '/usr/local/bin/gitea dump --config /etc/gitea/app.ini 'find /data/backup/ -mtime +6 -name "gitea-dump*.zip" | xargs rm -f >> backup.log 2>&1/data/tool/ossutil64 cp -r /data/backup/ oss://xxx-backup/gitea --loglevel info -u

October 14, 2021 · 1 min · jiezi

关于linux:linux之sudo使用技巧汇总

sudo和su之间的区别su用于用户之间的切换sudo用于普通用户能够应用root权限来执行命令su命令是以后用户用来切换到另外一个用户的命令,参数为用户名。执行时会要求输出明码,这个明码是你要切换到的用户的明码。 sudo 示意 “superuser do”。它容许已验证的用户以其余用户的身份来运行命令。其余用户能够是普通用户或者超级用户。然而,绝大部分时候咱们用它来以晋升的权限来运行命令。 sudo命令工作流程sudo会读取和解析/etc/sudoers文件,查找调用的用户及权限提醒调用该命令用户的明码,如果有NOPASSWD标记则跳过明码验证.sudo会创立一个子过程,调用setuid来切换到指标用户最初会在子过程中执行给定的shell命令sudo的配置USER/GROUP HOST=(USER[:GROUP]) [NOPASSWD:] COMMANDSUSER/GROUP: 示意要被受权的用户或组,如果是组要以%结尾HOST: 示意容许从哪些主机登录的用户运行sudo,ALL示意容许任何终端,机器拜访.(USER[:GROUP]): 示意应用 sudo 可切换的用户或者组,组能够不指定;ALL 示意能够切换到零碎的所有用户.NOPASSWD:如果指定,则该用户或者组应用sudo时就不必输出明码COMMANDS:示意运行指定的命令,ALL示意容许指定任何命令# 容许 sudo 组执行所有命令%sudo ALL=(ALL:ALL) ALL# 容许用户执行所有命令,且无需输出明码escape ALL =(ALL) NOPASSWD: ALL# 仅容许用户执行 echo, ls 命令escape ALL =(ALL) NOPASSWD: /bin/echo /bin/ls# 运行本机的用户执行关机命令escape localhost=/sbin/shutdown -h now# 容许 users 用户组中的用户像 root 用户一样应用 mount、unmount、chrom 命令%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom以晋升的权限执行命令> sudo cat /etc/passwd当你执行这个命令时,它会询问 rumenz 的明码,而不是root用户的明码。以其余用户执行命令> sudo -u deploy whoamideploy内置命令行为sudo 的一个限度是 —— 它无奈应用 Shell 的内置命令。history记录是内置命令,如果你试图用sudo执行这个命令,那么会提醒如下的未找到命令的谬误:> sudo history [sudo] password for rumenz: sudo: history: command not found咱们能够拜访 root shell,并在那里执行任何命令,包含 Shell 的内置命令。 要拜访 root shell, 执行上面的命令:> [rumenz@localhost]$ sudo bash> [root@localhost rumenz]# historysudo执行多条命令sudo -- bash -c 'pwd; hostname; whoami'双连字符 (–) 进行命令行切换bash 示意要用于执行命令的shell名称-c选项前面跟着要执行的命令限度用户执行某些命令为了提供受控拜访,咱们能够限度 sudo 用户只执行某些命令。例如,上面的行只容许执行 echo 和 ls 命令 。rumenz ALL=(ALL) NOPASSWD: /bin/echo /bin/ls在 vim 外面应用 sudo 命令咱们编辑零碎的配置文件时,在保留时才意识到咱们须要 root 拜访权限来执行此操作。因为这个可能让咱们失落咱们对文件的改变。没有必要惊恐,咱们能够在 Vim 中应用上面的命令来解决这种状况:w !sudo tee %冒号 (? 表明咱们处于 Vim 的退出模式感叹号 (!) 表明咱们正在运行 shell 命令sudo 和 tee 都是 shell 命令百分号 (%) 表明从以后行开始的所有行sudo的原理> ls -l /usr/bin/sudo---s--x--x. 1 root root 143248 Jun 28 2018 /usr/bin/sudo如果仔细观察文件权限,则发现 sudo 上启用了setuid位。当任何用户运行这个二进制文件时,它将以领有该文件的用户权限运行。在所示情景下,它是root用户。 ...

October 13, 2021 · 1 min · jiezi

关于linux:理论实例带你掌握Linux的页目录和页表

摘要:操作系统在加载用户程序的时候,不仅仅须要调配物理内存,来存放程序的内容;而且还须要调配物理内存,用来保留程序的页目录和页表。本文分享自华为云社区《Linux从头学15:【页目录和页表】-实践 + 实例 + 图文的最齐全、最接地气详解》,作者: 道哥 。 在x86零碎中,为了可能更加充沛、灵便的应用物理内存,把物理内存依照4KB的单位进行分页。 而后通过两头的映射表,把间断的虚拟内存空间,映射到离散的物理内存空间。映射表中的每一个表项,都指向一个物理页的开始地址。 然而这样的映射表有一个显著的毛病:映射表本身也是需保留在物理内存中的。 在 32 位零碎中,它应用了多达4MB的物理内存空间(每个表项4个字节,一共有4G/4K个表项)。 为了解决这个问题,x86处理器应用了两级转换:页目录和页表。 这篇文章,咱们就从最根底的底层计算过程动手,把这个最重要的内存管理机制搞定,当前再学习更深刻的知识点时,就会更容易了解了。 1. 页表的拆分过程在一个32位的零碎中,物理内存的最大可示意空间就是0xFFFF_FFFF,也就是4GB。 尽管理论装置的物理内存可能远远没有这么大,然而在设计内存管理机制的时候,还是须要依照最大的可寻址范畴来进行设计的。 依照一个物理页4KB的单位来划分,4GB空间能够宰割为1024 * 1024个物理页: 在上一篇文章中,应用繁多的映射表来指向这些物理页,导致了映射表本身占据了太多的物理内存空间。 一个用户程序中定义的几个段,可能实际上只应用了很小的空间,齐全用不到 4 GB。 然而依然须要为它调配多达 4GB 的物理内存空间来保留这个映射表,很节约。 为了解决这个问题,能够把这个繁多映射表拆分成1024个体积更小的映射表: 每一个映射表中,只有 1024 个表项,每一个表项依然指向一个物理页的起始地址;一共应用 1024 个这样的映射表;这样一来,1024(每个表中的表项个数) * 1024(表的个数),依然能够笼罩4GB的物理内存空间。 这里的每一个表,就称作页表,所以一共有1024个页表。 一个页表中一共有1024个表项,每一个页表项占用4个字节,所以一个页表就占用4KB的物理内存空间,正好是一个物理页的大小。 兴许有的小伙伴就开始算账了:一个页表本身占用4KB,那么1024个页表一共就占用了4MB的物理内存空间,依然是很多啊? 是的,从总数上看是这样,然而:一个应用程序是不可能齐全应用全副的 4GB 空间的,兴许只有几十个页表就能够了。 例如:一个用户程序的代码段、数据段、栈段,一共就须要10 MB的空间,那么应用3个页表就足够了,加上页目录,一共须要16 KB的空间。 计算过程: 每一个页表项指向一个 4KB 的物理页,那么一个页表中 1024 个页表项,一共能笼罩 4MB 的物理内存; 那么 10MB 的程序,向上对齐取整之后(4MB 的倍数,就是 12 MB),就须要 3 个页表就能够了。 记住上图中的一句话:一个页表,能够笼罩 4MB 的物理内存空间(1024 * 4 KB)。 页表中,每一个表项的格局如下: 留神上面的这几个属性: P(Present): 存在位。1 - 物理页存在; 0 - 物理页不存在; ...

October 13, 2021 · 2 min · jiezi

关于linux:linux中vivim操作技巧

配置vim/etc/vimrc配置项全局失效,对所有用户失效.vimrc家目录下,只针对某个用户失效> vim /etc/vimrcset number #显示行号set autoindent #主动缩进set nowarp #不换行退出vim编辑器保留退出应用 Vim 编辑器保留并退出编辑状态是一件轻而易举的事,你只需记住按 ESC 键切换到失常模式,而后输出冒号(:),之后输出wq即可实现保留并退出。> vim rumenz.txt123:wq间接退出如果不想保留,则按 ESC 键切换到失常模式,而后输出冒号(:),之后输出 q! 即可。> vim rumenz.txt123:q删除一行或者多行通过退格键(Backspace)来删除一行代码显然是太麻烦了。能够通过切换到失常模式(编辑模式下按 ESC 键)来进行操作:dd:输出两次dd删除以后行。3dd:从以后行开始删除3行。dG:(先输出d,而后按 shift 键输出 g)删除以后行至最初一行的所以行。复制粘贴一块代码你可能常常须要复制一行或一大块代码,应用 Vim 快捷键来实现此性能是非常简单的:按 Esc 切换到失常模式;把光标移到你须要复制的代码行首;按 V 抉择整行,可挪动光标抉择多行;按 d 剪切或按 y 复制抉择的代码;挪动光标到你须要粘贴的地位,按 p 粘贴代码到光标后的地位,或按 P 粘贴到光标前。撤销与重做在应用 Vim 或其余编辑器的时候,你可能常常须要对某些批改进行撤销或重做。在 Vim 中,你能够切换到失常模式,按 u 来撤销操作,按 Ctrl+r 来重做。代码正文代码正文按 Ctrl+v 切换到可视化模式;挪动光标(j 或 k)选中须要正文的行的结尾;按大写 I,而后输出正文符,如 #;最初按 Esc。勾销正文按 Ctrl+v 切换到可视化模式;按 j 或 k 抉择要删除的正文符;按 d 或 x 删除正文符搜寻搜寻在很多时候都是一个十分重要的性能。在文件中搜寻一个特定的词,能够切换到失常模式,而后输出斜线/,之后跟上要搜寻的词,回车即可。> vim rumenz.txt/rumenz按 n 显示下一个搜寻后果,按 N 显示上一个搜寻后果。把内部文件读入vim我开始应用vim 的时候,常常会关上一个文件、复制内容、敞开文件、关上另一个文件、而后粘贴进去复制到内容。其实 Vim 中读取另一个文件的内容十分不便。切换到失常模式,而后按:read <File Name> 。应用此快捷键你不须要手动关上文件来复制内容。> vim rumenz.txt:read readme.md把命令的后果读入vim切换到失常模式,而后输出:read !command 即可把command的后果输出到vim中。> vim rumenz.txt:read !pwd切换到上次批改的地位想晓得你在文件中做的最初一次批改是在什么地位?切换到失常模式,输出 g; 来即可切换到上次批改的地位。挪动到文件顶部或者尾部切换到失常模式,输出 gg 返回文件顶部,输出 G 返回文件底部。切换到以后行的行首或者行尾失常模式,输出$跳到以后行的行尾。输出0跳到以后行的行首。vim中以16进制查看文件失常模式下,输出:%!xxd会把以后文本转换成16进制> vim rumenz.txt123:%!xxd复原到失常模式> vim rumenz.txt123:%!xxd -r大小写敏感查找在查找模式中退出\c示意大小写不敏感查找,\C示意大小写敏感查找> vim rumenz.txt123/rumenz \c将查找rumenz,Rumenz,RUMENZ等等查找与替换语法:{作用范畴}s/{指标}/{替换}/{替换标记}例如:%s/foo/bar/g会在全局范畴(%)查找foo并替换为bar,所有呈现都会被替换(g)。替换以后行把以后行所有的rumen全副替换成rumenz:s/rumen/rumenz/g只把以后行第一次呈现的rumen替换成rumenz:s/rumen/rumenz/全局替换把所有的rumen替换成rumenz:%s/rumen/rumenz/g只把每一行第一次呈现的rumen替换成ruemnz:%s/rumen/rumenz/5到10行替换5到10行所有的rumen都替换成rumenz:5,10s/rumen/rumenz/g5到10行每一行第一次呈现rumen的替换成rumenz:5,10s/rumen/rumenz/以后行与接下来3行rumen全副替换:.,+3s/rumen/rumenz/g每一行前面追加123:%s/$/123/每一行后面加#,增加正文:%s/^/#/删除每一行结尾的#,删除正文:%s/^#//原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 12, 2021 · 1 min · jiezi

关于linux:linux-objdump-符号表-列说明

查看.so的函数列表时: objdump -tT liblapack.so | grep 'gotoblas'0000000000000000 DO *UND* 0000000000000000 gotoblas上述阐明 liblapack.so 存在 gotoblas 还是不存在? 每一列是什么意思? 第一列:符号的值第二列:一组字符和空格,示意在符号上设置的标记位。上面列出了七个分组:第一组:(l,g,,!)本地,全局,两者都不是。第二组:(w,) 弱或强符号。第三组: (C,) 符号示意构造函数或一般符号。第四组:(W,)符号为正告或失常符号。第五组:(I,)间接援用另一个符号或失常符号。第六组:(d,D,)调试符号、动静符号或失常符号。第七组:(F,f,O,) 符号是函数名、文件名、对象名或一般符号。 第三列:符号所在的节。ABS示意相对,示意不属于任何局部的符号。UND 内部链接符号,未在本指标文件定义。COM Symbols defined relative to this section are common symbols,全局未初始化变量第四列:符号的大小或对齐形式。第五列:符号的名称。参考文章: man objdumpobjdump

October 12, 2021 · 1 min · jiezi

关于linux:cpufetch-–-查询cpu架构信息的工具

cpufetch工具能够在Linux、macOS和Android零碎中装置应用。零碎环境Centos8 Centos8中装置cpufetch上面应用源码编译装置cpufetch。装置之前须要装置依赖包git , make , gcc: [root@localhost ~]# yum -y install git make gcc gcc-c++从github中下载cpufetch源码包: [root@localhost ~]# git clone https://github.com/Dr-Noob/cp...Cloning into 'cpufetch'... remote: Enumerating objects: 274, done.remote: Counting objects: 100% (274/274), done.remote: Compressing objects: 100% (166/166), done.remote: Total 1280 (delta 161), reused 208 (delta 108), pack-reused 1006Receiving objects: 100% (1280/1280), 635.25 KiB | 538.00 KiB/s, done.Resolving deltas: 100% (854/854), done.进入cpufetch目录,并编译装置: [root@localhost ~]# cd cpufetch/[root@localhost cpufetch]# make && make installgcc -Wall -Wextra -Werror -pedantic -fstack-protector-all -pedantic -std=c99 -DARCH_X86 -Wfloat-equal -Wshadow -Wpointer-arith src/common/main.c src/common/cpu.c src/common/udev.c src/common/printer.c src/common/args.c src/common/global.c src/x86/cpuid.c src/x86/apic.c src/x86/cpuid_asm.c src/x86/uarch.c -o cpufetchinstall -Dm755 "cpufetch" "/usr/bin/cpufetch"install -Dm644 "LICENSE" "/usr/share/licenses/cpufetch-git/LICENSE"install -Dm644 "cpufetch.8" "/usr/share/man/man8/cpufetch.8.gz"cpufetch – 查问cpu架构信息的工具cpufetch – 查问cpu架构信息的工具 ...

October 12, 2021 · 1 min · jiezi

关于linux:linux之vivim命令

vim 是对 vi 的扩大,文中的很多操作是 vi 通用的 vi 是辨别大小写的命令的,也就是说 g与G 是不同的命令 在不同模式下,快捷键是不一样的 模式分 个别模式 编辑模式 指令模式 个别模式用于文件外部操作,编辑模式用于输出编写等,指令模式用于对文本文件进行操作 罕用操作进入个别模式为开始编辑,或者按 esc 后进入按键成果a,i,r,o,A,I,R,O进入编辑模式h,backspace左挪动l,space右挪动j下挪动k上挪动0,挪动到行首$挪动到行末,1$示意以后行的行尾,2$示意以后行的下一行的行尾b依照单词向前挪动 字首e依照单词向后挪动 字尾w依照单词向后移至次一个字首H挪动到屏幕最上 非空白字M挪动到屏幕地方 非空白字L挪动到屏幕最下 非空白字G挪动到文档最初一行gg挪动到文档第一行v进入光标模式,配合挪动键选中多行Ctrl+f向下翻页Ctrl+b向上翻页u撤销上一次操作\``回到上次编辑的地位dw删除这个单词前面的内容dd删除光标以后行dG删除光标后的全副文字d$删除本行光标前面的内容d0删除本行光标后面的内容y复制以后行,会复制换行符yy复制以后行的内容yyp复制以后行到下一行,此复制不会放到剪切板中nyy复制以后开始的 n 行p,P,.粘贴ddp以后行和下一行调换地位J合并行Ctrl+r反复上一次动作Ctrl+z暂停并退出ZZ保留来到xp替换字符前面的替换到后面~更换以后光标地位的大小写,并光标挪动到本行右一个地位,直到无奈挪动光标具体操作按键成果Ctrl+e向下滚动Ctrl+b向上翻页b依照单词向前挪动 字首B依照单词向前挪动 字首 疏忽一些标点符号e依照单词向后挪动 字尾E依照单词向后挪动 疏忽一些标点符号w依照单词向后移至次一个字首W依照单词向后移至次一个字首 疏忽一些标点符号H挪动到屏幕最上 非空白字M挪动到屏幕地方 非空白字L挪动到屏幕最下 非空白字G挪动到文档最初一行gg挪动到文档第一行(光标到句尾)光标到局首{光标到段落结尾}光标到段落结尾nG光标下挪动到 n 行的首位n$光标挪动到 n 行尾部n+光标下挪动 n 行n-光标上挪动 n 行查找命令指令成果*向下查找同样光标的字符\#向上查找同样光标的字符/code查找 code 一样的内容,向后?code查找 code 一样的内容,向前n查找下一处N查找上一处ma在光标处做一个名叫 a 的标记 可用 26 个标记 (a~z)\`a挪动到一个标记 ad\`a删除以后地位到标记 a 之间的内容:marks查看所有标记指令模式指令成果:q个别退出:q\!退出不保留:wq保留退出:w filename另存为 filename:jumps历史编辑文档记录:set nu设置行号显示:set nonu勾销行号显示:set显示设置参数:set autoindent主动缩排,回车与第一个非空格符对齐:syntax on/off依据程序语法高亮显示:set highlight高亮设置查看:set hlsearch查找代码高亮显示:nohlsearch临时敞开高亮显示:set nohlsearch永恒敞开高亮显示:set bg=dark设置暗色调:set bg=light设置亮色调屏幕翻滚按键成果Ctrl+f向文件尾翻一屏幕Ctrl+b向文件首翻一屏幕Ctrl+d向文件尾翻半屏幕Ctrl+u向文件首翻半屏幕插入命令按键成果i在光标前I在以后行首a在光标后A在以后行尾部o在以后行下新开一行O在以后行上新开一行r替换以后字符R替换以后行及前面的字符,直到按 esc 为止s从以后行开始,以输出的文本代替指定数目的字符S删除指定数目的行,并以输出的文本代替ncw,nCW批改指定数目 n 的字符nCC批改指定数目 n 的行删除命令按键成果ndw,nDW删除光标开始及其后 n-1 个字符dw删除这个单词前面的内容dd删除光标以后行dG删除光标后的全副文字d$删除本行光标前面的内容d0删除本行光标后面的内容ndd删除以后行,以及其后的 n-1 行x删除一个字符,光标后X删除一个字符,光标前Ctrl+u删除输出模式下的输出的文本多窗口模式指令成果:split创立新窗口Ctrl+w切换窗口Ctrl-w =所有窗口一样高Ctrl-w + 方向键多窗口视图切换多文件编辑指令成果:args列出以后编辑的文件名:next关上多文件,应用 n(Next) p(revious)N(ext) 切换:file列出以后关上的所有文件vim 自定义技巧复制粘贴勾销缩进:set paste进入 paste 模式当前,能够在插入模式下粘贴内容,不会有任何变形 这个参数做了这么多事:textwidth设置为0wrapmargin设置为0set noaiset nosisofttabstop设置为0revins重置ruler重置showmatch重置formatoptions应用空值上面的选项值不变,但却被禁用 ...

October 11, 2021 · 2 min · jiezi

关于linux:家用计算机先驱-Clive-SinclairLinux之父曾受他启发马斯克发文悼念

上个月,一位英国老爷子逝世的音讯“轰动”了 BBC。 这位老爷子对世界计算机倒退影响重大,在他的产品QL上编写Linux,更是让“事实版钢铁侠”马斯克发文悼念。 他就是家用计算机先驱—— Clive Sinclair。 家用计算机先驱 Clive Sinclair 的传奇一生 维基百科材料显示,老爷子全名为克莱夫·马勒斯·辛克莱( Clive Marles Sinclair) 爵士(1940 年 7 月 30 日-2021 年 9 月 16 日),英国企业家和发明家、20世纪 70、80年代晚期开发生产电子产品的几家公司的创始人,并由此而为人所熟知。 以计算机行业的先驱而闻名于世的 Clive Sinclair,他的第一个工作其实是杂志编辑。 从杂志编辑到计算机行业先驱,再到电动汽车畛域“探路者”,Clive 的毕生相当传奇。 Clive于1940年7月30日出世在英国萨里郡里士满。小时候的 Clive 有点外向,相比同龄人,他会更喜爱终日和小孩儿待在一起。 当年,BBC 有一档名叫《Toytown》的儿童系列节目,Clive 就是被外面一个名叫“The Inventor”发明家的角色吸引了,自此激发了他创作一些小玩意的激情。 随后,Clive 为 BBC 演示了一台微型电视,这款微型电视是他在那段时间开发的产品之一。 起初,Clive为他在树林中的藏身处开发了一个通信零碎,并为其制作了微型收音机和放大器。 在中学高级考试 A-levels 时,Clive 还给简易型收音机设计了一个电路,而后委托一家制造商组装成DIY套件。该套件通过《实用无线》(Practical Wireless)等杂志发售,他已为该杂志撰写了许多文章。 在接下来的 4 年里,Clive 负责了(Sinclair Radionics Ltd)仪器实际的助理编辑,几年后还写了对于如何建造各种电子设备的书,包含无线电接收器和晶体管电路。 只管他的书卖得很好,但 Clive 还是想连忙回到创造畛域。 “回收”晶体管,Clive 迎来守业生涯“第一桶金” 终于在 1961 年,Clive 成立了本人的公司——Clive 无线电公司(Sinclair Radionics Ltd)。 ...

October 11, 2021 · 2 min · jiezi

关于linux:买不起MacBook使用Windows-10配置zsh命令行做开发

你好,我是悦创。 本文首发博客:https://www.aiyc.top/1976.html 欢送关注公众号:AI悦创。 从苹果转过来的开发都会感觉 Windows 下的命令行真是难用,接下来就跟着我来把 zsh 搬过去吧买不起 MacBook ,应用 Windows 10 配置 zsh 命令行做开发。 必须是 Windows10,在程序和性能外面开启“实用于Linux的Windows子系统”微软+R 启动运行,输出:control 回车即可: 在利用商店里搜寻 Linux ,选一个本人喜爱的 Linux 版本就好了,我以 Ubuntu 示意: 装置实现后关上,须要配置一会儿。而后设置用户名明码,我这里设置用户名为 user 而后配置一下 Ubuntu 下的用户名和明码: 配置好当前发现 Windows 下的命令提示符终端真的是难用,也没法复制粘贴快捷键。换一个 Conemu这个能够像 Linux 下或者 mac 下的 iTerm2 一样进行快捷操作:https://conemu.github.io/ https://www.fosshub.com/ConEmu.html 装置好当前初始化,设为默认启动 Bash,就能够间接进入 Ubuntu 的命令行了: 好了,接下来咱们来看一下会产生什么,当点击 ConEmu 启动的时候,就会进入到一个默认的门路里,这个门路是里面 Windows 用户的目录,C 盘被挂载到 /mnt/c 上面了,能够间接实现文件共享了。这个时候如果你还不晓得在干什么要干什么的话,就能够先这么用了买不起 MacBook,应用 Windows 10 配置 zsh 命令行做开发 ...

October 11, 2021 · 2 min · jiezi

关于linux:linux安装XtraBackup8

xtrabackup是percona团队研发的备份工具,比MySQL官网的ibbackup的性能还要多。反对myisam温全备、innodb热全备和温增备,还能够实现innodb的定时点复原,而且备份和复原的速度都较快。在目前MySQL的备份实现上,思考价格、速度、平安、一致性等角度,xtrabackup是十分适合的工具。 MariaDB也能够应用percona xtrabackup进行备份,不过MariaDB基于percona xtrabackup开发了它本人的备份工具:MariaDB Backup。它基于xtrabackup开发,所以所用办法根本和xtrabackup雷同,只是有些本人的个性 留神:XtraBackup只反对MySQL8.0,MySQL8.0以前的须要xtrabackup2.4备份和复原 下载的rpm软件包装置Percona XtraBackup> wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-8.0.4/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpm常见谬误> rpm -ivh percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpmerror: Failed dependencies: libev.so.4()(64bit) is needed by percona-xtrabackup-80-8.0.4-1.el7.x86_64 perl(DBD::mysql) is needed by percona-xtrabackup-80-8.0.4-1.el7.x86_64 perl(Digest::MD5) is needed by percona-xtrabackup-80-8.0.4-1.el7.x86_64装置libev> yum install libev -y装置DBD::mysql> yum install perl-DBD-MySQL -y装置Digest::MD5> yum install -y perl-Digest-MD5持续装置XtraBackup> rpm -ivh rpm -ivh percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpm查看XtraBackup版本> xtrabackup --versionxtrabackup: recognized server arguments: --datadir=/var/lib/mysql xtrabackup version 8.0.4 based on MySQL server 8.0.13 Linux (x86_64) (revision id: c2c0777)卸载percona-xtrabackup> yum remove `rpm -qa | grep percona-xtrabackup`原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 10, 2021 · 1 min · jiezi

关于linux:内网穿透的作用-网云穿可以用来干什么

置信有很多人都会被一个问题所困惑,咱们在日常办公和生存中;一些内网拜访的利用,如何让实现在任意外网进行链接拜访呢?有人说能够用内网穿透 内网穿透具体是什么,原理是什么;明天咱们用网云穿来做演示。内网穿透简略来说就是把咱们内网失常拜访的服务给转发到外网,从而实现外网拜访;像当初测试过的免费软件,网云穿内网穿透即可简略实现,咱们用一个简略的应用教程来重现这个场景 【小程序】内网穿透 永恒收费 简略实现外网拜访内网SpringBoot 应用工具:网云穿 利用场景:外网拜访内网SpringBoot 1、咱们首先确保本地我的项目内网能够拜访 查看本地ip地址, 关上cmd 2、通过ipconfig查看 这里查看到我本地的是: 192.168.10.24 3、内网拜访本地SpringBoot我的项目 因为我本地SpringBoot我的项目端口号为 8080, 那我这里能够通过192.168.10.24:8080/hello拜访. (留神: 这里是我本地的, 大家依据本人的状况而定) 通过网云穿外网拜访 通过以上步骤, 咱们能够晓得本地的SpringBoot我的项目, 内网是能够拜访的. 然而外网的状况下是不能拜访, 这时候咱们就须要利用网云穿使外网能够拜访. 1、咱们首先在网云穿官网注册账号,而后支付收费隧道 2、支付隧道后,咱们 跳转到控制台,配置隧道信息 查看隧道的配置信息 查看隧道的配置信息, 确保IP地址和端口号正确, 和咱们本地的绝对应, 同时确保穿透的协定是http协定. 比方我这里配置,ip地址: 192.168.10.24, 端口:8080 3、配置完隧道,咱们下载客户端,我的是windows零碎,收费下载默认就是windows版本 4、而后咱们解压,双击运行客户端 能够绑定微信扫码登录,也能够账号密码登录 5、登录后咱们启动隧道,点击“点我启动”,确保隧道配置信息都正确, 和本地SpringBoot我的项目都失常拜访之后, 在客户端启动隧道显示”以下红色框图示”, 阐明曾经失常启动, 这时也留神咱们的隧道域名, 就是映射地址 6、 外网拜访 此时, 咱们就能够在外网通过该隧道的域名, 失常拜访本地的SpringBoot我的项目了, 在浏览器输出: 依据以上操作,就能够胜利实现外网拜访内网的数据和利用,配置很简略,教程比拟具体,每一步都做了具体阐明哦

October 10, 2021 · 1 min · jiezi

关于linux:分布式文件存储服务器之Minio对象存储技术参考指南

Minio对象存储技术 MinIO 是一种高性能对象存储解决方案,原生反对 Kubernetes 部署。MinIO 提供与 Amazon Web Services S3 兼容的 API 并反对所有外围 S3 性能。MinIO 是在GNU Affero 通用公共许可证 v3.0下公布的。兴许提起对象存储技术,咱们都经验过Fastdfs长时间的拉锯战,即便当初大部分都在应用云服务厂商提供的OSS对象存储服务,然而其所破费的经济老本也是递增的,而且数据都存储在他人的服务器上,从肯定水平上来说,对于文件资源的把控粒度是极其不可管制,公网数据是何其的没有隐衷可言。尽管,对于开发层面上来说,只须要整合对应的SDK,对其应用曾经是开箱即用。然而,对于抉择自研对象存储技术来说,Minio何尝不失为一大利器。 其搭建过程与整合方面,简直曾经没有什么瓶颈可言。不论是从传统服务器的装置,还是基于Docker以及Kubernetes的部署,几乎简略得不要不要的。 根本概述 MinIO supports the widest range of use cases across the largest number of environments. Cloud native since inception, MinIO’s software-defined suite runs seamlessly in the public cloud, private cloud and at the edge - making it a leader in the hybrid cloud. With industry leading performance and scalability, MinIO can deliver a range of use cases from AI/ML,analytics, backup/restore and modern web and mobile apps.MinIO 在最大数量的环境中反对最宽泛的用例。自云原生以来,MinIO 的软件定义套件在公共云、公有云和边缘无缝运行——使其成为混合云的领导者。凭借行业当先的性能和可扩展性,MinIO 能够提供一系列用例,包含 AI/ML、剖析、备份/复原以及古代 Web 和挪动应用程序。 ...

October 10, 2021 · 2 min · jiezi

关于linux:linux之yum源设置代理

个别在内网环境中,少数服务器是不能间接上外网的(为了平安),只有个别的服务器能够拜访外网,在不能拜访外网的服务器上安装软件因为依赖的问题很容易出错,装置不上来,这时候就能够借助能够上外网的服务器做代理来装置软件。Centos7下设置代理案例A服务器192.168.1.10能够拜访外网B服务器192.168.1.111不能拜访外网,能够通过内网IP拜访A服务器在A服务器装置nginx咱们应用nginx作为yum的反向代理软件> yum install nginx -y配置nginx> vim /etc/nginx/conf.d/yum.conf server { listen 80; server_name yum.com; location /centos/ { proxy_pass http://mirrors.aliyun.com/centos/ ; } location /epel/ { proxy_pass http://mirrors.aliyun.com/epel/ ; } }//重启nginx> nginx -s reload批改B服务器的repo文件//备份> cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak> vim /etc/yum.repos.d/CentOS-Base.repo[base]name=CentOS-$releasever - Base - yum.comfailovermethod=prioritybaseurl=http://yum.com/centos/$releasever/os/$basearch/ http://yum.com/centos/$releasever/os/$basearch/#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=osgpgcheck=1gpgkey=http://yum.com/centos/RPM-GPG-KEY-CentOS-7#released updates [updates]name=CentOS-$releasever - Updates - yum.comfailovermethod=prioritybaseurl=http://yum.com/centos/$releasever/updates/$basearch/ http://yum.com/centos/$releasever/updates/$basearch/#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updatesgpgcheck=1gpgkey=http://yum.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that may be useful[extras]name=CentOS-$releasever - Extras - yum.comfailovermethod=prioritybaseurl=http://yum.com/centos/$releasever/extras/$basearch/ http://yum.com/centos/$releasever/extras/$basearch/#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extrasgpgcheck=1gpgkey=http://yum.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that extend functionality of existing packages[centosplus]name=CentOS-$releasever - Plus - yum.comfailovermethod=prioritybaseurl=http://yum.com/centos/$releasever/centosplus/$basearch/ http://yum.com/centos/$releasever/centosplus/$basearch/#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplusgpgcheck=1enabled=0gpgkey=http://yum.com/centos/RPM-GPG-KEY-CentOS-7#contrib - packages by Centos Users[contrib]name=CentOS-$releasever - Contrib - yum.comfailovermethod=prioritybaseurl=http://yum.com/centos/$releasever/contrib/$basearch/ http://yum.com/centos/$releasever/contrib/$basearch/#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contribgpgcheck=1enabled=0gpgkey=http://yum.com/centos/RPM-GPG-KEY-CentOS-7B服务器上批改/etc/hosts目标是让B服务器能解析yum.com> vim /etc/hosts192.168.1.111 yum.com验证B服务器是否能够解析> ping yum.com刷新yum缓存> yum clean all> yum makecache原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 9, 2021 · 1 min · jiezi

关于linux:linux创建只读用户

最近运维思考到生产服务器安全性,要将所有用户权限都发出去,然而开发这边心愿可能领有只读权限的用户,这样遇到一些问题还能够本人登录下来看一下,缩小不必要的沟通老本。运维那边始终说创立一个只读权限的用户很麻烦,要目录一一改什么的,总之不太违心做,而后我尝试了一下如何在linux上创立只读用户,以此来打运维的脸,我这里基于centos7零碎。 创立用户第一步必定是要创立一个用户,这步非常简单执行以下命令即可 useradd -s /bin/bash test这里还是要阐明一下,该命令就是说创立一个用户test,指定登录后应用的shell,也就是可执行的一些命令。而后给新建的用户设置一下明码 passwd testshell环境筹备第二步就是要给新建的用户筹备好可执行的shell环境援用,目标就是限度用户能够应用的命令,比方ls、less这些罕用的命令原本能够间接应用,通过这一步就能够进行限度。创立一个shell的援用目录 mkdir /home/test/.bin批改目录权限 chown root. /home/test/.bash_profilechmod 755 /home/test/.bash_profile批改bash配置文件,这一步就是为了让新建用户援用新的shell脚本目录,这样用户能够应用哪些命令就往里面加哪些,能够本人管制。如下图圈进去的中央,把原来的PATH门路正文掉,应用新的PATH门路。使环境变量失效 su - testsource /home/test/.bash_profile退出能够执行的命令将容许执行的命令链接到$HOME/.bin目录下,也就是咱们上一步建的/home/test/.bin。 ln -s /usr/bin/wc /home/test/.bin/wcln -s /usr/bin/tail /home/test/.bin/tailln -s /bin/more /home/test/.bin/moreln -s /bin/cat /home/test/.bin/catln -s /bin/grep /home/test/.bin/grepln -s /bin/find /home/test/.bin/findln -s /bin/pwd /home/test/.bin/pwdln -s /bin/ls /home/test/.bin/lsln -s /bin/less /home/test/.bin/lessln -s /bin/tar /home/test/.bin/tar这里加了很多罕用的命令只是举例,能够依据本人的需要增减。 总结通过下面3步就实现了只读用户的创立,但实际上该用户并不是实际意义上的只读。咱们晓得linux下有三种权限,r(读)、w(写)、x(执行),在第一步咱们创立一个新用户的时候,新用户自身对于现有目录就没有批改的权限,只是领有执行和读的权限,第二、三步的目标就是为了尽量限度执行的权限,但实际上咱们会发现并没有限制住,只不过是对于linux新人,他们不晓得linux命令的真正源端在哪,须要他人给一步一步加可执行命令,实际上咱们应用新用户间接cd 到/bin目录下也是能够执行所有命令的,只是麻烦一些而已。

October 9, 2021 · 1 min · jiezi

关于linux:干货分享-Systemd-技术原理实践上

优麒麟的程序员小哥在钻研如何优化系统资源模块时,查阅了许许多多的材料,发现没有一篇能具体把 systemd 的劣势与原理说得很分明的中文介绍文章,于是本人入手下载了 systemd 的源码,对照材料汇总了一份无关 systemd 的详解文章,心愿能对钻研 systemd 的优客有所帮忙。 systemd 介绍1 systemd 的起源对于 systemd 的起源,首先要从 Linux 的 init 程序说起。Linux 零碎在启动过程中,内核实现初始化当前,由内核第一个启动的程序便是 init 程序,门路为 /sbin/init(为一个软连贯,链接到实在的 init 过程),其 PID 为1,它为零碎里所有过程的“先人”,Linux 中所有的过程都由 init 过程间接或间接进行创立并运行,init 过程以守护过程的形式存在,负责组织与运行零碎的相干初始化工作,让零碎进入定义好的运行模式,如命令行模式或图形界面模式。 init 程序的倒退,大体上可分为三个阶段:sysvinit->upstart->systemd,依据 init 过程的倒退个性,能够简略了解为如下: sysvinit:init 零碎通过 shell 脚本以串行的形式启动零碎服务,下一个过程必须期待上一个过程启动实现后能力开始启动,因而系统启动的过程比较慢。 upstart:在 sysvinit 的根底上,把一些没有关联的程序并行启动,以进步启动的速度,然而存在依赖关系的程序依然为串行启动。 systemd:通过套接字激活的机制,让所有无论有无依赖关系的程序全副并行启动,并且仅依照系统启动的须要启动相应的服务,最大化进步开机启动速度。 目前优麒麟操作系统应用的就为 systemd。systemd 的意思为 system daemon,意为零碎守护过程,由 Lennart Poettering 带头开发,采纳更加优良的服务框架,并且与老的 sysvinit 兼容,其设计目标就是克服 sysvinit 与 upstart 的毛病,进一步地进步启动速度。目前支流的零碎中,systemd 的守护过程次要分为零碎态(system)与用户态(user),能够在 ps -ef 中看到 systemd 的守护过程,如下: PID 为1的过程/sbin/init 即是 system 态的 systemd,它为一个软链接,指向实在的 systemd 门路,在优麒麟操作系统中个别放在/lib/systemd/目录: ...

October 9, 2021 · 2 min · jiezi

关于linux:linux之iftop命令

iftop能够用来监控网卡的实时流量(能够指定网段)、反向解析IP、显示端口信息等,具体的将会在前面的应用参数中阐明。Linux装置iftop> yum install iftop -y> iftop界面如下 界面参数阐明=>代表发送数据<=代表接收数据TX:发送流量RX:接管流量TOTAL:总流量Cumm:运行iftop到目前工夫的总流量peak:流量峰值rates:别离示意过来 2s 10s 40s 的均匀流量罕用的参数-i设定监测的网卡,如:# iftop -i eth1-B 以bytes为单位显示流量(默认是bits),如:# iftop -B-n使host信息默认间接都显示IP,如:# iftop -n-N使端口信息默认间接都显示端口号,如: # iftop -N-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0-h(display this message),帮忙,显示参数信息-p应用这个参数后,两头的列表显示的本地主机信息,呈现了本机以外的IP信息;-b使流量图形条默认就显示;-f这个临时还不太会用,过滤计算包用的;-P使host信息及端口信息默认就都显示;-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M-P显示端口号 显示网卡eth0的信息,主机通过ip显示> iftop -i eth0 -n显示端口号(增加-P参数,进入界面可通过p参数敞开)> iftop -n -P显示将输入以byte为单位显示网卡流量,默认是bit> iftop -i eth0 -n -B显示流量进度条> iftop -i eth0 -n(进入界面后按下L)显示每个连贯的总流量> iftop -i eth0 -n(进入界面后按下T)显示指定ip 8.8.8.8的流量> iftop -i eth0 -n(进入界面后按下l,输出8.8.8.8回车) 原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

October 8, 2021 · 1 min · jiezi

关于linux:Linux终端文件追加操作

1、文件结尾追加单行插入(简略、间接)平时最罕用的办法了。$ echo "test append content" >> test.txt** 文件内容 **$ cat test.txttest append content这里得留神点如果咱们插入的是零碎变量如:$PATH、$HOME须要应用英文单引号引起来,否则会echo命令会解析成以后零碎变量的的值而后在插入。 让我用示例打动你: echo "$HOME test append content" >> test.txt** 文件内容 **$ cat test.txttest append content/home/www test append contentecho '$HOME test append content' >> test.txt** 文件内容 **$ cat test.txttest append content/home/www test append content$HOME test append content多行追加 (简略、十分实用)利用 "<<EOF EOF"段追加 ↓↓↓$ cat >> test.txt <<EOF> hello!> linux> bye!> EOF** 文件内容 **$ cat test.txttest append content/home/www test append content$HOME test append contenthello! linuxbye!利用零碎办法"echo "追加 ↓↓↓** 须要换行的间接回车符即可 ** echo "hello> ceshi> append" >> test.txt** 文件内容 **$ cat test.txttest append content/home/www test append content$HOME test append contenthello! linuxbye!helloceshiappend两头小彩蛋,文件内容有点多了,把内容革除了 ...

October 8, 2021 · 1 min · jiezi

关于linux:使用kubeadm在Ubuntu2004环境下搭建k8s集群

第一章、写在后面的阐明本文具体记录我应用kubeadm的形式,在Ubuntu20.04环境下搭建一个k8s三机集群的过程。在《Kubernetes in Action中文版》一书中,作者提到了三种搭建k8s集群的形式: Minikube应用GKE(Google Kubernetes Engine)托管服务应用kubeadm工具其中(1)学习参考,理论工作意义不大,(2)不符合实际网络情况,也就只剩下(3)这一条路了。这里我次要参考了Gemfield在知乎上的文章:https://zhuanlan.zhihu.com/p/...其实这篇文章已几近完满,无奈自己迟钝,又初学k8s,踩坑三、五处,故将部署过程做此记录,一并记录下其间参考的其它文章,作为本人向云原生迈出的第一步。须要指出的是,有些步骤我尽管执行胜利,但其原理或作用仍旧只知其一;不知其二或齐全不解,故也无奈给出更具体的阐明,还请各位看官体谅。还有,因为k8s集群部署过程中,很多状况下须要联网下载组件,这对你所在网络提出两个根本要求:一、 速度快(下得快、省时)二、 跨度远(下得来、省心)对于第一点的解决方案是更换Ubuntu的apt源,比方阿里源、163源等,对于第二点的解决方案是多学习,多实际(你看人家王七,那也是学过两招儿的……)。本章首先阐明我的k8s集群的部署环境。1.1 环境阐明表环境阐明表:表 1-1 环境阐明表 宿主机环境 OSWindows 10 家庭中文版 64 位虚机软件VirtualBox 6.1虚机环境(须要为虚机配置2颗CPU) k8s-005OS:Ubuntu 20.04.3 LTS 角色:master IP:192.168.56.130k8s-006OS:Ubuntu 20.04.3 LTS 角色:worker IP:192.168.56.131k8s-007OS:Ubuntu 20.04.3 LTS 角色:worker IP:192.168.56.132第二章、部署过程2.1 部署筹备工作2.1.1 敞开swap分区执行:sudo swapoff -a验证:free -m如图: 2.1.2 确保时区、工夫正确执行:sudo timedatectl如图: 2.1.3 确保虚机不会主动suspend执行:sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target如图: 2.1.4 加载内核模块br_netfilter,并调整参数执行:sudo modprobe br_netfilter确认已加载:lsmod | grep br_netfilter调整内核参数,创立k8s.conf,如下:cat <<EOF | sudo tee /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF使配置失效,执行:sudo sysctl --system如图: 2.1.5 设置rp_filter的值执行:sudo vi /etc/sysctl.d/10-network-security.conf将文件中如下两个参数的值从2批改为1net.ipv4.conf.default.rp_filter=1net.ipv4.conf.all.rp_filter=1如图:使配置失效,执行:sudo sysctl --system ...

October 8, 2021 · 2 min · jiezi

关于linux:linux之history使用技巧

在/etc/bashrc配置history的变量> vim /etc/bashrcexport HISTTIMEFORMAT="%Y-%m-%d:"> source /etc/bashrc> history1006 2021-05-19:vim /etc/bashrc 1007 2021-05-19:history 1008 2021-05-19:source /etc/bashrc 1009 2021-05-19:history 或者> vim /etc/bashrcexport HISTTIMEFORMAT="%F %T:"> source /etc/bashrc> history1009 2021-05-19 22:35:24:history 1010 2021-05-19 22:36:40:vim /etc/bashrc 1011 2021-05-19 22:37:02:source /etc/bashrc 1012 2021-05-19 22:37:07:history 或者> vim /etc/bashrcexport HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S `whoami`"> source /etc/bashrc> history1012 2021-05-19 22:37:07 root:history 1013 2021-05-19 22:37:41 root:vim /etc/bashrc 1014 2021-05-19 22:38:06 root:source /etc/bashrc 1015 2021-05-19 22:38:08 root:history 或者> vim /etc/bashrcexport HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S `who am i | awk '{print $1,$5}'`"> source /etc/bashrc> history1021 2021-05-19 22:42:59 root (171.43.176.3):history 1022 2021-05-19 22:43:03 root (171.43.176.3):source /etc/bashrc 1023 2021-05-19 22:43:06 root (171.43.176.3):vim /etc/bashrc 1024 2021-05-19 22:43:19 root (171.43.176.3):source /etc/bashrc 1025 2021-05-19 22:43:21 root (171.43.176.3):history history设置历史命令记录数> vim /etc/bashrc# 保留1000条记录export HISTSIZE=1000> source /etc/bashrc指定不同终端执行的命令都存储在同一个文件中> vim /etc/bashrcexport HISTFILE=/var/log/.cmd_log> source /etc/bashrc疏忽反复命令> vim /etc/bashrcexport HISTCONTROL=ignoredups > source /etc/bashrc多个终端同时操作时,防止命令笼罩,采纳追加形式> shopt -s histappend实时写入实际上history的历史命令是写入.bash_history 中的。 ~/.bash_history 记录的是前一次登陆所运行过的命令,而本次登陆所运行的命令都被缓存在内存中,当退出零碎后,本次的命令记忆才会记录到 .bash_history 中。> PROMPT_COMMAND='history -a'齐全革除命令执行操作的历史记录清理历史记录(只是清理了表层,可在.bash_history找到回)> history清理记录历史的记录文件内容> echo " " > .bash_history 对于history的小技巧!number 执行第几条命令!command 从最近的命令查到以command结尾的命令执行!! 执行上一条原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 7, 2021 · 1 min · jiezi

关于linux:linux之history命令

显示或操作历史列表。命令语法history [-c] [-d offset] [n]history -anrw [filename]history -ps arg [arg...]命令性能显示历史列表。操作历史列表。命令选项-a 将以后内存的历史记录追加(append)到历史文件中-n 从历史文件中读取以后内存记录里未读取的行输入-r 从历史文件中读取所有记录附加到内存历史记录-w 从内存历史中读取数据笼罩到历史记录文件中,能够指定文件保留记录-p 将参数输入为列表,但不保留-s 将参数保留成命令历史记录中,能够以此伪造命令记录命令参数n:可选,只列出最近的 n 条记录。filename:可选,示意历史文件;默认调用程序为filename、环境变量HISTFILE、~/.bash_history。返回值返回胜利,除非提供了非法选项或呈现了谬误。应用 history 命令显示最近应用的 10 条历史命令> history 10清空历史记录> history -c通过批改环境变量来管制history的保留属性$HISTSIZE 历史记录最大条数$HISTFILE 历史记录寄存文件$HISTFILESIZE 历史文件条目最大数$HISTTIMEFORMAT="%F %T" 在命令历史显示时输入工夫等格局$HISTIGNORE="str1;str2;str3*" 示意不记录str1、str2命令和以str3结尾的命令个别在/etc/bashrc中定义这些变量> vim /etc/bashrcexport HISTTIMEFORMAT='%F %T ' #让历史命令记录操作工夫export HISTSIZE=1000000 #设置保留历史命令条数export HISTFILESIZE=1000000 #设置保留历史命令的文件大小shopt -s histappend #多个终端同时操作时,防止命令笼罩,采纳追加形式PROMPT_COMMAND='history -a' #实时记录历史命令,避免失落> source /etc/bashrc把操作过的命令保留到文件办法1vim /etc/bashrcexport HISTORY_FILE=/var/.history/date +'%y-%m-%d'.log #自定义历史命令保留文件export PROMPT_COMMAND=' { date "+%Y-%m-%d %T - USER:$USER IP:$SSH_CLIENT PS:$SSH_TTY - $(history 1 | { read x cmd; echo "$cmd"; })"; } >> $HISTORY_FILE'实时记录历史命令到自定义文件中,不记录日志文件中办法2> vim /etc/bashrcexport PROMPT_COMMAND='history -a { command=$(history 1 | { read x y;echo $y; } );logger -p local1.notice -t bash -i "user=$USER,ppid=$PPID,from=$SSH_CLIENT,pwd=$PWD,command:$command " }'> vim /etc/syslog.conflocal1.notice /var/log/cmd.log记录到日志中,配合日志服务器,可把日志传送过来,安全性高 ...

October 7, 2021 · 1 min · jiezi

关于linux:linux之man命令

man 命令 是 Linux 下的帮忙指令,通过 man 指令能够查看 Linux 中的指令帮忙、配置文件帮忙和编程帮忙等信息。语法> man(选项)(参数)选项-a:在所有的man帮忙手册中搜寻;-f:等价于whatis指令,显示给定关键字的简短形容信息;-P:指定内容时应用分页程序;-M:指定man手册搜寻的门路。参数数字:指定从哪本 man 手册中搜寻帮忙;关键字:指定要搜寻帮忙的关键字。数字代表内容1:用户在shell环境可操作的命令或执行文件;2:零碎内核可调用的函数与工具等3:一些罕用的函数(function)与函数库(library),大部分为C的函数库(libc)4:设施文件阐明,通常在/dev下的文件5:配置文件或某些文件格式6:游戏(games)7:常规与协定等,如Linux文件系统,网络协议,ASCII code等阐明8:系统管理员可用的治理命令9:跟kernel无关的文件实例咱们输出man ls,它会在最左上角显示LS(1),在这里,LS 示意手册名称,而(1)示意该手册位于第一节章,同样,咱们输man ifconfig它会在最左上角显示 IFCONFIG(8)。也能够这样输出命令:man [章节号] 手册名称。 man 是依照手册的章节号的程序进行搜寻的,比方 > man sleep只会显示 sleep 命令的手册, 如果想查看库函数 sleep,就要输出:> man 3 sleep原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

October 5, 2021 · 1 min · jiezi

关于linux:linux-mysql-客户端配置文件和服务端配置文件

有很多教程会通知你 ,是 /etc/my.cnf ,然而这可能是 100 年前的配置文件 2021 年,mysql8 下是这样的 客户端配置文件 /etc/mysql/mysql.conf.d/mysql.cnf服务端配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf ╭─bot@amd-5700G /etc/mysql/mysql.conf.d ╰─➤ mysql --version mysql Ver 8.0.26-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))╭─bot@amd-5700G /etc/mysql/mysql.conf.d ╰─➤ uname -aLinux amd-5700G 5.11.0-37-generic #41~20.04.2-Ubuntu SMP Fri Sep 24 09:06:38 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

October 5, 2021 · 1 min · jiezi

关于linux:linux动态库搜索路径顺序

在linux中执行程序时,有时会遇到“error while loading shared libraries”这种谬误,这是因为动静链接器ld无奈找到程序启动须要的动静库。这时就须要设置动静库的搜寻门路了。动静链接器ld搜寻门路的程序以及如何设置: ELF文件中Dynamic Section段的DT_RPATH设置的门路。例如,能够在编译时增加链接参数“-Wl,--rpath,./lib”来指定搜寻./lib。环境变量LD_LIBRARY_PATH设置的门路。ELF文件中Dynamic section段的DT_RUNPATH设置的门路。应用形式与1相似,须要增加–enable-new-dtags参数。例如,链接参数为“-Wl,--rpath,./lib,--enable-new-dtags”,则是指定DT_RUNPATH为./lib。因为DT_RUNPATH存在,则DT_RPATH会被疏忽。/etc/ld.so.cache中缓存的动静库搜寻门路。能够通过批改配置文件/etc/ld.so.conf 增删门路(批改后须要运行ldconfig命令)。默认的/lib/和/usr/lib/。如果链接时指定-z nodefaultlib,这个默认门路将被疏忽。PS:能够应用“readelf -d”查看Dynamic Section段。PPS:如果只想对特定的app起作用的话,通过设置DT_RPATH或者DT_RUNPATH来指定搜寻门路是一个较优的形式。

October 5, 2021 · 1 min · jiezi

关于linux:Vim基本操作

简介Vim是Linux中一款常见的文本编辑器。本文将简略介绍一下Vim的根本应用形式。Vim编辑器有三种模式——命令模式、编辑模式、末行模式。三种模式的切换形式如下图: 须要留神的是: 编辑模式和末行模式之间不可间接切换。命令模式vim filename可间接新建文件,关上文件后默认进入命令模式。命令模式下能够挪动光标或者进行删除、复制、粘贴。挪动光标常用命令: 方向键或者h(左)、j(下)、k(上)、l(右):光标挪动一个字符。[Ctrl] + [f]:向下翻页。[Ctrl] + [b]:向上翻页。0 或 [Home]:光标挪动到以后行最后面的字符。$ 或 [End]:光标挪动到以后行最初面的字符。G:光标挪动到文件最初一行。gg:光标挪动到文件第一行。删除、复制、粘贴常用命令: x:向后删除一个字符。X:向前删除一个字符。dd:删除以后行。ndd:n为数字,删除蕴含以后行的n行。yy:复制以后行。nyy:n为数字,复制蕴含以后行的n行。p:粘贴到以后行的下一行。P:粘贴到以后行的上一行。u:撤销上一个动作。[Ctrl] + [r]:重做上一个动作。编辑模式在命令模式下按i进入编辑模式。编辑模式下能够看到“-- INSERT --”的提醒。编辑实现后按esc键退出到命令模式中。末行模式在命令模式下按:(英文冒号)进入末行模式。该模式下能够进行设置、保留、退出等操作。按esc键能够退出到命令模式中。末行模式下常用命令: :w:保留文件。:q:不保留,退出vim。:wq:保留并退出vim。:q!:不保留,强制退出vim。:wq!:保留并强制退出vim。:set nu:显示行号。:set nonu:勾销行号。:set ff=unix:设置文件格式为unix格局。一图胜千言

October 5, 2021 · 1 min · jiezi

关于linux:linux目录文件操作命令

命令根本格局命令格局:cmd [-options [parameter]] [file] cmd :命令名,如ls,cd等。[]:示意可省略内容。-option:选项,用于管制命令。格局有2种:-h、--help。parameter:给不同选项的设置的参数。file:执行命令的文件或目录。目录操作pwd:显示当前目录的绝对路径。cd:切换目录。 示例:cd .. #切换到下级目录cd ~ #切换到用户根目录cd - #返回上次的工作目录ls:显示目录内容。罕用参数: -l:长格局显示,蕴含文件权限等数据。-a:显示包含暗藏文件在内的所有内容。-h:以易读的形式(GB、kB等)形式显示文件容量。-t:以文件批改工夫排序。-S:以文件大小排序。示例:ll #同ls -lals ./*.txt #显示当前目录下所有的txt文件mkdir:创立目录。罕用参数: -m:设置目录权限。-p:递归创立目录。示例:mkdir -p t1/t2 #递归创立目录t1/t2mkdir -m 755 t #创立权限为755的目录trmdir:删除空目录。非空目录用rm删除。罕用参数: -p:删除子目录后上一级目录也是空目录,则一起删除。示例:rmdir -p t1/t2 #删除子目录t2,t2删除后若t1也为空目录,则一起删除。文件或目录操作mv:挪动或重命名文件或目录。罕用参数: -b:如果指标文件存在,先备份,再笼罩。-f:如果指标文件存在,强制笼罩。示例:mv t1.txt t2.txt #(文件->文件)将t1.txt重命名为t2.txtmv t1.txt t1/ t #(文件->目录)将t1.txt挪动到t1/中mv t1/ t2/ #(目录->目录)如果t2存在,则是将t1挪动到t2中;如果t2不存在,则是将t1重命名为t2cp:复制文件或目录。罕用参数: -a:通常在复制目录时应用,复制目录下所有文件且保留其链接、权限等文件属性。-r:如果源是一个目录,则递归复制目录。-f:笼罩已存在文件时不需询问。示例:cp -r t1/* t2/ #递归复制t1中的所有内容到t2中。cp -r t1/ t2/ #递归复制t1到t2中。rm:删除文件或目录。罕用参数: -f:强制删除。-r:递归删除。示例:rm -f t1.txt #强制删除t1.txtrm -rf t1/ #递归强制删除t1文件夹内的所有内容

October 5, 2021 · 1 min · jiezi

关于linux:linux时间格式化命令

在Shell环境里,咱们获取工夫的命令是date,针对不同的业务场景,咱们须要工夫进行格式化解决。Linux零碎罕用的工夫域%Y年(例如:2020,2021等)%m月(01..12)%d一个月的第几天(01..31)%H小时(00..23)%M分(00..59)%S秒(00..59)Linux中间接输出date> dateSat May 15 22:40:38 CST 2021date+'format'格式化工夫> date +'%Y-%m-%d'2021-05-15> date +'%Y/%m/%d %H:%M:%S'2021-05-15 22:51:27获取昨天的工夫> date -d 'yesterday' +'%Y-%m-%d %H:%M:%S'2021-05-14 22:53:57//或者> date -d 'today -a day' +'%Y-%m-%d %H:%M:%S'2021-05-14 22:53:57获取前两个小时的工夫> date -d 'today -2 hour' +'%Y-%m-%d %H:%M:%S'2021-05-15 20:55:58> date -d '-2 hours' +'%Y-%m-%d %H:%M:%S'2021-05-15 20:57:53获取指定日期前一天> date -d '2020-05-01 -1 day' +'%Y-%m-%d'2020-04-30将日期转换成工夫戳> date -d 'Sat May 15 23:00:27 CST 2021' +%s1621090827将工夫戳转换成工夫> date -d @1621090827Sat May 15 23:00:27 CST 2021将工夫戳转换成工夫,并格式化显示> date -d @1621090827 +'%Y-%m-%d %H:%M:%S'2021-05-15 23:00:27原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 4, 2021 · 1 min · jiezi

关于linux:在LVM中恢复已删除的逻辑卷

本文介绍如何复原已删除的逻辑卷,如要执行复原将应用vgcfgrestore命令。在执行任何逻辑卷治理相干工作时,如果意外的删除了逻辑卷,则能够应用它的数据还原性能来复原逻辑卷。在上面的步骤中,将演示如何通过删除卷组中的任何一个逻辑卷,并复原已删除的逻辑卷。 零碎环境Centos8 现有的文件系统在开始本文之前曾经创立了一个逻辑卷,外面并寄存了一些文件。 [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/nvme0n1p2 cl lvm2 a-- <19.00g <2.00g /dev/sda vg_data lvm2 a-- <20.00g 0 /dev/sdb vg_data lvm2 a-- <20.00g 0 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree cl 1 2 0 wz--n- <19.00g <2.00g vg_data 2 1 0 wz--n- 39.99g 0 [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root cl -wi-ao---- 15.00g swap cl -wi-ao---- 2.00g lv_data vg_data -wi-ao---- 39.99g [root@localhost ~]# df -h /dataFilesystem Size Used Avail Use% Mounted on/dev/mapper/vg_data-lv_data 40G 318M 40G 1% /data在LVM中复原已删除的逻辑卷在LVM中复原已删除的逻辑卷/data目录中的文件如下:在LVM中复原已删除的逻辑卷在LVM中复原已删除的逻辑卷 ...

October 4, 2021 · 3 min · jiezi

关于linux:linux之autojump命令

在终端的文件夹跳转十分麻烦, 须要敲长长的门路. alias 别名也不是很不便。 是通过记录进入过的目录到数据库来实现的, 所以必须是已经进入过的目录能力跳转.装置1. OS X举荐应用 Homebrew 装置 autojump > brew install autojumpmacOS 启动 Shell 主动读取的文件有/etc/profile~/.bash_profile~/.bash_login~/.profile所以只须要在下面其中一个文件加上[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh但如果终端工具应用的是 zsh,须要在~/.zshrc增加[[ -s `brew --prefix`/etc/autojump.sh ]] && . `brew --prefix`/etc/autojump.sh而后,运行 source <sourcefile>.2. Linux首先下载 autojump 源码> git clone git://github.com/joelthelion/autojump.git而后可装置或卸载> cd autojump> ./install.py or ./uninstall.py因为 Linux 下 Shell 启动会主动读取 ~/.bashrc 文件,所以将上面一行增加到该文件中> [[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh而后,运行source ~/.bashrc即可。 装置实现后,应用查看 autojump 版本。 $ autojump --versionautojump release-v21.1.22. 用法只有关上过的目录 autojump 才会记录,所以应用工夫越长,autojump 才会越智能。 ...

October 3, 2021 · 1 min · jiezi

关于linux:Linux中获取当前进程的绝对路径

通过readlink的形式获取。 bool GetExePath(std::string &path){ std::string exe_path(PATH_MAX, std::string::value_type()); auto exe_path_len = readlink("/proc/self/exe", &exe_path[0], exe_path.size()); if (exe_path_len < 0) { std::cerr << "readlink failed!, exe_path_len < 0"<< std::endl; return false; } else if (static_cast<size_t>(exe_path_len) >= exe_path.size()) { std::cerr << "readlink failed!, exe_path_len >= exe_path.size()"<< std::endl; return false; } exe_path.resize(exe_path_len); auto pos = exe_path.rfind('/'); if (pos == std::string::npos) { std::cerr << "exe_path.rfind fail!, exe_path.rfind = npos"<< std::endl; return false; } path = exe_path.substr(0, pos); return true;}

October 3, 2021 · 1 min · jiezi

关于linux:linux手误rm可能不需要跑路

对于linux下误删的文件,咱们是否真的无奈通过软件进行复原呢?误删文件还原能够分为两种状况一种是删除当前在过程存在删除信息一种是删除当前过程都找不到,只有借助于工具还原。明天只剖析文件被删除后,相干过程还存在的状况这种个别是有流动的过程存在继续规范输出或输入,到时文件被删除后,过程PID仍旧存在。这也是有些服务器删除一些文件然而磁盘不开释的起因案例演示创立一个文件> vim rumenz.txt123//保留退出> cat rumenz.txt123用tail -f关上rumenz.txt文件目标是让rumenz.txt被删除后,过程仍然存在> tail -f rumenz.txt新开一个终端删除rumenz.txt> rm -f rumenz.txt找到占用rumenz.txt的过程lsof查看删除的文件过程是否还存在。如没有装置请自行yum install lsof或者apt-get install lsof> lsof | grep delete | grep rumenztail 10222 root 3r REG 253,1 4 70911074 /root/test/rumenz.txt (deleted)过程ID是10222,从下面能够看出,以后文件状态为已删除(deleted)复原文件/proc/10222/fd:过程操作的文件描述符目录> cd /proc/10222/fd> ls -aldr-x------ 2 root root 0 May 11 21:41 .dr-xr-xr-x 9 root root 0 May 11 21:41 ..lrwx------ 1 root root 64 May 11 21:41 0 -> /dev/pts/1lrwx------ 1 root root 64 May 11 21:41 1 -> /dev/pts/1lrwx------ 1 root root 64 May 11 21:41 2 -> /dev/pts/1lr-x------ 1 root root 64 May 11 21:41 3 -> /root/test/rumenz.txt (deleted)lr-x------ 1 root root 64 May 11 21:41 4 -> anon_inode:inotify开始复原文件> cp 3 /root/test/rumenz.txt> cat /root/test/rumenz.txt123能复原的根本原因当程序运行时,操作系统会专门开拓一块内存区域,提供给以后过程应用,对于依赖的文件,操作系统会发放一个文件描述符,以便读写文件,当咱们执行rm -f删除文件时,其实只是删除了文件的目录索引节点,对于文件系统不可见,然而对于关上它的过程仍然可见,即依然能够应用先前发放的文件描述符读写文件,正是利用这样的原理,所以咱们能够应用I/O重定向的形式来复原文件。原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站 ...

October 1, 2021 · 1 min · jiezi

关于linux:网络端口详细介绍

In networking, a port is a virtual place on a machine that is open to connections from other machines. Every networked computer has a standard number of ports, and each port is reserved for certain types of communication. Think of ports for ships in a harbor: each shipping port is numbered, and different kinds of ships are supposed to go to specific shipping ports to unload cargo or passengers. Networking is the same way: certain types of communications are supposed to go to certain network ports. The difference is that the network ports are virtual; they are places for digital connections rather than physical connections. ...

October 1, 2021 · 3 min · jiezi

关于linux:linux线上CPU100排查

如何定位是哪个服务过程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载 .找出零碎中占用CPU最高的线程PID-c 显示服务残缺的门路和名称> top -c 不要退出top,间接输出P(必须大写),让CPU利用率从大到小排列比方找到的过程ID是1584找到最耗CPU的线程一个过程上面个别会有很多的线程,每个线程对CPU的使用率也是不一样的,咱们须要找到最耗CPU的线程ID top -Hp 1584 ,显示一个过程的线程运行信息列表 H打印线程信息p指定pid 同样不要退出top,键入P (大写p),线程依照CPU使用率排序 比方咱们找到CPU使用率使用率最高的线程ID是1592 将线程PID转化为16进制> printf "%x" 1592638查看堆栈> jstack 1584 | grep ‘0x638’ -C5 --color这样就能够找到引起CPU使用率过高的问题代码地位。原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

September 30, 2021 · 1 min · jiezi

关于linux:有了-CLI还要什么-GUI

图形用户操作界面(Graphical User Interfaces, GUI)对用户很敌对,易于上手,没有命令行操作界面(Command-Line Interfaces, CLI)这么平缓的学习曲线。但事实上,他们通常会耗费更多的计算资源,并且在自动化解决方面不如 CLI 那么容易且弱小。作为计算机专家,咱们心愿工作做得又快又好。当然咱们也晓得各种“黑话”一样的命令行可能不那么容易发现或者记住,所以咱们试着在这儿列举一些常见的 GUI 操作是如何在 CLI 实现的。 拷贝一个文件别再用拖拽或者 **CMD/CTRL + C**, **CMD/CTRL + V** 来复制文件了! 将 readme.txt 拷贝到 documents 目录下 $ cp readme.txt documents/创立文件正本不要再用**右键**来创立正本了! $ cp readme.txt readme.bak.txt更高级的写法: $ cp readme{,.bak}.txt# 注: 留神这里的 {} 起什么作用,能够试试 touch foo{1,2,3}.txt 而后看看后果如何拷贝一个目录也别拖拽目录了,也不要 **CMD/CTRL + C**, **CMD/CTRL + V** 来拷贝目录了! 把 myMusic 整个目录拷贝到 myMedia 目录上面 $ cp -a myMusic myMedia/ # 或者你也能够写成 $ cp -a myMusic/ myMedia/myMusic/创立目录正本也别用**右键**来创立目录正本了 $ cp -a myMusic/ myMedia/# 如果 `myMedia` 文件夹不存在的话$ cp -a myMusic myMedia/挪动一个文件没有什么拖拽文件,也没有 **CMD/CTRL + X**, **CMD/CTRL + V** 来剪切 ...

September 29, 2021 · 3 min · jiezi

关于linux:linux之登录式shell和非登录式shell

登录 shell 的路径理解两种形式之间的区别,就要先理解 shell 的配置文件:bash 的配置文件 全局配置文件 /etc/profile/etc/profile.d/*.sh/etc/bashrc集体配置文件 ~/.bash_profile~/.bashrc由上可知,bash 的配置文件别离为profile 类文件和bashrc 类文件: profile 类文件作用: 1.设定环境变量。2.运行命令或脚本(登录时运行的脚本)。bashrc 类文件配置作用: 设定本地变量。定义命令别名理解以上配置文件后,则:登录式 shell 读取配置 文件过程: /etc/profile –> /etc/profile.d/*.sh –> ~/.bash_profile –> ~/.bashrc –> /etc/bashrc非登录式 shell 读取配置 文件过程: ~/.bashrc –> /etc/bashrc –> /etc/prodile.d/*.sh 而登录式 shell 和非登录式 shell 的运行模式如下:登录式 shell: 失常通过某终端登录的 shell。su - username。su -l username。非登录式 shell: su username。图形终端下关上的命令窗口。主动执行的 shell 脚本。原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

September 28, 2021 · 1 min · jiezi

关于linux:国庆微信渐变国旗图像制作工具教程

国庆节要到了,抖音国庆头像忽然火起来了 秋高气爽, 在国庆到来之际, 让咱们一起换上新头像, 独特迎接伟大祖国母亲的生日! 国旗头像制作突变,你晓得怎么弄吗?还不理解的小伙伴也不必焦急,小编给大家筹备好了国旗头像制作突变工具 只须要关上链接,上传微信头像信息,而后会生成国庆突变头像,大家间接保留就能够啦! 工具在此↓↓↓ 突变国旗头像制作教程及工具!附链接! 以上就是良许教程网为各位朋友分享的Linux相干常识。

September 28, 2021 · 1 min · jiezi

关于linux:linux之秘钥登录

两台主机(服务器)秘钥登录流程图 咱们从A主机(右边)秘钥登录到B服务器(左边)A主机生成公钥生成公钥私钥,个别不须要非凡设置一路回车默认下一步即可> ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:SHA256:+ims1qKnA9kAUbwuaGmGLdg+V4w1PMj7RO4gMHI7NCU root@JDThe key's randomart image is:+---[RSA 2048]----+|.+. ||. E . ||. = o ||= = o * ||=%.o B oS ||O=O + =. ||+= o O. || + = *. . || oO.o .o |+----[SHA256]-----+查看公钥> ls -al ~/.ssh-rw------- 1 root root 1675 May 7 21:39 id_rsa //私钥-rw-r--r-- 1 root root 389 May 7 21:39 id_rsa.pub //公钥> cat id_rsa.pubssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDULg8kwT2rW8Z/r0h5lvO6KziZWV1roM/0eKVnkxeKOF9A0JAL46WF4ZA2XsNfG2camxTekC0ZwArB6uvFQTR8RZtDCwdsdsdsds6K3ytR/FOzira6z+7xbk6LvPylaCLfjfMmta04Q7dsdsdsdsdsds5MDr7oY73TWt2XToDA3FynMnl9MQjO4SoTU/Z1PiKsdOoCnbeP/O6KL+6sh9tbd5HoPPLm8LtDCeebZNhvZSulsbeTFZ5Z+HzPLostXJVhRFtiwUlaemAhXngVdIB5D9feXCYdQiP3NM0zAI94XUFCFyaSnZdv3+OTqHmxJ root@localid_rsa.pub公钥要发送到B服务器。B服务器增加A主机的公钥在B服务器对应登录账号的家目录下的.ssh/authorized_keys文件增加A主机的公钥 ...

September 27, 2021 · 1 min · jiezi

关于linux:linux-查看系统信息

1:uname$ uname --helpUsage: uname [OPTION]...Print certain system information. With no OPTION, same as -s. -a, --all print all information, in the following order, except omit -p and -i if unknown: -s, --kernel-name print the kernel name -n, --nodename print the network node hostname -r, --kernel-release print the kernel release -v, --kernel-version print the kernel version -m, --machine print the machine hardware name -p, --processor print the processor type or "unknown" -i, --hardware-platform print the hardware platform or "unknown" -o, --operating-system print the operating system --help display this help and exit --version output version information and exitGNU coreutils online help: <http://www.gnu.org/software/coreutils/>For complete documentation, run: info coreutils 'uname invocation'罕用 ...

September 27, 2021 · 3 min · jiezi

关于linux:Linux中监控磁盘分区和使用情况的几个工具

在文章中将探讨Linux中可用于监督磁盘应用状况的命令行实用程序,提供无关总大小容量、已用总量、文件系统信息和分区信息等。让咱们看看这些工具如何帮忙检索这些信息df命令df是一个Linux命令行实用程序,用于监督Linux磁盘应用状况。df命令显示文件系统磁盘应用状况详细信息的残缺摘要。通过-hT选项,它以易于浏览的格局显示无关文件系统、类型、磁盘总大小、已应用容量、残余容量,使用率以及磁盘装置地位等的详细信息。Linux中监控磁盘分区和应用状况的几个工具Linux中监控磁盘分区和应用状况的几个工具上面应用-ht选项,以便于读取的格局显示所有文件系统的应用状况及文件系统类型。 [root@localhost ~]# df -hTFilesystem Type Size Used Avail Use% Mounted ondevtmpfs devtmpfs 898M 0 898M 0% /devtmpfs tmpfs 910M 0 910M 0% /dev/shmtmpfs tmpfs 910M 29M 881M 4% /runtmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup/dev/mapper/centos-root xfs 37G 1.6G 36G 5% //dev/sda1 xfs 1014M 150M 865M 15% /boottmpfs tmpfs 182M 0 182M 0% /run/user/0Linux中监控磁盘分区和应用状况的几个工具Linux中监控磁盘分区和应用状况的几个工具 pydf命令pydf是python命令行实用工具,也是Linux中df命令的最佳代替办法之一。它的工作形式相似于df命令,但区别在于输入以不同的色彩突出显示。默认状况下pydf命令在CentOS 7.x和RHEL 7.x中不提供。如果须要装置pydf,须要先装置pip包管理器,而后应用pip装置pydf工具。 上面命令行应用yum装置pip包管理器:[root@localhost ~]# yum -y install python-pip 上面命令行是 更新pip包管理器:[root@localhost ~]# pip install --upgrade pip ...

September 27, 2021 · 1 min · jiezi

关于linux:看了这篇还不会Linux性能分析和优化你来打我

前言个别互联网的我的项目都是部署在linux服务器上的,如果linux服务器出了问题,那么咱们平时学习的高并发,稳定性之类的是没有任何意义的,所以对linux性能的把握就显得十分重要,当然很多同学可能感觉这些是运维同学的事件,然而我不这么认为,不论你是架构师,还是crud boy,对我的项目有个全局的掌控是一项十分重要的基本素质,所以总结了这篇文章,心愿对您有用,如果您感觉我写的还不错,看完记得点个赞,点个再看哦。咱们废话不必多说,间接进入正题。 影响linux服务器性能的因素cpuCPU是操作系统稳固运行的基本,CPU的速度与性能在很大水平上决定了零碎整体的性能,因而,CPU数量越多、主频越高,服务器性能也就绝对越好。 内存内存的大小也是影响Linux性能的一个重要的因素,内存太小,零碎过程将被阻塞,利用也将变得迟缓,甚至失去响应;内存太大,导致资源节约。 磁盘IO磁盘的I/O性能间接影响应用程序的性能,在一个有频繁读写的利用中,如果磁盘I/O性能得不到满足,就会导致利用停滞。好在现今的磁盘都采纳了很多办法来进步I/O性能,比方常见的磁盘RAID技术。 网络Linux下的各种利用,个别都是基于网络的,因而网络带宽也是影响性能的一个重要因素,低速的、不稳固的网络将导致网络应用程序的拜访阻塞,而稳固、高速的网络带宽,能够保障应用程序在网络上畅通无阻地运行。侥幸的是,当初的网络个别都是千兆带宽或光纤网络,带宽问题对应用程序性能造成的影响也在逐渐升高。 罕用的linux零碎性能监控的命令uptime(零碎整体性能评估) 这里须要留神的是:load average这个输入值,这三个值的大小个别不能大于零碎CPU的个数 那么如何查看cpu的个数呢?查看零碎cpu的信息 cat /proc/cpuinfo中的信息 其中cpu cores即为cpu的核数 也能够用cat /proc/cpuinfo |grep "cores"|uniq间接查看 [root@test ~]# cat /proc/cpuinfo |grep "cores"|uniqcpu cores : 2cpu的性能评估利用vmstat命令监控cpuvmstat 2 10 (每2秒监控一次 监控10次) procsr示意运行和期待cpu工夫片的过程数,这个值如果长期大于cpu的个数,则须要减少零碎cpu b示意期待资源的过程数 CPUus列显示了用户过程耗费CPU工夫百分比,us比拟高的时候,阐明用户过程耗费cpu的工夫多,如果长期大于50%,就须要优化程序和算法 sy列显示了内核过程耗费的cpu工夫百分比,sy值较高的时候,阐明内核耗费的cpu资源很多 依据教训,us+sy的参考值为80%,如果us+sy大于 80%阐明可能存在CPU资源有余。 利用sar命令监控零碎cpusar命令会减少零碎开销 然而影响不大 yum install sysstat装置sar命令 sar -u 3 5(u显示零碎所有cpu在采样工夫内的负载状态)%user:用户过程耗费cpu的工夫百分比 %nice:运行失常过程所耗费cpu的百分比 %system:零碎耗费cpu工夫百分比 %iowait:IO期待所占用cpu工夫百分比 %steal:内存在绝对缓和的环境下pagein强制对不同页面进行的steal操作 %idle:cpu处在闲暇工夫的百分比 内存性能评估利用free指令监控内存free -m #查看以M为单位的内存应用状况个别有这样一个教训公式: 应用程序可用内存/零碎物理内存>70%时,示意零碎内存资源十分短缺,不影响零碎性能。 应用程序可用内存/零碎物理内存<20%时,示意零碎内存资源紧缺,须要减少零碎内存。 20%<应用程序可用内存/零碎物理内存<70%时,示意零碎内存资源根本能满足利用需要,临时不影响零碎性能。 利用vmstat监控内存 swpd示意切换到内存替换去的内存数量(k),如果swpd的值不为0,或者比拟大,然而si,so的值长期为0,这种状况不必放心,不会影响性能 free示意闲暇的物理内存数量 buffer示意buffers cache的内存数量,个别对设施的读写才须要缓冲 cache示意page cached的内存数量。个别作为文件系统cached,频繁拜访的文件都会被cached,如果cache值较大,阐明cached的文件较多,如果此时IO中的bi比拟小,阐明文件系统效率比拟好 si示意由磁盘调入内存,也就是内存进入内存替换区的数量 so示意由内存调入磁盘,也就是内存替换区进入内存的数量个别状况下,so si的值都为0。如果si so的值长期不为0,则示意零碎内存不足,须要减少内存 ...

September 27, 2021 · 1 min · jiezi

关于linux:linux之软连接和硬连接的区别

硬连贯硬链接是通过索引节点进行的链接。在Linux中,多个文件指向同一个索引节点是容许的,像这样的链接就是硬链接。硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创立。如果删除硬链接对应的源文件,则硬链接文件依然存在,而且保留了原有的内容,这样能够起到避免因为误操作而谬误删除文件的作用。因为硬链接是有着雷同 inode 号仅文件名不同的文件,因而,删除一个硬链接文件并不影响其余有雷同 inode 号的文件。通过ln rumenz.txt rumenz123.txt创立不能对目录进行创立硬链接,只可对文件创建。以文件正本的模式存在,但不占用理论空间。文件名有雷同的 inode 及 data block。只有在同一个文件系统中能力创立,不能穿插文件系统进行硬链接的创立。删除其中一个硬链接文件并不影响其余有雷同inode号的文件。只能对已存在的文件进行创立。实用场景用于镜像数据文件,避免误删软连贯软链接(也叫符号链接)与硬链接不同,文件用户数据块中寄存的内容是另一文件的路径名的指向。软链接就是一个一般文件,只是数据块内容有点非凡。软链接可对文件或目录创立。软链接次要利用于以下两个方面:一是方便管理,例如能够把一个简单门路下的文件链接到一个简略门路下不便用户拜访;另一方面就是解决文件系统磁盘空间有余的状况。例如某个文件文件系统空间曾经用完了,然而当初必须在该文件系统下创立一个新的目录并存储大量的文件,那么能够把另一个残余空间较多的文件系统中的目录链接到该文件系统中,这样就能够很好的解决空间有余问题。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相干软连贯就变成了死链接。ln -s rumenz.txt rumenz123.txt是寄存另一个文件的门路的模式存在。可穿插文件系统创立 ,硬链接不能够。能够对目录进行链接。有本人的文件属性及权限等。可对不存在的文件或目录创立软链接。软链接可对文件或目录创立。创立软链接时,链接计数 i_nlink 不会减少。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相干软连贯被称为死链接(即 dangling link,若被指向门路文件被从新创立,死链接可复原为失常的软链接)。 无论是硬链接或软链接都不会将本来的档案复制一份,只会占用十分大量的磁碟空间。实用场景便于文件治理,将简单门路下的文件链接到简略门路下拜访。解决某个目录空间有余问题。怎么查看一个文件的硬连贯文件> ls -iltotal 81806727 -rw-r--r-- 2 root root 137 May 6 20:14 one.txt1806727 -rw-r--r-- 2 root root 137 May 6 20:14 tow.txt硬连贯文件的inode number是一样的.能够看出因为one.txt和tow.txt互为硬链接, 所以他们的inode number雷同.> find / -inum 1806727查看整个文件系统中有哪些文件是one.txt的硬连贯.怎么查看一个文件的软连贯> find -type l -exec ls -l {} \;| grep 'rumenz.txt'晓得一个软连贯文件,怎么找到该文件的实在门路// realpath 软连贯文件> realpath /etc/rc.local/etc/rc.d/rc.local原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

September 26, 2021 · 1 min · jiezi

关于linux:linux之mktemp命令

创立临时文件供 shell 脚本应用补充阐明mktemp 命令 被用来创立临时文件供 shell 脚本应用。命令语法mktemp(选项)(参数)命令选项-q:执行时若产生谬误,不会显示任何信息;-u:暂存文件会在mktemp完结前后行删除;-d:创立一个目录而非文件。命令参数文件:指定创立的临时文件。创立临时文件> mktemp test.XXXXtest.LUTA> mktemp test.XXXXXXtest.YgW9gf保留创立的临时文件> test=$(mktemp test.XXXXXX)> echo $testtest.vTqiVc创立长期目录> mktemp -d test.XXXXXXtest.CJmaBe原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门小站

September 25, 2021 · 1 min · jiezi

关于linux:实用工具-Linux-定时任务-crontab-命令详解

本文首发于 2016-11-23 10:24:45概述Linux 下的任务调度分为两类:零碎任务调度和用户任务调度。Linux 零碎工作是由 cron (crond) 这个零碎服务来管制的,这个零碎服务是默认启动的。用户本人设置的打算工作则应用 crontab 命令。 cron 配置文件在 Ubuntu/Debian 中,配置文件门路为 /etc/crontab(CentOS也相似),其内容为: # /etc/crontab: system-wide crontab# Unlike any other crontab you don't have to run the `crontab'# command to install the new version when you edit this file# and files in /etc/cron.d. These files also have username fields,# that none of the other crontabs do.SHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed17 * * * * root cd / && run-parts --report /etc/cron.hourly25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )#SHELL 环境变量用于指定零碎要应用的shell,此处为/bin/sh。PATH 环境变量指定了零碎执行命令的门路。也能够增加MAILTO变量,如果指定,则示意 crond 的工作执行信息将通过电子邮件发送给指定的用户。其余局部在后文具体讲述。用户定期要执行的工作,比方用户数据备份、定时邮件揭示等,都能够应用 crontab 工具来定制本人的打算工作。所有非root用户定义的 crontab 文件都被保留在 /var/spool/cron 目录中,其文件名与用户名统一。 ...

September 25, 2021 · 2 min · jiezi