关于linux:如何恢复-Linux-系统下被删除的文件

失落数据是任何用户都可能经验的最令人不安和苦楚的经验之一。一旦宝贵数据被删除或失落,就再也找不不回来通常会引发焦虑,让用户感到无助。值得庆幸的是,有几个工具能够用来复原 Linux 机器上被删除的文件。咱们尝试了一些数据恢复工具,能够帮忙您复原删除的文件,其中一个怀才不遇就是 TestDisk 数据恢复工具。 TestDisk 是一个开源的、功能强大的数据恢复工具,除了复原数据之外,还能够重建和复原疏导分区并修复分区表。它从 FAT、exFAT ext3、ext4 和 NTFS 等文件系统中复原被删除的文件,并将它们复制到另一个地位。TestDisk 是一个命令行数据恢复工具,这是它区别于其余数据恢复工具的特点之一。 在本指南中,咱们将演示如何应用 TestDisk 实用工具在 Linux 中复原被删除的文件。咱们将演示 TestDisk 如何在 Ubuntu 20.04 中从可挪动 USB 驱动器复原被删除的数据。 (1) 装置 TestDisk 工具在 Debian / Ubuntu 零碎中,更新软件包列表,而后装置 TestDisk,如下所示 $ sudo apt update$ sudo apt install testdisk 如果您正在运行 CentOS 8、RHEL 8、Rocky Linux 8、AlmaLinux 8,那么您首先须要装置 EPEL 存储库。 $ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm接下来,更新零碎,装置 Test disk,如下所示 $ sudo dnf update$ sudo dnf install testdisk 装置后,您能够通过查看 TestDisk 的版本,如下所示 ...

December 22, 2022 · 1 min · jiezi

关于linux:Linux环境下邮件发送特别慢emailsend

在执行邮件发送过程中,在本地环境发送特地快,简直没有卡顿,然而部署到linux环境就会在 email.send()处卡了30几秒 起因:可能是寻找本机路由失败解决办法:配置本机hosts文件,把对应机器名作为映射 vim /etc/hosts 本机ip 本机机器名 保留即可

December 21, 2022 · 1 min · jiezi

关于linux:如何在-Linux-中设置自定义-PATH-环境变量

在本教程中,咱们将介绍如何在 Linux 中设置自定义 $PATH 变量。这实用于所有 Linux 发行版,因而不用放心您正在应用的发行版。 有时,您可能心愿定义本人的自定义 $PATH 变量,在大多数状况下,操作系统并不提供该变量。这样做将使您可能从 Linux shell 中的任何地位调用变量,而无需指定变量或命令的残缺门路。 Linux 中的 $PATH 变量当您在 Linux shell 上键入并运行一个命令时,您基本上是在通知 shell 运行该程序。这甚至包含 mkdir、pwd、ls、mv 等根本命令。您的操作系统不会在多个目录之间来回穿梭,以查看是否有同名的程序或可执行文件。这些程序是名为 $PATH 的环境变量的一部分。 $PATH 环境变量通知 shell 哪些目录来查找可执行文件或程序,以响应用户运行的命令。cp,rm,mkdir 和 ls 等简略命令其实是在 /usr/bin 目录中可执行的小程序。 要查找 shell 命令的可执行程序的地位,只需运行 which 命令 $ which command 例如,要确定 cp 命令的地位,能够执行该命令 $ which cp能够找到可执行程序的其余地位包含 /usr/sbin,/usr/local/bin 和 /usr/local/sbin 要查看 $PATH 的内容,请运行以下 echo 命令 $ echo $PATH这将显示由冒号分隔的目录的列表,其中一些咱们在后面刚刚提到过。 设定自定义 $PATH在本例中,咱们在位于主目录的 scripts 目录中有一个名为 myscript.sh 的 shell 脚本,如图所示。这只是一个简略的脚本,在调用时打印出问候语。 ...

December 21, 2022 · 1 min · jiezi

关于linux:Linux设置环境变量

咱们通过设置Linux的环境变量,能够不便咱们的程序调用,比方我想把NodeJs退出环境变量 /root/nodejs/bin/永久性更改对所有用户失效退出环境变量vim /etc/profile咱们在最初一行退出 PATH="$PATH:/root/nodejs/bin/"PATH就是零碎的环境变量,而$PATH是之前零碎设置的环境变量,咱们要把他加上,而后在这个根底上退出咱们的nodejs目录(环境变量是通过:宰割的) 设置一个变量,并裸露进来export JVAV="比JAVA更弱小的语言"保留并退出 刷新环境变量咱们每次设置完环境变量,须要重启计算机能力失效,然而咱们能够通过source命令进行刷新,就不须要重启计算机了 source /etc/profile应用变量echo $JVAV对以后用户失效vim ~/.bash_profile编写形式如同/etc/profile,~/.bash_profile文件是咱们以后用户的配置文件,它每次开机时会被/etc/profile读取并载入 长期批改间接在以后命令行写入命令 export JVAV="比JAVA更弱小的语言"即可失效,不过这种办法设置的变量会在以后终端退出后革除

December 19, 2022 · 1 min · jiezi

关于linux:Linux终端退出后导致nohup程序退出

最近发现Linux终端退出时我运行的nohup程序也会跟着退出,起初发现是新版SSH减少了这个一个机制,尝试应用网上的办法 vim /usr/lib/systemd/system/sshd@.service而后退出 KillMode=process重新启动SSH后,实测没用 解决办法最初发现,敞开SSH窗口会敞开运行命令的session,导致nohup对应的过程被告诉须要一起shutdown。那么,咱们每次运行完nohup的程序后,手动用exit命令退出,这样就能保留运行程序了 exit实测胜利

December 19, 2022 · 1 min · jiezi

关于linux:Linux-Shell

个别应用#!/bin/bash来解析shell语法,当然还有zsh, ksh等,但个别用的最多的就是bash一、变量-e参数:解析echo中的特殊字符,如换行:echo -e "Hello \nWorld"1.1、 单引号 '如果变量被蕴含在单引号外面,那么变量不会被解析。$符号会原样输入。1.2、 双引号 "双引号会疏忽大多数特殊字符,然而不包含 $ 、 反引号 、 \所以不疏忽$意味着Shell在双引号外部能够进行变量名替换1.3、 反引号 `反引号要求Shell执行被它括起来的内容 1.4、 read申请输出,同时给多个变量赋值能够应用 read 命令一次性给多个变量赋值read 命令每个单词之间应用空格离开-p 参数: 提示信息:prompt read -p 'Please enter a Fruit and Animal:' fruit animalecho "fruit is $fruit, animal is $animal" -n 参数: 限度字符数 n 是 number的首字母用 -n 能够限度用户输出的字符串的最大长度(字符数)read -p 'Please enter your name(5 characters max): ' -n 5 nameecho -e "\nHello $name !" -t:限度输出工夫 t是time的首字母-t参数能够限定用户的输出工夫(以秒为单位)超过这个工夫,就不读取输出了#!/bin/bashread -p 'Please enter the name (you have 5 seconds): ' -t 5 nameecho -e "\nyour name is $name.... !"-s:暗藏输出内容 ...

December 17, 2022 · 1 min · jiezi

关于linux:linux-解决-npm-安装依赖时跳过下载-puppeteer

报错 ROR: Failed to download Chromium r722234! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.│ Error: read ECONNRESET│ at TLSWrap.onStreamRead (node:internal/stream_base_commons:217:20)│ -- ASYNC --解决 export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=0 && npm i援用 https://github.com/puppeteer/...

December 15, 2022 · 1 min · jiezi

关于linux:一次疑似-JVM-native-内存泄漏的排查实录

最近开发同学反馈,某定时工作服务疑似有内存透露,整个过程的内存占用比 Xmx 内存大不少,而且看起来是迟缓回升的,做了上面这次剖析,包含上面的内容: 剖析 JVM native 内存的一些常见思路内存增长了,怎么甄别是不是内存透露一个齐全不相熟的我的项目如何找到可能导致 native 内存调配的代码经典的 Linux 64M 内存问题到底是内存碎片还是内存透露 景象这个定时工作的利用设置 Xmx 为 925M,然而 native 内存缓存持续增长,然而增长到肯定阶段也会保持稳定,不再持续增长。 是内存透露吗?不论是不是内存透露,首先要搞清楚的是这段增长的内存是什么,土办法就是用 pmap -x 继续察看内存地址空间的变动。通过几个小时的 pmap 后盾运行,很快发现堆内存简直无变动,增长的区域都在 64M 内存空间,这就是经典的 glibc 内存调配 64M 问题。对于 Linux 64M 内存问题,我之前写过几篇相干的文章,大家感兴趣能够去看。 从这里根本能够确定是 native 带来的问题,接下来就是 dump 进去看外面到底存了什么。这里有几个办法 应用 gdb写一个脚本读取 /proc/<pid>/mem我本人用 Go 写的一个小工具(可能过段时间释放出来) 脚本内容如下:cat /proc/$1/maps | grep -Fv ".so" | grep " 0 " | awk '{print $1}' | grep $2 | ( IFS="-"while read a b; dodd if=/proc/$1/mem bs=$( getconf PAGESIZE ) iflag=skip_bytes,count_bytes \skip=$(( 0x$a )) count=$(( 0x$b - 0x$a )) of="$1_mem_$a.bin"done )复制代码执行这个脚本,传入过程号和起始地址就能够把对应内存 dump 到文件中。接下来能够通过 strings 初步查看文件外面有没有意识的字符串。通过 strings 发现很多 jar 包文件里的内容,局部内容如下: ...

December 15, 2022 · 2 min · jiezi

关于linux:Linux下最平凡也使用最频繁的命令ls-命令

ls命令介绍ls命令是英文 list 的简写模式。咱们用它来列出文件。它的用法就是在任何目录下间接执行 ls,或者在 ls 后接目录门路(包含相对路径和绝对路径)。当然咱们还能够应用一些选项,让咱们能够看到更多信息。 命令的选项很多,大飞认为比拟实用的的可能有如下几个,集体感觉联合英文解释最容易记住: -l 示意 long,以长列表格局显示文件的详细信息。这个选项十分有用,有点相似于咱们在Windows下的查看--详细信息-a 示意 all,列出所有文件(包含暗藏文件)-h 示意 human-readable,将文件大小主动进行单位换算,比拟易读-t 示意 time,按工夫程序将后果排序,最新批改的排最后面-r 示意 reverse,列出后果时,将程序反转,个别和 -t 搭配应用-R 示意 Recursive,递归显示所有子目录中的文件-S 示意 Size,按文件大小排序,最大的文件排最后面罕用组合ls -l [root@itdafei /]# ls -ltotal 20lrwxrwxrwx. 1 root root 7 Dec 6 05:49 bin -> usr/bindr-xr-xr-x. 5 root root 4096 Nov 15 07:53 bootdrwxr-xr-x. 21 root root 3440 Dec 6 06:30 devdrwxr-xr-x. 74 root root 8192 Dec 6 07:29 etcdrwxr-xr-x. 2 root root 6 Apr 11 2018 homelrwxrwxrwx. 1 root root 7 Dec 6 05:49 lib -> usr/liblrwxrwxrwx. 1 root root 9 Dec 6 05:49 lib64 -> usr/lib64drwxr-xr-x. 2 root root 6 Apr 11 2018 mediadrwxr-xr-x. 2 root root 6 Apr 11 2018 mntdrwxr-xr-x. 2 root root 6 Apr 11 2018 optdr-xr-xr-x. 118 root root 0 Dec 6 06:30 procdr-xr-x---. 2 root root 135 Dec 1 20:35 rootdrwxr-xr-x. 25 root root 740 Dec 6 07:20 runlrwxrwxrwx. 1 root root 8 Dec 6 05:49 sbin -> usr/sbindrwxr-xr-x. 2 root root 6 Apr 11 2018 srvdr-xr-xr-x. 13 root root 0 Dec 6 06:30 sysdrwxrwxrwt. 11 root root 4096 Dec 6 07:29 tmpdrwxr-xr-x. 13 root root 155 Nov 15 07:48 usrdrwxr-xr-x. 19 root root 267 Nov 15 07:55 varPS: 这个命令以长列表格局显示了根目录 / 下的文件列表。每行一个文件(或目录),仅仅晓得这么执行命令可能是不够的。在很多场景下,一些信息比方文件大小、类型、最初批改工夫对管理员来说很重要。这里每行的信息分为多个字段来别离示意了这些信息,咱们有必要理解各个字段的含意。ls -ltrh ...

December 14, 2022 · 3 min · jiezi

关于linux:linux知识点之usrpslnkilll和make

usr和目录构造1、/usr中的usr,指的是Unix System Resource,而不是User。 2、/usr/bin上面的都是零碎预装的可执行程序,会随着系统升级而扭转。 3、/usr/share/bin 能够通过web拜访的程序个别放在这里。 4、/usr/local/bin目录是给用户搁置本人的可执行程序的中央,举荐放在这里,不会被系统升级而笼罩同名文件。 5、local 目录下的都不是零碎预装,而是手动编译或者装置的程序 6、 /usr/sbin搁置一些用户装置的系统管理的程序。比方dhcpd、httpd、in.*d、netconfig、swap、tcpd、tcpdump。 ps命令执行ps -ef | grep nginx命令后,显示在最初面的是COMMAND,也就是所执行的指令。 比方上面的截图尽管nginx是同一个版本,但执行的指令是不同的。 详情: https://mp.weixin.qq.com/s?__... 有问题可群征询:https://public-1253796280.cos...

December 14, 2022 · 1 min · jiezi

关于linux:我为什么选择Wikijs记笔记

很长一段时间里,我都被困扰着,感觉陷入了笔记的泥潭,而积攒的如此多的笔记也没有造成我本人的常识体系。 之前的记笔记形式笔记的起源微信公众号技术博客纸质书籍官网文档PDF本人的零散想法网页之前的笔记软件有好几个: 为知笔记浏览器书签MarkDown 文档Calibre 电子书库文件夹Git 仓库集体博客...之前记笔记的形式有什么毛病零散,散落在各处没有关联,笔记与笔记之前是绝对独立的,没有造成一个残缺的双向链接的体系用到的时候想不起来在哪儿,又得从新搜寻剪藏收录的笔记,大概率前面是永远不会再看了笔记格局形形色色,不对立为知笔记是专有的格局,只能用它来看,迁徙难度大MarkDown 的图片是一大问题,有时候用的是本地电脑的相对链接,有时候是绝对链接,有时候又是原文链接(会导致防盗链或者图片挂掉),有时候又上传到本人图床Calibre 电子书库的应用老本高,简直没有为了看书而关上过集体博客有时候就会懒得更新。我的新一代记笔记的需要格局对立:都是MarkDown + 图片(集体图床) + 附件(能够是PDF,其余文档,音视频等)双向同步不便:能够通过Git,同步文件夹,WebDAV,S3等模式双向同步或单向备份双向链接:通过 [[双向链接]] 和 ![[]] 双向图片链接的这种格局,为所有文档建设关联,造成常识网络能够生成在线网页,不便在线浏览和编辑文档齐全,中文翻译,方便使用Wiki.js 劣势漂亮、直观、古代的界面具体丰盛的文档反对 Docker 部署治理功能强大定制化水平高能够抉择将 wiki 公开化或者窃密在线 MarkDown 编辑器很好用反对中文历史记录,版本最终,版本比照Git 双向同步查问性能自定义水平高且弱小,能够对接 ES云存储,反对:AWS S3,兼容的S3,集体云盘本地存储和备份开源集成丰盛将来会有插件对于 Wiki.js 的更多期待当然,我的需要 Wiki.js 并没有齐全满足,期待后续它可能在这些不便予以补足: 反对双向链接语法,和 Obsidian 高度兼容以上。 我的寻找过程我用过的笔记 Markdown Wiki 工具 本文由博客一文多发平台 OpenWrite 公布!

December 3, 2022 · 1 min · jiezi

关于linux:容器化应用系统上生产的最佳实践

前言最近忙的要死, . 上一周来了一次比 996 更猛的 907. 这周二终于有点遭不住了, 调休一天, 略微休憩一下. 同时手痒的不行, 把筹备了良久的重磅文章发上来哈哈. 不过工夫还是有点仓促, 所以这次就先开个头, 前面有工夫再细化. 容器化利用零碎上生产的最佳实际查看镜像、容器是否是用root启动以及配置其余特权. 如无必要, 一律应用普通用户.查看镜像LANG配置: LANG = en_US.UTF-8. 目标: 防止生产呈现 乱码等问题查看镜像时区配置: TZ=Asia/Shanghai 目标: 防止生产呈现时区不统一的问题配置内部化. 内部化伎俩有多种:同一个镜像, 从测试流转到生产. 给镜像打${version}或${gitCommitId}这一类的标签. 目标: 通过版本号或 commit id, 保障正确地的版本流转到生产探讨每个组件的日志输入优化:(可选) 依据须要, 装置 redis/kafka/rabbitmq 集群(并配置 exporter 监控)微服务参数优化:制作 DEV, TEST, UAT, Pre-PROD, PROD 的 DevOps pipeline.配置 Readiness 和 Liveness 探针.减少 JMX-exporter 监控和 Tracing 监控.NGINX conf 倡议减少: worker_processes 1; 而后按需调节正本数.(可选)配置 PDB, 指定降级或重启过程中:maxUnavailable 或minAvailable(特地实用于: 有状态利用. 典型如: redis, kafka, zookeeper 等)配置反亲和性podAntiAffinity. 保障同一组微服务/利用/组件尽可能打散在不同 node 上.5-6 操作步骤: ...

December 1, 2022 · 2 min · jiezi

关于linux:如何用-Prometheus-Operator-监控-K8s-集群外服务

前言后面系列文章中: Prometheus Operator 与 kube-prometheus 之一 - 简介 - 东风微鸣技术博客 (ewhisper.cn)监控 Kubernetes 集群证书过期工夫的三种计划 - 东风微鸣技术博客 (ewhisper.cn)介绍了 Prometheus Operator 相比 原生 Prometheus 的一些劣势, 其曾经被各大厂商和风行开源云组件宽泛采纳. 举荐应用. 然而实战中, 可能并不是所有组件都在 K8S 集群内, 如: LB、DB、全局DNS、云服务... 如何用 Prometheus Operator 监控它们? 这里有以下几种计划(算不上计划, 小技巧而已) 用 Prometheus Operator 监控 K8s 集群外服务计划如上文, 这里的 K8s 集群外服务, 指的是一些如 LB、DB、全局DNS、云服务... 的动态服务. 针对此类服务, 有以下监控计划: 通过 Prometheus Operator CR - prometheus spec; 这种计划和 Prometheus 其余配置耦合性较高;通过 external name Service + ServiceMonitor 这种计划有个前提, 即: 被监控的服务是域名;通过 Service + Endpoint + ServiceMonitor ...

November 30, 2022 · 2 min · jiezi

关于linux:容器CKA和CKS哪个难一点报名费是多少

对于IT行业来说,须要的就是高精尖人才,想在这一行站稳脚跟,就肯定须要可能证实本人能力的证书,目前从事容器技术方面工作的人,最常考的证书就是由Linux发行的容器相干证书,其中最多人考的就是CKA和CKS两项认证。然而很多人对于容器证书不甚了解,并不知道两个我的项目,考试费用是多少、考试内容,以及难易水平是什么,上面小编就对此一一进行介绍,有须要的人能够参考。 CKA容器 1、考试内容 集群架构,装置和配置:25% 工作负载和调度:15%服 务和网络:20% 存储:10% 故障排除:30% 2、考试费用 容器CKA认证费用个别在两千多,每年会有几次价格变动,或是提价,或是跌价,考生能够依据本人的须要来购买 3、考试模式线上考试,每个人都有两次考试机会 4、考试工夫 考试时长是120min,全程线上考试,线上监考 CKS认证 1、考试内容 集群装置:10% 集群强化:15% 零碎强化:15% 微服务破绽最小化:20% 供应链平安:20% 监控、日志记录和运行时平安:20% 2、考试费用 容器CKS认证费用个别在两千多,每年会有几次价格变动,或是提价,或是跌价,考生能够依据本人的须要来购买 3、考试模式 线上考试,每个人都有两次考试机会 4、考试工夫 考试时长是120min,全程线上考试,线上监考 容器认证最近价格很优惠,报名券只须要1418元,有趣味的人须要放松机会来报名考试,不晓得该怎么备考的,能够在认证大使上具体理解。

November 29, 2022 · 1 min · jiezi

关于linux:什么Coolbpf-不仅可以远程编译还可以发现网络抖动-龙蜥技术

近日,在 2022 云栖大会龙蜥峰会 eBPF & Linux 稳定性专场上,来自 eBPF 技术摸索 SIG Maintainer 的毛文安分享了《Coolbpf 的利用实际》技术演讲,以下为本次演讲内容: 一、为什么要反对可移植? 随着 BPF 技术的倒退,开发一个 BPF 程序变得越来越简略,只管 BPF 晋升了便利性,但 BPF 也始终在谋求另一个方面:可移植性。BPF 可移植性被定义为胜利编写并通过内核验证的一个 BPF 程序,能运行在不同内核版本。 进行 BPF 的移植有两个挑战: 不同内核版本数据的内存布局不同。内核类型和数据结构一直变动,构造体字段可能被移除或重命名。BPF CO-RE(Compile Once - Run Everywhere)是实现可移植性的一个伎俩。 为了反对 CORE,提供了以下组件: BTF:形容内核镜像,获取内核及BPF程序类型和代码的要害信息Clang 开释 bpf 程序重定位信息到.btf 段Libbpf CO-RE 依据.btf 段重定位 bpf 程序须要进行重定位的信息次要有三类: 构造体相干重定位,这部分和BTF非亲非故。Clang通过__builtin_preserve_access_index()记录成员偏移量。map fd 、全局变量(data、bss、rodata)、extern 的变量重定位,次要依赖于 ELF 的重定位机制,来更新 eBPF 指令的 imm 字段。子函数重定位,是为了将 eBPF 程序调用的子函数同主函数放在一起,便于一起加载到内核。 应用 libbpf 进行 BPF CORE 的开发步骤如下: 1.生成带所有内核类型的头文件 vmlinux.h,通过 bpftool 生成。 ...

November 29, 2022 · 2 min · jiezi

关于linux:如何在-K8S-集群范围使用-imagePullSecret

在这篇文章中,我将向你展现如何在 Kubernetes 中应用 imagePullSecrets。 imagePullSecrets 简介Kubernetes 在每个 Pod 或每个 Namespace 的根底上应用 imagePullSecrets 对公有容器注册表进行身份验证。要做到这一点,你须要创立一个机密与凭据: {% note warning %}⚠️ 正告: 当初随着公共镜像仓库(如:docker.io 等)开始对匿名用户进行限流,配置公共仓库的身份认证也变得有必要。{% endnote %} kubectl create secret docker-registry image-pull-secret \ -n <your-namespace> \ --docker-server=<your-registry-server> \ --docker-username=<your-name> \ --docker-password=<your-password> \ --docker-email=<your-email>例如配置 docker.io 的 pull secret: kubectl create secret docker-registry image-pull-secret-src \ -n imagepullsecret-patcher \ --docker-server=docker.io \ --docker-username=caseycui \ --docker-password=c874d654-xxxx-40c6-xxxx-xxxxxxxx89c2 \ --docker-email=cuikaidong@foxmail.com{% note info %}ℹ️ 信息: 如果 docker.io 启用了「2 阶段认证」,可能须要创立 Access Token(对应下面的 docker-password,创立链接在这里:账号 -> 平安{% endnote %} ...

November 29, 2022 · 2 min · jiezi

关于linux:如何保存同步多架构容器-Docker-镜像

前言随着容器、芯片技术的进一步倒退,以及绿色、节能、信创等方面的要求,多 CPU 架构的场景越来越常见。典型的利用场景包含: 信创:x86 服务器 + 鲲鹏 ARM 等信创服务器;个人电脑:苹果 Mac M1 + Windows 电脑(或旧的 Intel 芯片苹果电脑);Edge:数据中心应用 x86 服务器,边缘 Edge 端应用低功耗的 arm 边缘设施(如树莓派等)。容器云原生技术在这方面反对的是很好,然而理论应用中细节会有一些问题,举一个例子,就是:如何保留/同步多架构容器 Docker 镜像 本次先以将 Docker Hub 的镜像同步到本地镜像仓库为例阐明。 词汇表英文中文阐明multi-arch image多架构镜像 variant变体不同变体指的如:redis 镜像的 arm/v5 和 arm/v7 两种变体manifest清单 manifest-list清单(的)列表 layer(镜像)层 image index镜像索引OCI 专有名词,含意和 manifest-list 雷同manifest digest清单摘要 容器镜像如何反对多架构一个多架构镜像(A multi-arch image)是一种容器镜像,它能够组合不同架构体系(如 amd64 和 arm)的变体(variants),有时还能够组合不同操作系统(如 windows 和 linux)的变体。运行反对多架构的镜像时,容器客户端会主动抉择与你的 OS 和架构相匹配的镜像变体。 多架构镜像是基于镜像清单和清单列表实现的。 清单(Manifests)每个容器镜像都由一个“清单”示意。清单是一个 JSON 文件,用于惟一标识镜像,并援用其层(layer)及其相应的大小。 hello-world Linux 镜像的根本清单相似于以下内容: { "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "config": { "mediaType": "application/vnd.docker.container.image.v1+json", "size": 1510, "digest": "sha256:fbf289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e" }, "layers": [ { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 977, "digest": "sha256:2c930d010525941c1d56ec53b97bd057a67ae1865eebf042686d2a2d18271ced" } ]}清单列表 (Manifest-lists)多架构镜像的清单列表(通常称为 OCI 镜像 的镜像索引)是镜像的汇合(索引),您能够通过指定一个或多个镜像名称来创立一个。它包含无关每个镜像的详细信息,例如反对的操作系统和体系架构、大小和清单摘要 (manifest digest)。清单列表的应用形式与 docker pull 和 docker run 命令 中的镜像名称雷同。 ...

November 28, 2022 · 6 min · jiezi

关于linux:通过26个实例掌握-linux-find-命令

find 命令有什么用 ?find 命令在 Linux 和 UNIX 零碎中用于查找文件和目录,并可对其执行后续操作。 在 find 命令的帮忙下,系统管理员能够依据一些搜寻条件查找所需的文件。咱们能够应用单个或组合多个规范,而后能够对取得的后果执行操作。可选搜寻条件:文件名称、目录名称、创立日期、批改日期、属主、权限。 find 命令语法格局: $ find <path> {file-or-directory-name} <options> <action-on-result><action-on-result> 可选项: – delete : 删除文件或目录-exec command {}\; : 依据 find 命令的后果执行命令-ok command : 它将运行与 -exec 雷同的命令,但它将在理论执行之前提醒(1) 查找当前工作目录下的所有文件和目录若要只查找目录,请运行 $ find . -type d若要只查找文件,请运行 $ find . -type f(2) 列出特定目录下的所有文件假如咱们要列出 /home/linuxtechi/Downlods 目录下的所有文件和目录,运行 $ find /home/linuxtechi/Downloads如果只查找文件,请运行 $ find /home/linuxtechi/Downloads -type f如果只查找目录,请运行 $ find /home/linuxtechi/Downloads -type d (3) 从目录中按文件名查找文件要在特定目录中按名称查找文件,请运行 $ sudo find /home -type f -name cleanup.sh下面的命令将在 /home 文件夹中查找 cleanup.sh 文件。咱们还能够在 /var/log 目录中查找扩大名为 .log 的所有文件,运行 ...

November 27, 2022 · 3 min · jiezi

关于linux:如何通过-kubectl-进入-node-shell

概述假如这样一个场景: 生产环境中,Node 都须要通过堡垒机登录,然而 kubectl 是能够间接在个人电脑上登录的。 这种场景下,我想要通过 kubectl 登录到 K8S 集群里的 Node,能够实现吗? 能够的!实质上是利用容器(runC)的弱隔离(共享内核,Cgruop 等实现过程隔离)实现的权限逃逸。 如果贵司应用的一些商业容器平台(如:openshift,rancher)等,可能默认装置时就会通过 PSP scc 或 policy 等事后屏蔽掉这层隐患。然而如果是原生的 Kubernetes, 往往上面的方法是可行的。 原理概述先说实质,实质上就是: 容器(runC)是弱隔离 对于虚拟机来说,虚拟机是通过内核(kernel)级别的隔离,不同的虚拟机有不同的内核,所以安全性要高很多,从虚拟机逃逸到其所在的物理机上是十分艰难的。然而,容器(runC)是弱隔离,一台机器上的所有容器都共享同一个内核,他们之所以默认相互看不见,是通过 Cgroup、net namespace 等实现的过程级别的隔离。那么,退出你没有对容器的权限做进一步的限度,我是能够通过运行一个特权容器,间接进入到其所在的 node 上的。 具体步骤实用于 K8S 1.25 之前的版本。步骤很简略,就是创立上文说的这么一个特权容器,通过 nsenter command 进入 node shell。示例 yaml 如下: apiVersion: v1kind: Podmetadata: labels: run: nsenter-v0l86q name: nsenter-v0l86q namespace: defaultspec: containers: - command: - nsenter - --target - "1" - --mount - --uts - --ipc - --net - --pid - -- - bash - -l image: docker.io/library/alpine imagePullPolicy: Always name: nsenter securityContext: privileged: true stdin: true stdinOnce: true tty: true hostNetwork: true hostPID: true restartPolicy: Never tolerations: - key: CriticalAddonsOnly operator: Exists - effect: NoExecute operator: Exists间接 kubectl apply -f node-shell.yaml 即可进入 node shell。 ...

November 27, 2022 · 2 min · jiezi

关于linux:如何在-Linux-下删除分区

有时,您可能心愿删除 Linux 零碎上的一些磁盘分区,以复原或从新取得一些存储空间。只需几个简略的步骤,就能够在命令行上轻松实现这一工作。 应用 fdisk 工具删除一个规范分区fdisk 工具,也称为格式化磁盘,是一种 Linux 实用工具,默认随每个古代 Linux 发行版附带。该工具提供了磁盘分区性能,例如创立和删除磁盘分区、批改分区表和打印磁盘分区,这里仅举几个例子。 删除分区前,倡议先备份分区上的所有数据。 在咱们的设置中,咱们在零碎上附加了一个 USB 驱动器,其中有两个分区: /dev /sdc1 和 /dev /sdc2,为了确认分区的存在,咱们将依照以下形式运行 fdisk 实用程序。 $ sudo fdisk -l /dev/sdc 您也能够运行命令列出块卷上的分区,如下所示。 $ lsblk | grep sdc 咱们将应用 FDisk 实用程序删除第二个分区 /dev/sdc2 首先,调用 fdisk 命令行工具 $ sudo fdisk /dev/sdc这将启动一个交互式命令行。输出 p 打印驱动器的以后分区表,上面的输入确认了两个分区的存在。 因为咱们的工作是删除第二个分区,咱们将输出 "d" 用于删除,而后按 Enter。接下来,指定要删除的驱动器分区编号,在本例中,分区编号是 2,对应于 /dev/sdc2 您将收到音讯: Partition 2 has been deleted. 要保留对分区表所做的更改,输出 "w" 写入更改并按 ENTER。 要确认卷曾经被删除,再次运行 fdisk 实用程序,如下所示。 $ sudo fdisk /dev/sdc提醒该命令时,输出 "p" 以查看分区表。这次仅列出一个分区 : /dev /sdc1,这证实咱们已胜利删除了第二个分区。 ...

November 26, 2022 · 1 min · jiezi

关于linux:Linux输出转换命令-xargs

一、根本用法xargs命令的作用,是将规范输出转为命令行参数。 起因:大多数命令都不承受规范输出作为参数,只能间接在命令行输出参数,这导致无奈用管道命令传递参数 如上面 echo 不承受规范输入做参数,可用 xargs 做转换: $ echo "hello world" | xargs echohello world二、参数-d 指定分隔符默认状况下,xargs将换行符和空格作为分隔符,把规范输出分解成一个个命令行参数。 $ echo "one two three" | xargs mkdir下面代码中,mkdir会新建三个子目录,执行mkdir one two three。 -d参数能够更改分隔符 $ echo -e "a\tb\tc" | xargs -d "\t" echoa b c下面的命令指定制表符\t作为分隔符,所以a\tb\tc就转换成了三个命令行参数。echo命令的-e参数示意解释转义字符。 -p -t打印将要执行的命令-p参数打印出要执行的命令,询问用户是否要执行。 $ echo 'one two three' | xargs -p touchtouch one two three ?...-t参数则是打印出最终要执行的命令,而后间接执行,不须要用户确认。 $ echo 'one two three' | xargs -t rmrm one two three-I 传递参数起别名如果xargs要将命令行参数传给多个命令,能够应用-I参数。【貌似,会按空格或回车对参数进行宰割,而后反复执行命令,而不是当成命令的多个参数】 -I指定每一项命令行参数的代替字符串。 $ cat foo.txtonetwothree$ cat foo.txt | xargs -I file sh -c 'echo file; mkdir file'one twothree$ ls one two three下面代码中,foo.txt是一个三行的文本文件。咱们心愿对每一项命令行参数,执行两个命令(echo和mkdir),应用-I file示意file是命令行参数的代替字符串。执行命令时,具体的参数会代替掉echo file; mkdir file外面的两个file。 ...

November 25, 2022 · 1 min · jiezi

关于linux:使用Prometheus监控docker-compose方式部署的ES

需要收集 ES 的指标, 并进行展现和告警; 现状ES 通过 docker compose 装置所在环境的 K8S 集群有 Prometheus 和 AlertManager 及 Grafana计划复用现有的监控体系, 通过: Prometheus 监控 ES. 具体实现为: 采集端 elasticsearch_exporter能够监控的指标为: NameTypeCardinalityHelpelasticsearch_breakers_estimated_size_bytesgauge4Estimated size in bytes of breakerelasticsearch_breakers_limit_size_bytesgauge4Limit size in bytes for breakerelasticsearch_breakers_trippedcounter4tripped for breakerelasticsearch_cluster_health_active_primary_shardsgauge1The number of primary shards in your cluster. This is an aggregate total across all indices.elasticsearch_cluster_health_active_shardsgauge1Aggregate total of all shards across all indices, which includes replica shards.elasticsearch_cluster_health_delayed_unassigned_shardsgauge1Shards delayed to reduce reallocation overheadelasticsearch_cluster_health_initializing_shardsgauge1Count of shards that are being freshly created.elasticsearch_cluster_health_number_of_data_nodesgauge1Number of data nodes in the cluster.elasticsearch_cluster_health_number_of_in_flight_fetchgauge1The number of ongoing shard info requests.elasticsearch_cluster_health_number_of_nodesgauge1Number of nodes in the cluster.elasticsearch_cluster_health_number_of_pending_tasksgauge1Cluster level changes which have not yet been executedelasticsearch_cluster_health_task_max_waiting_in_queue_millisgauge1Max time in millis that a task is waiting in queue.elasticsearch_cluster_health_relocating_shardsgauge1The number of shards that are currently moving from one node to another node.elasticsearch_cluster_health_statusgauge3Whether all primary and replica shards are allocated.elasticsearch_cluster_health_timed_outgauge1Number of cluster health checks timed outelasticsearch_cluster_health_unassigned_shardsgauge1The number of shards that exist in the cluster state, but cannot be found in the cluster itself.elasticsearch_clustersettings_stats_max_shards_per_nodegauge0Current maximum number of shards per node setting.elasticsearch_filesystem_data_available_bytesgauge1Available space on block device in byteselasticsearch_filesystem_data_free_bytesgauge1Free space on block device in byteselasticsearch_filesystem_data_size_bytesgauge1Size of block device in byteselasticsearch_filesystem_io_stats_device_operations_countgauge1Count of disk operationselasticsearch_filesystem_io_stats_device_read_operations_countgauge1Count of disk read operationselasticsearch_filesystem_io_stats_device_write_operations_countgauge1Count of disk write operationselasticsearch_filesystem_io_stats_device_read_size_kilobytes_sumgauge1Total kilobytes read from diskelasticsearch_filesystem_io_stats_device_write_size_kilobytes_sumgauge1Total kilobytes written to diskelasticsearch_indices_active_queriesgauge1The number of currently active querieselasticsearch_indices_docsgauge1Count of documents on this nodeelasticsearch_indices_docs_deletedgauge1Count of deleted documents on this nodeelasticsearch_indices_docs_primarygauge Count of documents with only primary shards on all nodeselasticsearch_indices_fielddata_evictionscounter1Evictions from field dataelasticsearch_indices_fielddata_memory_size_bytesgauge1Field data cache memory usage in byteselasticsearch_indices_filter_cache_evictionscounter1Evictions from filter cacheelasticsearch_indices_filter_cache_memory_size_bytesgauge1Filter cache memory usage in byteselasticsearch_indices_flush_time_secondscounter1Cumulative flush time in secondselasticsearch_indices_flush_totalcounter1Total flusheselasticsearch_indices_get_exists_time_secondscounter1Total time get exists in secondselasticsearch_indices_get_exists_totalcounter1Total get exists operationselasticsearch_indices_get_missing_time_secondscounter1Total time of get missing in secondselasticsearch_indices_get_missing_totalcounter1Total get missingelasticsearch_indices_get_time_secondscounter1Total get time in seconds... ...

November 25, 2022 · 7 min · jiezi

关于linux:如何在-Linux-下安装-AWS-CLI

AWS CLI 是一个命令行界面,容许咱们与 AWS 帐户进行交互。开发人员和系统管理员应用 aws cli 执行日常流动和自动化。 本文介绍如何在 linux 零碎上逐渐装置最新版本的 AWS CLI。 必要条件Pre-Installed Linux SystemSudo User with admin rightsInternet Connectivity(1) 下载安装文件关上终端,执行 curl 命令下载 aws cli 安装文件 $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" 执行以下 ls 命令验证下载文件 $ ls -l awscliv2.zip-rw-rw-r-- 1 linuxtechi linuxtechi 47244662 Oct 20 10:53 awscliv2.zip$(2) 解压安装文件运行上面的 unzip 命令解压安装程序 $ unzip awscliv2.zip它将在当前工作目录中创立 aws 文件夹,并将所有须要的文件解压到其中。 $ ls -ld awsdrwxr-xr-x 3 linuxtechi linuxtechi 4096 Oct 19 17:18 aws$(3) 运行装置脚本要装置 aws cli,请执行以下 install 脚本 ...

November 24, 2022 · 1 min · jiezi

关于linux:Prometheus-Operator与kubeprometheus之二如何监控123-kubeadm集群

简介系列文章: 标签 - Prometheus - 东风微鸣技术博客 (ewhisper.cn)Prometheus Operator 的上一篇: Prometheus Operator 与 kube-prometheus 之一 - 简介 - 东风微鸣技术博客 (ewhisper.cn)kube-prometheus-stack捆绑了监控Kubernetes 集群所需的Prometheus Operator、Exporter、Rule、Grafana 和 AlertManager。 但要为应用kubeadm构建的Kubernetes集群定制Helm装置,还是有必要进行定制。 这一次联合近期比拟新的 Kubernetes 版本 v1.23+, 以及较为常见的装置形式 kubeadm, 来实战阐明: kubeadm 须要哪些非凡配置如何装置 Prometheus Operator: 通过 kube-prometheus-stack helm chart如何配置对 kubeadm 装置的集群的组件监控开始! 前提条件kubeadmhelm3kubeadm 须要哪些非凡配置为了前面可能失常通过 Prometheus Operator 获取到 kubeadm 搭建的 Kubernetes v1.23+ 集群的指标, 须要对 kubeadm 做一些非凡配置. 默认状况下,kubeadm将它的几个治理组件绑定到 node 的 localhost 127.0.0.1 地址上, 波及到: Kube Controller Manager、Kube Proxy和Kube Scheduler。 然而,对于监控来说,咱们须要这些端点的裸露,以便他们的指标能够被Prometheus提取。因而,咱们须要将这些组件裸露在他们的 0.0.0.0 地址上。 ...

November 24, 2022 · 3 min · jiezi

关于linux:Prometheus-AlertManager-生产实践直接根据-toemail-label-发-alert-到对应邮箱

概述通过之前的文章 - Prometheus Alertmanager 生产配置趟过的坑总结, 咱们曾经晓得 AlertManager 作为告警平台,是十分弱小的,能够去重 (deduplicating),分组 (grouping),并将它们路由 (routing) 到正确的接收器 (receiver) 集成,如电子邮件,微信,或钉钉。它还负责解决警报的静默/屏蔽 (silencing)、定时发送/不发送 (Mute) 和克制 (inhibition) 问题。 失常的 AlertManager 解决告警流程,是要通过 Alerts -> Route -> Receivers 这么一个步骤的 Alerts 里带了一些标签,如 env, team, job 等依据提前编辑好的 Route, 对 alerts 进行路由,比方 env=prod 的发给哪些 receiver, team=db 的发给哪些人。..在 Receivers 里曾经提前录入了这些须要解决 prod,解决 db 告警的 receivers 邮箱。告警这样发给对应的收件人。然而,如果我在 Alerts 里自带收件人信息(如邮箱),能不能间接应用?而不须要再录入所有的 receivers。 答案当然是能够!通过模板(template)实现这个需要。Let's GO! 模板(Template)简介AlertManager 模板最后的目标是为了对告警的音讯做定制化的。比方同样的 Alerts,我: 通过 SMS 发送,冀望是纯文本格式;通过 email 发送,冀望是 HTML 格局;通过钉钉、企微发送,冀望是 Markdown 格局;而且在这些渠道中, 题目是不同的排列组合告警内容也是不同的段落格局和用词(比方通过钉钉、企微会退出更多的 emoji)AlertManager 模板是和 Prometheus 模板一样,应用的同样是 Go template。当然,具体的数据和函数会有轻微的区别,因为在这里次要解决的是告警组而非单个告警。 ...

November 23, 2022 · 1 min · jiezi

关于linux:linux-ls统计文件个数

Linux下有三个命令: lsgrepwc通过这三个命令的组合能够统计目录下文件及文件夹的个数。 统计当前目录下文件的个数(不包含目录)ls -l |grep "^-"|wc -l统计当前目录下文件的个数(包含子目录)ls -l |grep "^d"|wc -l查看某目录下文件夹(目录)的个数(包含子目录)ls -lR|grep "^-"|wc -l

November 22, 2022 · 1 min · jiezi

关于linux:K8S-Pod-Sidecar-应用场景之一加入-NGINX-Sidecar-做反代和-web-服务器

Kubernetes Pod Sidecar 简介 Sidecar 是一个独立的容器,与 Kubernetes pod 中的利用容器一起运行,是一种辅助性的利用。 Sidecar 的常见辅助性性能有这么几种: 服务网格 (service mesh) 代理监控 Exporter(如 redis exporter)ConfigMap 或/和 Secret Reloader(如 Prometheus 的 Config Reloader)Auth Proxy(如 OAuth Proxy 等)7 层反向代理和 Web 服务器日志整合(审计日志独自发到某个日志渠道。..)Demo 或 AllInOne 利用(如 nextcloud 或 Jaeger AllInOne 等示例利用)...这里选几个场景细说一下,在服务网格的状况下,sidecar 负责从应用程序自身卸载服务网格中所有应用程序所需的性能--SSL/mTLS、流量路由、高可用性等,并施行部署各种高级公布模式,如断路器、金丝雀和蓝绿等。 作为数据立体组件,sidecar 通常由服务网格中的某种类型的管制立体治理。当 sidecar 路由利用流量并提供其余数据立体服务时,管制立体在必要时将 sidecars 注入 pod 并执行治理工作,例如更新 mTLS 证书并在须要时将其推送到适当的 sidecars。 日志整合场景下,Sidecar 被用来将多个利用实例的日志信息汇总并格式化为一个文件。 接下来进入本次的正题:将 NGINX (或 Caddy 等)作为 Sidecar 应用,次要用做反代和 web 服务器 场景假如假如有这么一个场景: 我在应用原生的 Prometheus AlertManager, 我曾经有 Ingress.我当初想要做 2 件事: ...

November 22, 2022 · 3 min · jiezi

关于linux:容器认证的考试难不难有几次考试机会

科技倒退是人类社会提高的能源,现在信息通信技术的倒退,让咱们的日常生活变得越来越便当,各个企业也纷纷转型,将本人的业务转到了线上,心愿抢占先机,取得更好得倒退。与此同时,市场对专业人才的需要也越来越大,越来越多的人抉择考技能证书,来帮忙本人取得更好的工作,其中容器认证就是很多人的首选,这是由LINUX基金会官网推出的认证,分为三个等级,给不同能力的人,进步本人的渠道。 容器认证等级 1、KCNA(Kubernetes and Cloud Native Associate) KCNA将展现考生对Kubernetes和云原生技术的基本知识,包含如何应用根本的kubectl命令部署应用程序、Kubernetes的架构 (容器、pods、节点、集群)、云原生环境和我的项目(存储、网络、GitOps、服务网格)及云原生平安的准则。 2、CKA( Certified Kubernetes Administrator)  CKA认证考试是由Linux基金会和云原生计算基金会(CNCF)创立的,以促成Kubernetes生态系统的继续倒退。该考试是一种近程在线、有监考、基于实操的认证考试,须要在运行Kubernetes的命令行中解决多个工作。CKA认证考试是专为Kubernetes管理员、云管理员和其余治理Kubernetes实例的IT业余人员而设的。 已取得认证的K8s管理员具备了进行根本装置以及配置和治理生产级Kubernetes集群的能力。他们将理解Kubernetes网络、存储、平安、保护、日志记录和监控、利用生命周期、故障排除、API对象原语等要害概念,并可能为最终用户建设根本的用例。 3、CKS(Certified Kubernetes Security Specialist) CKS是一项基于性能的认证考试,在模仿的实在环境中测试考生对Kubernetes和云平安的常识。取得CKS证书表明学员具备在构建、部署和运行时爱护基于容器的应用程序和Kubernetes平台的必要能力,并有资格在业余环境中执行这些工作。 容器认证考试模式 线上考试 容器认证考试工夫 120min 容器认证有效期 2年

November 21, 2022 · 1 min · jiezi

关于linux:家庭实验室系列文章电脑如何配置网络唤醒-WOL

前言其实这个专题很久很久之前就想写了,然而始终因为各种起因拖着没动笔。 因为没有资格,也没有钱在一线城市买房 (); 然而在要结婚之前,婚房又是刚需。我和太太最终一起在一线城市周边的某二线城市买了房。再之后,一起装修,她负责非电相干,我负责电 网相干的装修。家庭组网,家庭实验室就这么一步一步随着家庭的组建而组建了起来: 家庭有线无线组网智能家居NAS公网 IP 和 IPv6Wake Online (WOL)家庭网络安全 (看了防火墙日志,才晓得被攻打频率能有多高)玩转树莓派组建 Full Mesh VPN 网络手机 PAD 近程管制电脑...有了所谓的"家庭实验室", 我的本身专业技能有了更多试验机会和试炼场,对新的技术理解不再浮于外表;有了所谓的"家庭实验室", 即便两地奔走,也能通过手机看到咱们,以及小孩经验的每一个点点滴滴,幸福萦绕心头。.. 理工男难得这么矫情一下,此为前言。.. 系列文章: 标签 - HomeLab - 东风微鸣技术博客 (ewhisper.cn)Wake-on-LAN(WOL) 简介LAN 唤醒(WoL 或 WOL)是以太网或令牌环计算机网络规范,容许通过网络音讯关上或唤醒计算机。 音讯通常由在连贯到同一局域网的设施上执行的程序发送到指标计算机。 以太网连贯(包含家庭和工作网络、无线数据网络和 Internet 自身)都基于计算机之间发送的帧。 WoL 是应用一种非凡设计的称为魔术包的帧来实现的,魔术包被发送到网络中的所有计算机,其中包含要被唤醒的计算机。 魔术分组蕴含目的地计算机的 MAC 地址、内置在计算机中的每个网络接口卡(“NIC”)或其它以太网设施中的标识号,其使得它可能在网络上被惟一地辨认和寻址。 具备 LAN 唤醒性能的已关机或敞开的计算机将蕴含可能在零碎关机时以低功耗模式“侦听”传入数据包的网络设备。 如果接管到指向设施 MAC 地址的魔术包,网卡会向计算机的电源或主板发出信号,以启动零碎唤醒,其形式与按下电源按钮的形式雷同。 魔术分组在数据链路层(OSI 模型中的第 2 层)上被发送,并且当被发送时,应用网络播送地址被播送到给定网络上的所有附接的设施;不应用 IP 地址(OSI 模型中的第 3 层)。 因为 LAN 唤醒是基于播送技术构建的,因而通常只能在以后网络子网内应用。 不过,也有一些例外情况,LAN 唤醒实际上能够在任何网络上运维,只有配置和硬件适当,包含通过互联网进行近程唤醒。 为了使 LAN 唤醒工作,网络接口的某些局部须要放弃关上状态。这会耗费大量的待机功率,比失常工作功率少得多。 链路速度通常被升高到不节约功率的最低可能速度(例如,千兆以太网 NIC 仅维持 10 Mbit/s 的链路)。 ...

November 20, 2022 · 2 min · jiezi

关于linux:Liunx-Tar-归档命令实操讲解

在这篇文章中,咱们将通过理论例子学习 linux 下的 tar 命令。 tar 命令用于将多个文件和目录的归档文件创立为单个归档文件,归档文件的扩大名为tar。tar 能够应用 gzip 和 bzip2 技术进一步压缩归档文件。tar (tape archive) 磁带归档,用于从命令行创立和提取归档文件。Tar 还被视为命令行备份和复原实用程序。 根底语法 # tar <options> <files>可选参数 -c : create a new archive-f : Archive file name-t, –list : list the contents of an archive-x, –extract, –get : extract files from an archive-d, –diff, –compare : find differences between archive and file system–delete : Delete from the archive.-r, –append : append files to the end of an archive-v : Verbose output-u, –update : only append files newer than copy in archive-X, –exclude-from=file : exclude patterns listed in file-C, –directory=DIR: Change to DIR before performing any operations.-j, –bzip2 : Compress and extract archive through bzip2-J, –xz : Compress and extrach the archive through xz-z, –gzip : Compress and extract the archive through gzip留神:应用选项时, tar 命令中的连字符( - )是可选的。 ...

November 20, 2022 · 3 min · jiezi

关于linux:家庭实验室系列文章如何迁移树莓派系统到更大的-SD-卡

前言其实这个专题很久很久之前就想写了,然而始终因为各种起因拖着没动笔。 因为没有资格,也没有钱在一线城市买房 (); 然而在要结婚之前,婚房又是刚需。我和太太最终一起在一线城市周边的某二线城市买了房。再之后,一起装修,她负责非电相干,我负责电 网相干的装修。家庭组网,家庭实验室就这么一步一步随着家庭的组建而组建了起来: 家庭有线无线组网智能家居NAS公网 IP 和 IPv6Wake Online (WOL)家庭网络安全 (看了防火墙日志,才晓得被攻打频率能有多高)玩转树莓派组建 Full Mesh VPN 网络手机 PAD 近程管制电脑...有了所谓的"家庭实验室", 我的本身专业技能有了更多试验机会和试炼场,对新的技术理解不再浮于外表;有了所谓的"家庭实验室", 即便两地奔走,也能通过手机看到咱们,以及小孩经验的每一个点点滴滴,幸福萦绕心头。.. 理工男难得这么矫情一下,此为前言。.. 树莓派简介 Reference: 能够是你的小型,双显示平,台式电脑也能够是机器人大脑,智能家居核心,媒体核心,网络人工智能外围,工厂控制器等等。实质上是个硬件基于 arm64 CPU, 软件 OS 基于 Linux 的电脑/开发板/设施。..具备丰盛的接口: USB-CHDMI有线网卡...和良好的生态: 作为边缘设施 (IoT) 网关等作为软路由作为 NAS 多媒体核心...具备很高的可玩性和定制化的能力。 相熟 Linux 的对与树莓派能够轻松上手。 更换 SD 卡背景树莓派默认的存储是 micro SD(TF) 卡,刚开始我是用的 32G 的 TF 卡,性能也个别。 正好双十一,数码 3C 设施提价,就想着买个速度快的/容量大的 TF 卡做替换。 看了一圈,看中了这一款并下单: 看中的就是它的速度: 读取速度高达 190MB/s写入速度高达 130MB/s下单! 如何迁徙树莓派零碎到更大的 SD 卡?收到后,开干! 前提Linux 电脑 (MAC 也行,本次演示用 Linux 电脑;windows 电脑,能够抉择用傲梅的轻松备份)树莓派旧的 TF 卡新的 TF 卡和读卡器概述Linux 是基于文件的操作系统:Linux 以文件的模式对计算机中的数据和硬件资源进行治理,也就是彻底的所有皆文件,反映在 Linux 的文件类型上就是:一般文件、目录文件(也就是文件夹)、设施文件、链接文件、管道文件、套接字文件(数据通信的接口)等等。间接利用 dd 命令进行文件的全量迁徙 ...

November 19, 2022 · 2 min · jiezi

关于linux:如何在-Linux-系统中创建-LVM-分区

在本指南中,咱们将介绍如何在 Linux 中逐渐创立 lvm 分区。 LVM 是逻辑卷治理 (Logical Volume Management) 的缩写,它是 Linux 零碎上专门为服务器举荐的治理磁盘或存储的办法。LVM 分区的一个次要长处是咱们能够在线扩大它的大小,而不须要任何停机工夫。也能够缩小 LVM 分区,但不倡议。 为了达到演示的目标,我在我的 Ubuntu 22.04 零碎上附加了 15GB 的磁盘,咱们将从命令行在这个磁盘上创立 LVM 分区。 必备条件Raw disk attached to Linux systemLocal User with Sudo rightsPre-Installed lvm2 package(1) 辨认新附加的磁盘登录到您的零碎,关上终端并运行以下 dmesg 命令 $ sudo dmesg | grep -i sd在输入中,查找附加的大小为 15GB 的新磁盘 另一种办法是通过 fdisk 命令辨认新附加的磁盘 $ sudo fdisk -l | grep -i /dev/sd 从下面的输入能够看出新的附加盘是 /dev/sdb (2) 创立 PV (物理卷)在磁盘 /dev/sdb 上创立 PV 之前,确保装置了 lvm2 包。如果没有装置,则运行以下命令 ...

November 19, 2022 · 2 min · jiezi

关于linux:Iok-213-移植指南openEuler-2003-LTS-SP1

简介Iok是一款在屏幕上显示印度语言的键盘映射利用选用版本2.1.3装置指南https://openeuler.org/zh/docs...查看以后零碎版本信息cat /etc/os-release 兼容性查看下载iok-2.1.3 SRPMwget http://mirror.centos.org/centos/7/os/x86_64/Packages/iok-2.1.3-6.el7.x86_64.rpm下载x2openEuler工具下载指引:https://www.openeuler.org/zh/other/migration/部署工具rpm -ivh x2openEuler-2.0.0-1.x86_64.rpm留神:装置rpm时须要应用root用户,且目前须要网络(用于下载安装依赖)留神:依据提醒装置依赖包如bzip2-devel等su x2openEulerx2openEuler redis-db -init顺次录入redis数据库的ip:127.0.0.1端口:6379数据库索引号(0-16):0明码(工具会对明码加密解决):如果redis明码没有设置或者为空时,间接回车即可x2openEuler init source_centos7.6-openEuler20.03-LTS-SP1.tar.gz备注:x2openEuler应用rpm装置实现后会在/opt/x2openEuler目录下带有source_centos7.6-openEuler20.03-LTS-SP1.tar.gz这个默认资源包须要反对centos8.2到openEuler20.03-LTS-SP1的评估,则需获取对应的动态资源包导入,如对应的资源包为source_centos8.2-openEuler20.03-LTS-SP1.tar.gz,导入此包命令:x2openEuler init source_centos8.2-openEuler20.03-LTS-SP1.tar.gz,请示状况抉择对应的资源包扫描软件x2openEuler scan iok-2.1.3-6.el7.x86_64.rpm留神要剖析的移植文件须要有可能让x2openEuler用户能够读取的权限扫描实现后会在/opt/x2openEuler/output目录生成html格局的报告查看评估后果软件兼容性评估报告分三块内容展现软件兼容性,别离是依赖包兼容性、C/C++接口兼容性、java接口兼容性,依赖包兼容性反映了软件包装置过程中的间接依赖,非100%表明无奈正确装置;接口兼容性反映的是单个软件运行过程中对其余软件包、动静库或零碎接口的调用变动,非100%表明在某个性能调用时可能会触发异样,未调用到时可能体现失常;局部后果倡议人工复核,最终软件包应用建优先级倡议 openEuler已移植包>openEuler上人工重编译包>centos软件包。 后果:依据依赖报告可知,iok移植到openEuler 20.03 LTS SP1须要解决unique3依赖问题依赖包引入在openEuler/oec-application仓库中发动issue仓库地址:https://gitee.com/openeuler/o... 继续追踪issue至缺失的依赖包被引入openEuler 20.03 LTS SP1 的YUM repo中构建流程当缺失的依赖包被引入后可进行获取iok的Centos 7.6.1810 SRPM包在openEuler 20.03 LTS SP1上构建二进制包构建二进制包yum install -y rpm-build提供rpmbuild命令从网络装置SRPM包rpm -i https://vault.centos.org/7.6.1810/os/Source/SPackages/iok-2.1.3-6.el7.src.rpm装置依赖yum-builddep -y ~/rpmbuild/SPECS/iok.spec构建二进制包rpmbuild -bb ~/rpmbuild/SPECS/iok.spec二进制包装置rpm -i ~/rpmbuild/RPMS/x86_64/*.rpm查看二进制文件which iok

November 7, 2022 · 1 min · jiezi

关于linux:sed中的转义字符

SED命令中的特殊字符SED宰割符号默认状况下,sed的宰割符是反斜杠(/),如's/abc/xyz/g',会把abc替换为xyz,如下所示: echo "this is abc" | sed 's/abc/xyz/g'this is xyz如果输出源中有宰割符,则咱们须要对宰割符进行本义,如下所示: echo "this is /a/b/c" | sed 's/\/a\/b\/c/\/x\/y\/z/g'this is /x/y/z这样性能是能够实现,但看起来有点目迷五色,再长一些就很难读懂,特地是在输出源有门路的状况下,看起来更乱。而且写的时候略微不留神就错了,如少写了一个本义,则会报错。如下所示: echo "this is /a/b/c" | sed 's//a\/b\/c/\x\/y\/z/g'sed:-e 表达式 #1,字符 12:“s”的未知选项a的后面少写了转义字符,则sed报错。sed是容许其余分隔符的:不论什么字符,紧跟着s前面的都会被认为是分隔符。如 [[email protected] ~]$ echo "this is /a/b/c" | sed 's#/a/b/c#/x/y/z#g'this is /x/y/z[[email protected] ~]$ echo "this is /a/b/c" | sed '[email protected]/a/b/[email protected]/x/y/[email protected]'this is /x/y/z[[email protected] ~]$ echo "this is /a/b/c" | sed 's!/a/b/c!/x/y/z!g'this is /x/y/z[[email protected] ~]$ echo "this is /a/b/c" | sed 's|/a/b/c|/x/y/z|g'this is /x/y/z[[email protected] ~]$ echo "this is /a/b/c" | sed 's_/a/b/c_/x/y/z_g'this is /x/y/z这些紧跟在s前面的字符(#、@、!、|、_)都能够作为分隔符,换成这样的表达方式就会清晰很多,举荐应用竖线(|)。当然,如果是输出源/输入内容中有分隔符,仍然须要应用反斜杠进行本义。 ...

November 7, 2022 · 1 min · jiezi

关于linux:linux-pgrep-和-pkill-命令使用案例

Linux 深受开发人员和爱好者的青睐。您能够做许多通常在 windows 和 OSX 等操作系统上不能做的事件。 对于程序员、开发人员以及任何想要正确理解操作系统的人来说,Linux 是最好的操作系统。当初 Linux 有很多性能和能力。明天您将学习 Linux 的 pgrep 和 pkill 命令,以及如何应用它们让您的 Linux 体验更丝滑。顾名思义,pgrep 命令用于依据过程名搜寻过程,pkill 命令将依据过程名终止或杀死过程。 前置条件A Linux operating systempgrep 命令语法: pgrep [options] pattern 少数 Linux 用户都意识 grep 命令,该命令用于查找特定的单词或字符。pgrep 的工作原理简直雷同。搜寻正在零碎上运行的过程 (基于名称) 时应用 pgrep 命令。 (1) 列印特定用户领有的过程 ID (-u)pgrep 列出与指定的条件相匹配的过程 id。例如:列出所有 apache 用户领有的 httpd 过程。 [[email protected] ~]# pgrep -u apache httpd12741275127812821283128412861291[[email protected] ~]#(2) 列出多个用户领有的所有过程假如咱们要列出 root 和 apache 用户领有的所有过程,执行以下命令 [[email protected] ~]# pgrep -u apache,root在这里,用户之间用逗号 (,) 分隔。 ...

November 5, 2022 · 2 min · jiezi

关于linux:圆满落幕回顾-eBPF-技术的发展与挑战

11 月 3 日,2022 云栖大会 eBPF & Linux 稳定性专场于杭州云栖小镇圆满结束。本次专场论坛是龙蜥 3 大 workshop 系列,特地邀请了高校师生、手机和平安大厂,一起探讨 eBPF 在平安和网络的最佳利用和实际,以及 Linux 在手机和服务器上的运维教训分享。 (图/专场嘉宾合照) eBPF & Linux 稳定性专场是由龙蜥零碎运维 SIG 和 eBPF 技术摸索 SIG 协办,收场主持人毛文安为大家介绍了这两个 SIG 的状况。为大家分享这两大 SIG 的愿景和指标,以及以后 SIG 的重点项目状况和 SIG 的下一步布局。也欢送大家在龙蜥官网 SIG 组查看详情。 工欲善其事,必先利其器。零碎运维 SIG 推出的 SysAK 工具集,是通过对过往百万服务器运维教训进行的总结,让咱们进一步揭开这个工具的底细,并且看看它的利用实际有哪些,阿里云高级技术专家、龙蜥零碎运维 SIG Maintainer 张毅分享了主题为《SysAK 的利用实际》的演讲。 他介绍了龙蜥社区运维 SIG 出品的诊断工具集 SysAK 的应用场景,以及其核心技术架构。重点介绍了监控模式的相干组件,以及怎么联合龙蜥 OS、SysAK 的加强特色,去做疑难问题和零碎衰弱度的监控。最初联合目前运维趋势,介绍了 SysAK 将来利用诊断及插件化的布局路线。 eBPF 给咱们带来了更多可能,西安邮电大学传授、 eBPF技术摸索SIG Owner陈莉君做了《eBPF 技术的倒退与挑战》主题分享。陈莉君传授首先从传统的操作系统模型动手,阐明 50 年来操作系统模型和过程模型的现状,并论述 eBPF 的引入为什么突破了这种模型,而后,通过业界雨后春笋般 eBPF 开源我的项目的呈现,重点介绍了 Linux 内核之旅社区在推动 eBPF 在国内倒退所做的相干事件,最初,以 eBPF 在内核可编程化、易用性等方面的倒退为抓手,介绍了 eBPF 技术面临的时机和挑战。 ...

November 3, 2022 · 1 min · jiezi

关于linux:安装-ParrotOS518-手动分区教程

绪硬盘分区有三种, 主磁盘分区、扩大磁盘分区、逻辑分区1个硬盘中主分区至多有1个, 最多4个. 扩大分区能够没有, 最多1个.主分区+扩大分区总共不能超过4个. 逻辑分区能够有若干个boot分区最好抉择主分区 步骤装置ParrotOS-Linux最好留有40GB以上的磁盘空间, 当初假如有闲暇空间50GB. 在安装程序分区界面选中闲暇空间,点击 "新建+", 会呈现复选框 "主分区" 和 "扩大分区". 抉择 "扩大分区", 给 "扩大分区" 调配49.5G的空间. "扩大分区"在这个"扩大分区"内, 简略地分为 " 根分区/ " 和 " linuxswap替换空间 " 和 " /home ", 不嫌麻烦的话能够分更多更具体的分区. " 根分区/ " 最大,给 32G, 文件系统类型btrfs." linuxswap替换空间 " 给2G.扩大分区内剩下的空间交给 "/home", 文件系统类型btrfs."主分区"剩下的0.5G就是 "/boot "分区, 其实 "/boot" 用300~400M就曾经足够了, 这里图不便换算而已. 抉择主分区, 挂载点/boot, 标记boot. 文件系统类型的话, 如果是技术比拟新的磁盘能够选 btrfs , 如果是技术老旧的磁盘便抉择fat32. 报错装置进度到91%时报错: " /usr/sbin/sources-media -u . 600秒内没有输入,外部命令谬误 ", 这个报错翻遍了上下左右也没有找到相干文章.但此时业已根本装置实现, 点击勾销后, 重启, 便能够进入零碎了. ...

November 1, 2022 · 1 min · jiezi

关于linux:ubuntu中cp和mv命令显示进度条和速度

装置GCC环境apt install build-essential下载coreutils压缩包和补丁包,全程必须应用普通用户操作,如果用root用户操作,后续编译装置会报错 压缩包下载地址:http://ftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.xz补丁下载地址:https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.8-8.32.patch装置补丁 解压压缩包 tar Jxvf coreutils-8.32.tar.xz把补丁移到压缩目录上面 mv advcpmv-0.8-8.32.patch coreutils-8.32进入目录 cd coreutils-8.32/ 打上补丁 patch -p1 -i advcpmv-0.8-8.32.patch 执行 ./configure, 实现后获取执行状态echo $?, 0代表胜利执行make生成文件测试cp mv命令是否无效 进入src目录 cd src/执行cp -ig命令,操作实现会呈现执行工夫、平均速度 执行mv -ig命令,操作实现会呈现执行工夫、平均速度 替换原来的cp mv 将cp mv文件复制到/usr/local/bin/目录上面 sudo cp cp /usr/local/bin/sudo cp mv /usr/local/bin/ 在~/.bashrc增加别名 alias mv='mv -ig'alias cp='cp -ig' 让别名失效source .bashrc测试是否失效(经测试雷同目录改名,不会有进度)

November 1, 2022 · 1 min · jiezi

关于linux:Linux安装ffmpeg并截取图片和视频的缩略图使用

Linux装置ffmpeg并截取图片和视频的缩略图应用官网下载地址: http://www.ffmpeg.org/downloa... 我这里应用版本: ffmpeg_3.2_repo.tar.gz 能够百度网盘分享给大家装置的环境为 Centos 64位操作系统装置时须为 root 用户进行操作#解压tar -zxvf ffmpeg_3.2_repo.tar.gz#进入目录cd ffmpeg_3.2_repo#装置可能须要一点工夫sh setup.sh截取图片缩略图命令ffmpeg -i a.png -y -vf scale=100:100/a thumb.jpga.png 原图片100:100 缩略图宽:缩略图高thumb.jpg 缩略图片截取视频第一帧缩略图命令ffmpeg -i bb.mp4 -y -vframes 1 -vf scale=100:100/a thumb.jpgbb.mp4 原视频100:100 缩略图宽:缩略图高thumb.jpg 缩略图片调用java命令生成缩略图工具类package com.beyond.utils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.BufferedReader;import java.io.Closeable;import java.io.File;import java.io.InputStreamReader;/** * 执行shell命令ffmpeg工具类 liang */public class ShellCommandUtil { private static final Logger logger = LoggerFactory.getLogger(ShellCommandUtil.class); /** * * @param sourceFile 原文件门路 * @param thumbFile 指标文件门路 * @param thumbWidth 宽度 * @param thumbHigh 高度 * @return * ffmpeg -i a.png -y -vf scale=100:100/a thumb.jpg */ public static boolean ffmpegImg(String sourceFile, String thumbFile, String thumbWidth, String thumbHigh){ String cmd = " ffmpeg -i " + sourceFile + " -y -vf scale=" + thumbWidth + ":" + thumbHigh + "/a " + thumbFile; execCmd(cmd, null); logger.info("ShellCommandUtil---ffmpegImg==", cmd); File file = new File(thumbFile); if(!file.exists()){ return false; } return true; } /** * * @param sourceFile * @param thumbFile * @param thumbWidth * @param thumbHigh * @return * ffmpeg -i bb.mp4 -y -vframes 1 -vf scale=100:100/a thumb.jpg */ public static boolean ffmpegVideo(String sourceFile, String thumbFile, String thumbWidth, String thumbHigh){ String cmd = " ffmpeg -i " + sourceFile + " -y -vframes 1 -vf scale=" + thumbWidth + ":" + thumbHigh + "/a " + thumbFile; execCmd(cmd, null); logger.info("ShellCommandUtil---ffmpegVideo==", cmd); File file = new File(thumbFile); if(!file.exists()){ return false; } return true; } /** * 执行系统命令, 返回执行后果 * @param cmd 须要执行的命令 * @param dir 执行命令的子过程的工作目录, null 示意和以后主过程工作目录雷同 */ public static String execCmd(String cmd, File dir) { StringBuilder result = new StringBuilder(); Process process = null; BufferedReader bufrIn = null; BufferedReader bufrError = null; try { String[] commond = {"/bin/sh","-c",cmd}; // 执行命令, 返回一个子过程对象(命令在子过程中执行) process = Runtime.getRuntime().exec(commond, null, dir); // 办法阻塞, 期待命令执行实现(胜利会返回0) process.waitFor(); // 获取命令执行后果, 有两个后果: 失常的输入 和 谬误的输入(PS: 子过程的输入就是主过程的输出) bufrIn = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8")); bufrError = new BufferedReader(new InputStreamReader(process.getErrorStream(), "UTF-8")); // 读取输入 String line = null; while ((line = bufrIn.readLine()) != null) { result.append(line).append('\n'); } while ((line = bufrError.readLine()) != null) { result.append(line).append('\n'); } }catch (Exception e){ e.printStackTrace(); }finally { closeStream(bufrIn); closeStream(bufrError); // 销毁子过程 if (process != null) { process.destroy(); } } // 返回执行后果 return result.toString(); } private static void closeStream(Closeable stream) { if (stream != null) { try { stream.close(); } catch (Exception e) { e.printStackTrace(); } } }}

November 1, 2022 · 2 min · jiezi

关于linux:Linux-设置了密钥后登录仍然需要密码问题排查

依照网上教程,在 debian 10 服务器上增加公钥后,在本地 vscode 软件用密钥登录时依然要求输出明码.排查过程: /etc/ssh/sshd_config 文件内容没问题:# 2022年批改 容许密钥登录Port 119PubkeyAuthentication yesPasswordAuthentication yes公钥文件 /root/.ssh/authorized_keys 内容没问题;文件权限没问题: .ssh: 700.ssh/authorized_keys:600所有都这么失常. 不死心,而后我用终端登录测试的时候终于发现了问题: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: UNPROTECTED PRIVATE KEY FILE! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Permissions 0644 for '/home/gege/.ssh/id_rsa' are too open.It is required that your private key files are NOT accessible by others.This private key will be ignored.Load key "/home/gege/.ssh/id_rsa": bad permissions[email protected]'s password: 腾讯翻译了一下,竟然是本地的密钥文件权限太凋谢...好吧,当初问题的解决办法就很显著了: 把本地的 id_rsa 密钥文件权限改为 600 ,接着就能够失常登录了.

October 30, 2022 · 1 min · jiezi

关于linux:OpenWRT实现NAT64DNS64

OpenWRT实现NAT64/DNS64连贯到外围路由器# 连贯到外围路由器[C:\~]$ ssh [email protected]Connecting to 10.0.0.1:22...Connection established.To escape to local shell, press 'Ctrl+Alt+]'.WARNING! The remote SSH server rejected X11 forwarding request.BusyBox v1.35.0 (2022-10-23 20:45:02 UTC) built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt 22.03.0, r19685-512e76967f -----------------------------------------------------[email protected]:~# [email protected]:~# 测试拜访IPv6是否失常# 测试拜访IPv6是否失常[email protected]:~# ping www.oiox.cn -6PING www.oiox.cn (2409:8c44:2:160:50::): 56 data bytes64 bytes from 2409:8c44:2:160:50::: seq=0 ttl=56 time=23.455 ms64 bytes from 2409:8c44:2:160:50::: seq=1 ttl=56 time=22.949 ms64 bytes from 2409:8c44:2:160:50::: seq=2 ttl=56 time=23.338 ms64 bytes from 2409:8c44:2:160:50::: seq=3 ttl=56 time=23.695 ms^C--- www.oiox.cn ping statistics ---4 packets transmitted, 4 packets received, 0% packet lossround-trip min/avg/max = 22.949/23.359/23.695 ms装置tayga实现NAT64# 装置tayga实现NAT64[email protected]:~# opkg update[email protected]:~# opkg install tayga配置/etc/config/network文件# 配置/etc/config/network文件# 重点配置 globals 和 interface 'nat64'config globals 'globals' option ula_prefix 'ddbe:48ec:56c6::/48'config interface 'nat64' option proto 'tayga' option ifname 'tayga-nat64' option ipv4_addr '192.168.1.1' option prefix 'ddbe:48ec:56c6:1111::/96' option dynamic_pool '192.168.1.0/24' option accept_ra '0' option send_rs '0' # 残缺配置如下[email protected]:~# vim /etc/config/network[email protected]:~# cat /etc/config/network config interface 'loopback' option device 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0'config globals 'globals' option ula_prefix 'ddbe:48ec:56c6::/48'config device option name 'br-lan' option type 'bridge' list ports 'eth0' list ports 'eth1' list ports 'eth2'config interface 'lan' option device 'br-lan' option proto 'static' option ipaddr '10.0.0.1' option netmask '255.0.0.0' option ip6assign '64'config interface 'wan' option proto 'dhcp' option device 'eth3'config interface 'wan6' option proto 'dhcpv6' option device 'eth3' option reqaddress 'try' option reqprefix 'auto'config interface 'nat64' option proto 'tayga' option ifname 'tayga-nat64' option ipv4_addr '192.168.1.1' option prefix 'ddbe:48ec:56c6:1111::/96' option dynamic_pool '192.168.1.0/24' option accept_ra '0' option send_rs '0'[email protected]:~# 配置/etc/config/firewall# 配置/etc/config/firewallconfig zone option name 'lan' list network 'lan' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT'# 残缺配置如下[email protected]:~# vim /etc/config/firewall[email protected]:~# cat /etc/config/firewallconfig defaults option input 'ACCEPT' option output 'ACCEPT' option synflood_protect '1' option forward 'ACCEPT'config zone option name 'lan' list network 'lan' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT'config zone option name 'wan' list network 'wan' list network 'wan6' list network 'nat64' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT' option masq '1' option mtu_fix '1'config forwarding option src 'lan' option dest 'wan'config rule option target 'ACCEPT' option name 'IPv' option src '*' option dest '*'config rule option name 'Allow-DHCP-Renew' option src 'wan' option proto 'udp' option dest_port '68' option target 'ACCEPT' option family 'ipv4'config rule option name 'Allow-Ping' option src 'wan' option proto 'icmp' option icmp_type 'echo-request' option family 'ipv4' option target 'ACCEPT'config rule option name 'Allow-IGMP' option src 'wan' option proto 'igmp' option family 'ipv4' option target 'ACCEPT'config rule option name 'Allow-DHCPv6' option src 'wan' option proto 'udp' option dest_port '546' option family 'ipv6' option target 'ACCEPT'config rule option name 'Allow-MLD' option src 'wan' option proto 'icmp' option src_ip 'fe80::/10' list icmp_type '130/0' list icmp_type '131/0' list icmp_type '132/0' list icmp_type '143/0' option family 'ipv6' option target 'ACCEPT'config rule option name 'Allow-ICMPv6-Input' option src 'wan' option proto 'icmp' list icmp_type 'echo-request' list icmp_type 'echo-reply' list icmp_type 'destination-unreachable' list icmp_type 'packet-too-big' list icmp_type 'time-exceeded' list icmp_type 'bad-header' list icmp_type 'unknown-header-type' list icmp_type 'router-solicitation' list icmp_type 'neighbour-solicitation' list icmp_type 'router-advertisement' list icmp_type 'neighbour-advertisement' option limit '1000/sec' option family 'ipv6' option target 'ACCEPT'config rule option name 'Allow-ICMPv6-Forward' option src 'wan' option dest '*' option proto 'icmp' list icmp_type 'echo-request' list icmp_type 'echo-reply' list icmp_type 'destination-unreachable' list icmp_type 'packet-too-big' list icmp_type 'time-exceeded' list icmp_type 'bad-header' list icmp_type 'unknown-header-type' option limit '1000/sec' option family 'ipv6' option target 'ACCEPT'config rule option name 'Allow-IPSec-ESP' option src 'wan' option dest 'lan' option proto 'esp' option target 'ACCEPT'config rule option name 'Allow-ISAKMP' option src 'wan' option dest 'lan' option dest_port '500' option proto 'udp' option target 'ACCEPT'[email protected]:~# 重启network与firewall# 重启network与firewall[email protected]:~# /etc/init.d/network restart[email protected]:~# /etc/init.d/firewall restart测试tayga性能# 测试tayga性能[email protected]:~# ping -6 ddbe:48ec:56c6:1111::8.8.8.8PING ddbe:48ec:56c6:1111::8.8.8.8 (ddbe:48ec:56c6:1111::808:808): 56 data bytes64 bytes from ddbe:48ec:56c6:1111::808:808: seq=0 ttl=51 time=57.846 ms64 bytes from ddbe:48ec:56c6:1111::808:808: seq=1 ttl=51 time=58.418 ms64 bytes from ddbe:48ec:56c6:1111::808:808: seq=2 ttl=51 time=57.077 ms64 bytes from ddbe:48ec:56c6:1111::808:808: seq=3 ttl=51 time=57.571 ms^C--- ddbe:48ec:56c6:1111::8.8.8.8 ping statistics ---4 packets transmitted, 4 packets received, 0% packet lossround-trip min/avg/max = 57.077/57.728/58.418 ms[email protected]:~# [email protected]:~# [email protected]:~# ping -6 ddbe:48ec:56c6:1111::1.1.1.1PING ddbe:48ec:56c6:1111::1.1.1.1 (ddbe:48ec:56c6:1111::101:101): 56 data bytes64 bytes from ddbe:48ec:56c6:1111::101:101: seq=0 ttl=50 time=212.821 ms64 bytes from ddbe:48ec:56c6:1111::101:101: seq=1 ttl=50 time=212.753 ms64 bytes from ddbe:48ec:56c6:1111::101:101: seq=2 ttl=50 time=212.087 ms64 bytes from ddbe:48ec:56c6:1111::101:101: seq=3 ttl=50 time=212.161 ms^C--- ddbe:48ec:56c6:1111::1.1.1.1 ping statistics ---4 packets transmitted, 4 packets received, 0% packet lossround-trip min/avg/max = 212.087/212.455/212.821 ms[email protected]:~# 配置 bind-server 实现DNS64# 配置 bind-server 实现DNS64[email protected]:~# opkg install bind-server[email protected]:~# [email protected]:~# opkg install bind-rndc[email protected]:~# Bind是Tayga官网最举荐的DNS软件,因而接下就应用Bind来配置DNS64性能。Bind的配置项有很多,好在官网给出了具体的 ...

October 28, 2022 · 5 min · jiezi

关于linux:在线编写Markdown

在线编写Markdown装置Nginx服务apt install nginxyum install nginx批改Nginx配置[email protected]:~# vim /etc/nginx/sites-available/default[email protected]:~# cat /etc/nginx/sites-available/defaultserver { listen 80; listen [::]:80; server_name md.oiox.cn; listen 443 ssl; listen [::]:443; ssl_certificate /ssl/cert.pem; ssl_certificate_key /ssl/cert.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; root /var/www/md; index index.html; location / { }}创立网址目录[email protected]:~# mkdir -pv /var/www/md/[email protected]:~# cd /var/www/md/[email protected]:/var/www/md#克隆我的项目[email protected]:/var/www/md# git clone https://github.com/pandao/editor.md.gitCloning into 'editor.md'...remote: Enumerating objects: 2578, done.remote: Total 2578 (delta 0), reused 0 (delta 0), pack-reused 2578Receiving objects: 100% (2578/2578), 15.16 MiB | 7.84 MiB/s, done.Resolving deltas: 100% (1313/1313), done.[email protected]:/var/www/md#[email protected]:/var/www/md# mv editor.md/ editormd/编写首页HTML[email protected]:/var/www/md# vim index.html[email protected]:/var/www/md# cat index.html <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><link rel="stylesheet" href="editormd/css/editormd.css" /><div id="test-editor"> <textarea style="display:none;">### 对于 Editor.md**Editor.md** 是一款开源的、可嵌入的 Markdown 在线编辑器(组件),基于 CodeMirror、jQuery 和 Marked 构建。 </textarea></div><script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><script src="editormd/editormd.js"></script><script type="text/javascript"> $(function() { var editor = editormd("test-editor", { // width : "100%", // height : "100%", path : "editormd/lib/" }); });</script>[email protected]:/var/www/md#拜访地址https://md.oiox.cn/https://md.oiox.cn/editormd/e... ...

October 27, 2022 · 1 min · jiezi

关于linux:通过-16-个案例掌握-Linux-Echo-命令

echo 命令是日常 linux 工作中应用最宽泛的命令之一。echo 命令是一个内置的命令行工具,它将文本或字符串打印到规范输入或将输入重定向到文件。该命令通常在 bash shell 或其余 shell 中用于打印命令的输入。echo 命令在 bash shell 脚本中也常常应用。根本语法 $ echo [option] [string] 在本指南中,咱们将用 16 个理论示例解释 Linux echo 命令。 (1) 在终端上显示一条简略的音讯要应用 Echo 命令在终端上打印一个简略的短信,请运行命令: $ echo Hello Guys (2) 应用 echo 命令打印出变量的值假如您曾经初始化了一个变量 x,并为它赋值 100,如下所示 $ x = 100您能够通过在变量名后面加上一个美元符号来打印它的值,如图所示 $ echo The value of x is $x (3) 打印一行蕴含双引号的文本要应用 echo 命令打印一行蕴含双引号的文本,只需将蕴含双引号的短语用单引号括起来。 $ echo Hello guys welcome to ' "Linuxtechi" ' (4) 显示一行蕴含单引号的文本如果心愿打印蕴含单引号的行,请将蕴含单引号的短语括在双引号内,如下所示 $ echo Hey, "We're" Linuxtechi, a community driven site. ...

October 26, 2022 · 2 min · jiezi

关于linux:kdevtmpfsi矿池

ip194.87.216.1095.182.120.14045.153.231.17212.22.77.7995.182.122.5794.103.83.117188.119.112.127178.20.46.115178.20.47.79185.122.204.197195.2.84.209193.178.170.4791.241.19.134195.2.78.230革除Linux服务器Docker中的kdevtmpfsi挖矿病毒

October 26, 2022 · 1 min · jiezi

关于linux:记一次-Ubuntu-Linux-动态调整分区空间

1. 背景用了一段时间后,发现 Ubuntu 空间太小了不够用了。于是扩容了硬盘大小,同时须要对分区进行调整来进行扩容。 零碎采纳的 LVM(Logical Volume Manager)的形式进行治理的。 2. 解决这里分两种状况进行解决: LV(Logical Volume) 没有用尽 VG(Volume Group)。VG(Volume Group) 没有用尽 PV(Physical Volume),或者 PV(Physical Volume) 没有关联物理分区。2.1 LV 应用全副 VG能够看到 / 由 /dev/mapper/ubuntu--vg-ubuntu--lv 挂载: $ df -hlFilesystem Size Used Avail Use% Mounted ontmpfs 196M 1.4M 195M 1% /run/dev/mapper/ubuntu--vg-ubuntu--lv 9.8G 7.5G 1.8G 81% /tmpfs 980M 16K 980M 1% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/lock/dev/sda2 1.8G 127M 1.5G 8% /boottmpfs 196M 4.0K 196M 1% /run/user/1000ubuntu--vg-ubuntu--lv 应用的是 sda3 分区,而 sda3 总共 18.2G,ubuntu--vg-ubuntu--lv 只用了 10G: ...

October 26, 2022 · 5 min · jiezi

关于linux:如何优雅的杀掉一个进程

如何优雅的杀掉一个过程前言在咱们通常应用linux操作系统的时候,常常会有这样的需要——杀死一个过程,比如说你一不小心启动了一个后盾过程或者守护过程,而这个过程是你不须要的,因而你久想杀掉他,在本篇文章当中次要给大家介绍一些杀死过程的办法,以及这暗藏在这前面的原理。 你能够杀死哪些过程在咱们杀死一个过程的时候最好不要应用管理员权限,因为你可能会一不小心杀死零碎当中一些很重要的过程。同时须要理解,在linux当中有很多与权限相干的操作,如果你只是一个一般的用户,那么你就只能杀死你本人的过程,不可能杀死别的用户的过程。然而root用户或者你有sudo权限,那么你就能够随心所欲了。 杀死过程的基本原理:咱们应用命令去杀死过程,实质上是通过一个过程(比如说kill命令的那个过程)给另外一个过程发送信号,当过程接管到信号的时候就会进行判断是哪个信号,而后依据不同的信号做出相应的行为。 信号后面示意代表不同信号的数值,比如说咱们执行命令 kill -9 1234 就是将 9 这个值对应的信号 SIGKILL 发送给过程号等于 1234 的过程,在linux操作系统当中,常见的信号如下所示: 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+338) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+1348) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-1253) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-758) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-263) SIGRTMAX-1 64) SIGRTMAX对于信号来说,过程能够有不同的应答行为,具体来说次要有以下三种: ...

October 26, 2022 · 2 min · jiezi

关于linux:Linux-Expect-实现脚本自动交互

一、介绍expect是一个自动化交互套件,次要利用于执行命令和程序时,零碎以交互模式要求输出指定字符串,实现交互通信。expect主动交互流程: spawn启动指定过程expect获取指定关键字send向指定程序发送指定字符执行实现退出 eof二、装置和命令装置 yum install -y expect常用命令 spawn 交互程序开始前面跟命令或者指定程序expect 关键字匹配send exp_send 发送指定的字符串信息exp_continue 在expect中屡次匹配就须要用到send_user 用来打印输出 相当于shell中的echoexit 退出expect脚本eof expect执行完结 退出set 定义变量puts 输入变量set timeout 设置超时工夫脚本执行1)申明 expect 脚本结尾需申明#!/usr/bin/expect应用 expect xxx.sh 或者 ./xxx.sh 执行脚本2)申明 bash 仍应用 bash 申明#!/bin/bash将 expect 命令局部包起来/usr/bin/expect <<-EOFxxxxx....EOF应用 sh xxx.sh 或者 ./xxx.sh 执行脚本三、示例近程登录主机简略版本 #!/usr/bin/expectspawn ssh [email protected] # spawn 前面跟要执行的命令expect "password" # expect 后跟关键字,匹配下面命令执行后呈现的提醒字符串send "123456\n" # 最初须要一个换行符 \r 或者 \nexpect eof # 表明完结(必要)多命令匹配 #!/usr/bin/expectspawn ssh [email protected]expect {"yes/no" { send "yes\r"; exp_continue }"password:" { send "$passwd\r" }}expect eof参考文章:Linux expect 介绍和用法一 ...

October 25, 2022 · 1 min · jiezi

关于linux:这才是使用ps命令的正确姿势

这才是应用ps命令的正确姿态前言在linux零碎当中咱们通常会应用命令去查看一些零碎的过程信息,咱们最常应用的就是 ps (process status)。ps 命令次要是用于查看以后正在运行的程序,以及他们相干的的信息,咱们能够通过不同的选项进行查看。ps 给咱们提供了十分多的选项,这些选项经常令人分辨不分明,本篇文章咱们认真谈一谈 ps 输入具体的含意。 ps命令详解只输入跟以后shell无关的过程当咱们在命令行当中间接输出 ps 命令,那么就只可能看到在以后终端当中启动的过程,即便同一个用户启动其余的终端,在这个终端当中也不能看到同一个用户在其余终端启动的过程,如下图所示: 分割线示意高低有两个终端: 咱们在上一个终端后盾启动一个 sleep.out 的程序,咱们就可能在下面的终端外面看到咱们刚刚启动的程序。然而咱们在上面同一个用户的不同终端就不可能看到在下面一个终端启动的程序。ps 命令输入的含意: PID:过程的过程号,有唯一性。TTY:用户登陆的时候应用的虚构终端。TIME:程序应用的CPU工夫总和。CMD:过程启动的时候执行的命令。输入所有的过程ps -Aps -e下面的两个命令输入零碎当中所有的过程信息,咱们能够应用这个命令统计零碎当中一个有多少过程: 输入所有过程然而排除终端和session leaderps -a下面的命令输入除了 session leader 和跟终端无关的所有过程。 跟终端无关的过程很好了解,就是跟终端脱离关系,个别是零碎过程和用户的守护过程。而 session leader 就是你登陆终端时候的那个过程,如下图所示:一个更具体的形容一个 shell 中 session leader 和其余过程的关系如下图所示(图中最左方就是 session leader 过程): 查看正在运行的程序ps -r查看以后用户的过程ps -x查看具体某个过程的信息ps -p pid 输入内容携带用户名ps -u查看所有与以后终端无关的过程这个命令和间接输出ps执行的成果一样 ps -T一个咱们十分相熟的命令咱们在linux操作系统上面咱们通常应用 ps 命令的时候,咱们会应用如下两个命令: ps aux # ax 通常要在一起应用 一起应用时候的成果和 -e 或者 -A 是一样的ps -ef其实在很多状况下咱们只想查看与咱们本人无关的程序,而下面的两个命令还查看了很多其余用户的过程,因而咱们能够批改一下下面两个命令: ps xu下面这个命令只会输入与咱们本人无关的程序同时输入的内容还算残缺。 指定ps命令输入的内容在后面的命令当中咱们都没有定制化的输入过一些内容,都是ps命令想输入啥就输入啥!其实咱们能够指定ps命令只输入咱们须要的内容,比方上面的命令输入过程id,父过程id,以及程序执行时候输出的命令: ps -o pid,ppid,command➜ pthreads ps -o pid,ppid,command PID PPID COMMAND2782266 34624 /usr/bin/zsh2825942 2782266 ps -o pid,ppid,command-o示意指定咱们想要输入的内容,在下面的命令当中: ...

October 24, 2022 · 1 min · jiezi

关于linux:RFO-SIGopenEuler-AWS-AMI-制作详解

作者简介 王瀚兴,SUSE 软件工程师,次要负责 Rancher 产品线相干的研发工作。 欧拉开源社区的 RFO SIG 正在致力将 openEuler 与 Rancher 整合,以推动社区的云原生幅员倒退。而 openEuler 如何在云环境开箱即用是一个十分重要的根底,承接上篇文章,本篇将次要介绍 openEuler AWS AMI 镜像制作的具体过程。 通过创立 AWS AMI 镜像可将 openEuler 与 AWS 云服务相结合,反对云环境中规范的 ssh key注入、分区扩容、用户数据执行等性能,并应用 cloud-init 机制实现主动启动 Rancher RKE2 集群。今后,openEuler Cloud Images 的工作也将成为 RFO SIG 的一部分,逐渐扩大反对更多的云平台。 调整硬盘分区大小openEuler 官网提供的 qcow2 格局的镜像为一个总磁盘大小为 40G 的虚拟机镜像,在 qemu 中启动虚拟机,查看分区状况。 能够看到磁盘含有两个分区,其中 2G 为 boot 分区,38G 为 root 分区。 应用 Net Based Disk (NBD) 将 qcow2 镜像的分区加载到 Linux 零碎中,之后应用 resize2fs 压缩 ext4 文件系统的体积,并应用分区调整工具 fdisk 调整分区的大小。 ...

October 24, 2022 · 6 min · jiezi

关于linux:scp实现跨机器远程复制文件

scp -r dir 用户名@IP地址:指标机器的门路scp -r /a/dir/mytest [email protected]:/b/dir/mytest机器A的文件dev_sql.zip须要复制到机器B上的,机器B的/root/test目录下,机器B的ip是47.110.133.198在机器A上执行:scp -r /Users/itech8/Desktop/dev_sql.zip [email protected]:/root/test如果提醒禁止,那么就须要把A机器的公钥拷贝到B机器的.ssh/authorized_keys上面即可

October 24, 2022 · 1 min · jiezi

关于linux:Shell揭秘程序退出状态码

程序退出状态码前言在本篇文章当中次要给大家介绍一个shell的小常识——状态码。这是当咱们的程序退出的时候,子过程会将本人程序的退出码传递给父过程,有时候咱们能够利用这一操作做一些过程退出之后的事件,比方当程序执行失败或者被某个信号杀死咱们就能够理解到,而后做出对应的措施。 状态码简介 上图是一个zsh的截图,当咱们执行命令asdsad之后,因为没有这个命令,所以zsh(相似于bash的一种shell),输入没有找到这个命令,然而咱们发现图中箭头➡️由绿色变成红色,示意程序不是失常退出。当初有一个问题是,zsh是怎么晓得程序不是失常退出的呢?其实就能够依据子过程退出的状态推断。在文章的最初咱们用C语言实现一下,看看如果在父过程接管子过程的退出的状态。 咱们在命令行当中能够通过命令 echo $? 查看上一个过程退出时候的退出码,这里的上一个过程就是 ls 命令: 程序失常退出的时候退出码等于0。 退出码表退出码含意例子解释1个别的谬误除以0个别的除以0的谬误,执行没有权限的操作2shell 外部操作失败 通常是shell操作时候的命令谬误,文章前面有一个例子演示126执行不可能执行的文件/dev/random权限问题或者命令不可能执行127命令没有找到非法或者不存在的命令执行一个零碎当中不存在的命令,能够通过设置PATH环境变量128+n谬误的信号值Kill -9 PID杀死过程号为PID的过程,过程的退出码等于 128 + 9130ctrl+c 之后过程的返回值 和上一条一样ctrl+c的信号值等于2其余退出码s不在范畴之内exit(-1)如果退出码n不在0-255之内,那么程序退出之后的退出码为n&255,并且取低8位作为最终的后果实例阐明退出码——1除以0 执行没有权限的操作 下面间接进入root用户的目录,因为没有权限,查看过程的退出码等于1。 shell外部操作失败——退出码2a=1if [ $a -eq 1 ]then echo hello world比方对于下面的shell脚本是有语法错误的正确的语法还须要在最初加上fi,当初咱们执行下面的脚本查看后果: 退出码126当因为权限问题或者命令不能够执行那么过程的退出码就是126: 命令没有找到——退出码127 信号值——128+n(信号对应的数值)咱们能够应用kil -l 命令查看 linux 操作系统当中信号以及对应的数值: 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+338) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+1348) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-1253) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-758) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-263) SIGRTMAX-1 64) SIGRTMAX当咱们在命令行应用ctrl+c中断程序的执行的时候,这个正在执行的过程就会承受到SIGINT信号,依据上文这个信号对应的数值为2,因而程序的退出码等于130(128 + 2)。 ...

October 23, 2022 · 2 min · jiezi

关于linux:Centos7最小安装配置-Linux

Centos7最小装置配置 | Linux0. 前言Linux/Centos7 最小化装置后须要做的几件事 1. 疾速装置$ yum install -y net-tools$ yum install -y curl$ yum install -y wget$ yum -y install vim$ yum -y install git$ yum -y install lrzsz2. 根底装置1.1. 查看零碎编码(可选)查看零碎字符集是否为zh_CN.GB18030,个别的话默认都是zh_CN.UTF-8 $ locale更改零碎编码为zh_CN.GB18030 $ vi /etc/locale.conf让批改的编码立刻失效 $ source /etc/locale.conf1.2. 装置ifconfig先查看是否有文件,如果文件不存在就阐明该零碎未装置ifconfig $ ls /sbin/ifconfig装置 $ yum install ifconfig如果装置失败,提醒短少安装包,能够先搜寻对应的安装包再进行装置 $ yum search ifconfig$ yum install net-tools.x86_64 -y1.3. 设置动态IP执行命令先查看以后服务器网卡配置信息,找到网卡名称。 $ ifconfig 或 ip addr执行命令查看该网卡的配置文件,留神ifcfg-xxx,那里输出服务器的网卡名称,每个服务器可能会不一样。 批改或新增配置文件内容 BOOTPROTO="static"ONBOOT="yes"# 新增IPADDR=172.17.254.200PREFIX=24GATEWAY=172.17.254.1DNS1=172.17.254.1执行命令重启网卡,再次查看ip发现失效 $ systemctl restart network$ vi /etc/sysconfig/network-scripts/ifcfg-enp3s01.4. 敞开SELinux(可选)平安增强型 Linux(Security-Enhanced Linux)简称 SELinux,学精难度较大,倡议敞开查看SELinux状态是否开启 ...

October 21, 2022 · 1 min · jiezi

关于linux:C语言中这么骚的退出程序的方式你知道几个

C语言中这么骚的退出程序的形式你晓得几个?前言在本篇文章当中次要给大家介绍C语言当中一些不罕用的个性,比方在main函数之前和之后设置咱们想要执行的函数,以及各种花式退出程序的形式。 main函数是最先执行和最初执行的函数吗?C语言结构和析构函数通常咱们在写C程序的时候都是从main函数开始写,因而咱们可能没人有关怀过这个问题,事实上是main函数不是程序第一个执行的函数,也不是程序最初一个执行的函数。 #include <stdio.h>void __attribute__((constructor)) init1() { printf("before main funciton\n");}int main() { printf("this is main funciton\n");}咱们编译下面的代码而后执行,输入后果如下图所示: ➜ code git:(main) ./init.out before main funcitonthis is main funciton由此可见main函数并不是第一个被执行的函数,那么程序第一次执行的函数是什么呢?很简略咱们看一下程序的调用栈即可。 [ ] 从下面的后果能够晓得,程序第一个执行的函数是_start,这是在类Unix操作系统上执行的第一个函数。 那么main函数是程序执行的最初一个函数吗?咱们看上面的代码: #include <stdio.h>void __attribute__((destructor)) __exit() { printf("this is exit\n");}void __attribute__((constructor)) init() { printf("this is init\n");}int main() { printf("this is main\n"); return 0;}下面程序的输入后果如下: ➜ code git:(main) ./out.out this is initthis is mainthis is exit由此可见main函数也不是咱们最初执行的函数!事实上咱们除了下面的办法之外咱们也能够在libc当中注册一些函数,让程序在main函数之后,退出执行前执行这些函数。 on_exit和atexit函数咱们能够应用下面两个函数进行函数的注册,让程序退出之前执行咱们指定的函数 #include <stdio.h>#include <stdlib.h>void __attribute__((destructor)) __exit() { printf("this is exit\n");}void __attribute__((constructor)) init() { printf("this is init\n");}void on__exit() { printf("this in on exit\n");}void at__exit() { printf("this in at exit\n");}int main() { on_exit(on__exit, NULL); atexit(at__exit); printf("this is main\n"); return 0;}this is initthis is mainthis in at exitthis in on exitthis is exit咱们能够仔细分析一下下面程序执行的程序。首先是执构造函数,而后执行 atexit 注册的函数,再执行 on_exit 注册的函数,最初执行析构函数。从下面程序的输入咱们能够晓得咱们注册的函数失效了,然而须要留神一个问题,先注册的函数后执行,不论是应用 atexit 还是 on_exit 函数。咱们当初看上面的代码: ...

October 18, 2022 · 3 min · jiezi

关于linux:一份前端够用的-Linux-命令

前言你好,我是悦创。我用 VuePress 搭建博客,又实现了 GitHub 和 Gitee Pages 的主动部署,但我最终还是决定本人建站,而在建站的过程中,必不可少会用到 Linux 命令,所以此篇写一份根本够用的 Linux 命令,会涵盖博客搭建系列文章用到的各种命令,不便查问和学习应用。首发:https://bornforthis.cn/blog/vuepress/02.html 0. Owner、Group、Others、RootLinux 零碎是一种多用户零碎,它将文件访问者身份分为三种: 文件所有者(Owner)当创立一个用户的时候,Linux 会为该用户创立一个主目录,门路为 /home/<username>,咱们能够应用 cd ~,快捷进入主目录。如果你想放一个私密文件,就能够放在本人的主目录里,而后设置只能本人查看。 群组(Group)每个用户都有一个用户组,不便多人操作的时候,为一群人调配权限。当创立用户的时候,会主动创立一个与它同名的用户组。 如果一个用户同时属于多个组,用户须要在用户组之间切换,能力具备其余用户组的权限。 其他人(Others)既不是文件所有者又不是文件所属群组成员的用户,就是其他人。 超级用户(Root)Root 用户是一类非凡的用户,该用户能够拜访所有文件。 1. adduser 增加用户 和 passwd 更改明码# 增加一个名为 git 的用户adduser git# 设置 git 用户的明码passwd git然而因为创立的用户权限较低,有的时候咱们须要为用户提权,此时咱们能够这样做: # 会关上 sudoers 配置文件sudo visudo留神同样是编辑 sudoers 配置文件,应用这个命令会比应用 sudo vim /etc/ sudoers 更平安, 除了对语法有校验,并且还会在多用户编辑的时候锁住文件。 关上 sudoers 配置文件后,咱们增加这样一行配置: # Allow git to run any commands anywheregit ALL=(ALL:ALL) ALL 简略解释下这句话 git ALL=(ALL:ALL) ALL : ...

October 18, 2022 · 4 min · jiezi

关于linux:通过linuxPAM实现禁止root用户登陆的方法

前言 在linux零碎中,root账户是有全副管理权限的,一旦root账户明码外泄,对于服务器而言将是致命的威逼;出于平安思考,通常会限度root账户的登陆,改为配置普通用户登陆服务器后su切换到root账户应用,这种形式较为平安,限度root账户登陆的形式有多种,本文次要介绍如何通过linux-PAM限度账户登陆; PAM模块简介 Linux-PAM (Pluggable Authentication Modules for Linux)可插拔认证模块。Linux-PAM是一套实用于Linux的身份验证共享库零碎,它为零碎中的应用程序或服务提供动静身份验证模块反对。它提供了对所有服务进行认证的地方机制,在Linux中,PAM是可动静配置的,本地系统管理员能够自由选择应用程序如何对用户进行身份验证。 由此可知PAM能够对linux零碎的账户做验证,咱们通过PAM模块能够对linux零碎内的账户进行登陆限度;PAM下的功能模块较多,此次次要讲述通过pam_listfile.so模块限度账户登陆的办法 pam_listfile.so模块能够实现基于"用户/组,主机名/IP,终端"的访问控制。访问控制依附PAM配置文件中的管制选项和一个自定义的配置文件来实现的。而且除了针对上述拜访源的管制之外,还可能管制到ruser,rhost,所属用户组和登录shell。 访问控制的配置办法 上面说下基于用户的访问控制的配置办法: /etc/pam.d/目录下是PAM配置文件所在门路,/etc/pam.d/sshd和/etc/pam.d/login 两个文件是本次要批改的文件;/etc/pam.d/sshd对应的是sshd登陆的配置文件,/etc/pam.d/login对应的是治理终端登陆的配置文件; 咱们先在/etc/pam.d/sshd文件中减少一行如下信息: auth  required  pam_listfile.so item=user sense=deny file=/etc/pam.d/denyuser onerr=succeed 此行示意用户通过治理终端登陆主机的时候,会调用pam\_listfile.so模块来验证用户是否能够登录;pam\_listfile.so中配置的item=user示意基于用户;sense=deny示意回绝;file=/etc/pam.d/denyuser则是定义了一个denyuser的文件;此行的含意是denyuser文件中的用户回绝通过ssh零碎; 此处对pam_listfile.so模块配置做下阐明: 格局分为五个局部:别离是item、sense、file、onerr以及apply。 其中: item=[tty|user|rhost|ruser|group|shell]__:定义了对哪些列出的指标或者条件采纳规定,显然,这里能够指定多种不同的条件。 onerr=succeed|fail__:定义了当呈现谬误(比方无奈关上配置文件)时的缺省返回值。 sense=allow|deny__:定义了当在配置文件中找到符合条件的我的项目时的管制形式。如果没有找到符合条件的我的项目,则个别验证都会通过。 file=filename__:用于指定配置文件的全门路名称。 _apply=user|@group__:定义规定实用的用户类型(用户或者组)_。 测试成果 咱们在云主机中增加此配置测试下成果; 编辑下/etc/pam.d/sshd文件增加上述信息:(信息须要增加到auth的第一行之前,否则不会失效) 在/etc/pam.d目录下创立denyuser文件,并写入root; 之后测试下应用root账户ssh登录云主机,提醒明码被回绝; 在服务器内查看/var/log/secure文件,日志中显示的登陆谬误为: 依据日志能够看出root登陆不上是被pam_listfile限度了; 如果想限度其余用户,能够在denyuser文件中将要限度的用户名增加下,增加后对应用户的登陆也会被限度; 上面在通过在/etc/pam.d/login配置文件增加限度,login文件管制的是终端登陆,云主机通过控制台的近程连接功能登陆属于终端登陆; 调整后通过近程终端vnc连贯后,应用root账户登陆无奈失常;阐明配置曾经失效。 以上是通过linux-PAM的pam_listfile.so模块限度账户登陆的办法,咱们能够灵活运用此模块限度主机内的账户登陆状况,增强主机的安全性。 作者:马寅初

October 13, 2022 · 1 min · jiezi

关于linux:rsync用法教程已验证

一、简介rsync 是一个罕用的 Linux 应用程序,用于文件同步。 它能够在本地计算机与近程计算机之间,或者两个本地目录之间同步文件(但不反对两台近程计算机之间的同步)。它也能够当作文件复制工具,代替cp和mv命令。 它名称外面的r指的是 remote,rsync 其实就是"近程同步"(remote sync)的意思。与其余文件传输工具(如 FTP 或 scp)不同,rsync 的最大特点是会查看发送方和接管方已有的文件,仅传输有变动的局部(默认规定是文件大小或批改工夫有变动)。 二、装置如果本机或者近程计算机没有装置 rsync,能够用上面的命令装置。 # Debian$ sudo apt-get install rsync# Red Hat$ sudo yum install rsync# Arch Linux$ sudo pacman -S rsync留神,传输的单方都必须装置 rsync。三、根本用法3.1 -r 参数本机应用 rsync 命令时,能够作为cp和mv命令的代替办法,将源目录同步到目标目录。 $ rsync -r source/ destination下面命令中,-r示意递归,即蕴含子目录。留神,-r是必须的,否则 rsync 运行不会胜利。source目录示意源目录,destination示意目标目录。 如果有多个文件或目录须要同步,能够写成上面这样。 $ rsync -r source1 source2 destination下面命令中,source1,source2都会被同步到destination目录。 3.2 -a 参数-a参数能够代替-r,除了能够递归同步以外,还能够同步元信息(比方批改工夫、权限等)。因为 rsync 默认应用文件大小和批改工夫决定文件是否须要更新,所以-a比-r更有用。上面的用法才是常见的写法。 $ rsync -a source destination目标目录destination如果不存在,rsync 会主动创立。执行下面的命令后,源目录source被残缺地复制到了目标目录destination上面,即造成了destination/source的目录构造。 如果只想同步源目录source外面的内容到目标目录destination,则须要在源目录前面加上斜杠。 $ rsync -a source/ destination下面命令执行后,source目录外面的内容,就都被复制到了destination目录外面,并不会在destination上面创立一个source子目录。 ...

October 11, 2022 · 3 min · jiezi

关于linux:8个面向开发者的-Linux-发行版推荐

Linux 操作系统在安全性、自定义、软件更新等方面远远优于 Windows。Linux 反对所有次要的编程语言,如 C、c++、Java、Perl、Ruby 和 Python 等。此外,它还提供了对大量用于编程目标的工具和实用程序的拜访。 说到开发,程序员更喜爱 Linux 操作系统而不是 Windows,因为它们能够疾速实现工作。然而一个重要的问题浮现在脑海中:哪个 Linux 发行版最适宜编程和开发? 尽管针对 Linux 操作系统的发行版有很多,但并不是所有的操作系统都提供了很好的开发反对,在其中进行抉择可能有点辣手。因而,咱们编制了这个列表,为开发人员提供最好的 linux 发行版参考。 (1) Manjaro当谈到为开发人员抉择最好的 Linux 发行版时,Manjaro 位居榜首。它是一个基于 arch 的收费开源 linux 发行版,次要关注可用性、易用性和可拜访性。与专有操作系统不同,Manjaro 为用户提供了对硬件的齐全管制,没有任何限度。因而,Manjaro 是开发人员最好的 linux 发行版之一。 Manjaro 还反对运行各种 windows 应用程序,如 Wine、PlayonLinux 或 Proton 等。它装载了一个优良的包管理器,其中有所有的工具和实用程序,能够让您立刻开始开发。 零碎特色Available in multiple editions (KDE, Xfce and GNOME)Supports Optimus ManagerAUR EnabledBBSwitch compatibleEase of useBased on Arch下载地址: Manjaro Linux (2) Debian GNU / LinuxDebian GNU / Linux 是另一个受欢迎的 Linux 发行版,对于开发人员而言,次要是因为其稳固的分支。开发人员偏爱 Debian 的另一个次要起因是因为它提供了开发所需的一套杰出的工具和软件包。 ...

October 11, 2022 · 2 min · jiezi

关于linux:解决Debian网速慢问题UbuntuLinux-Mint等衍生版

首发于Enaium的集体博客 最近在我的笔记本上换了Debian,装上驱动后发现网速很慢,起初换了Ubuntu,Ubuntu自带了网卡驱动,测试了一下网速发现网速还是很慢,只有是基于Debian的零碎,或者基于Ubuntu的Mint也是慢 起初在bing上搜了一下,在Ubuntu的论坛上找到了解决办法,其实内核5.15这个版本有问题,我降级到了5.17后发现好了点,不过网速还是慢,所以我将内核间接降级到6.0,测试了一下网速发现网速是能够跑满了 接下来说下更新办法 进入到Ubuntu的内核列表里,下载找到大于以后5.15的6.0,最近6.0刚更新 进入到6.0后最下面有4个deb文件是amd64的,其余处理器能够在上面找到,下载下来后全副装置后重启就能够了 cd ~/Downloadswget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-headers-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.debwget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-headers-6.0.0-060000_6.0.0-060000.202210022231_all.debwget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-image-unsigned-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.debwget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.0/amd64/linux-modules-6.0.0-060000-generic_6.0.0-060000.202210022231_amd64.debsudo dpkg -i *.deb查看内核版本命令 uname -r

October 10, 2022 · 1 min · jiezi

关于linux:解决Linux打开文件数过多errortoo-many-open-files

解决Linux关上文件数过多error:too many open files#查看以后的最大关上文件数ulimit -n#默认只有1024,当负载较大的服务器时,很容易遇到error: too many open files。因而,须要将其改大。#可长期批改,但重启后就有效ulimit -n 65535 #查看以后零碎的所有限度值ulimit -a #批改配置文件,永恒失效vim /etc/security/limits.conf#在最初退出 #指定root用户的限度root soft nofile 5000 root hard nofile 8000 #或者# *示意所有用户, 但有的零碎不认, 须要具体的用户名#* soft nofile 4096 #* hard nofile 4096 soft nofile示意软限度,hard nofile示意硬限度,软限度要小于等于硬限度。应用 ulimit -Hn 和 ulimit -Sn 命令能够别离查看以后过程用户的 hard 和 soft 的限度数参考链接:http://blog.csdn.net/fdipzone...http://www.cnblogs.com/tankai...https://blog.csdn.net/nchu202...https://www.iteye.com/blog/ja...https://www.xp.cn/jishu-php-3...

October 10, 2022 · 1 min · jiezi

关于linux:自己动手写ls命令Java版

本人入手写ls命令——Java版介绍在后面的文章Linux命令系列之ls——原来最简略的ls这么简单当中,咱们认真的介绍了对于ls命令的应用和输入后果,在本篇文章当中咱们用Java代码本人实现ls命令,更加深刻的理解ls命令。 代码实现文件操作的基本原理如果咱们应用Java实现一个简略的ls命令其实并不难,因为Java曾经给咱们提供了一些比拟不便和文件系统相干的api了,艰难的是了解api是在做什么事儿! 事实上这些api都是操作系统给咱们提供的,而后Java进行了一些列的封装,将这些操作给咱们进行提供,咱们认真来看一下封装的档次,首先操作系统会给咱们提供很多零碎调用用于和设施(磁盘、CPU)进行交互,比如说和文件的交互就是读写数据,当然咱们的Java程序也须要这些操作,因而JVM也须要给咱们提供这些操作,因而JVM就对系统调用进行了一系列的封装,在Java当中具体的模式就是用native润饰的办法。 如果你是一个比拟有教训Java程序员那么肯定见过Java当中的native办法,这些办法都是Java给咱们封装的底层接口,比如说在FileInputStream当中有一个read办法,这个办法就是读取文件当中的内容,咱们看一下这个办法是如何实现的: public int read() throws IOException { return read0(); }这里让大家的感触更加深刻一点,我在这里贴一张FileInputStream的源代码图片: 从下面的图看当咱们调用FileInputStream办法的时候的确调用了native办法。咱们再来看一些与文件操作相干的api,他们也是应用Java给咱们封装的native办法实现的。 下面次要谈了一些根本的文件操作过程的原理,简要阐明了Java将很多零碎操作封装成native办法供咱们调用,当初咱们来看看要想实现ls命令,咱们须要哪些api。 查看一个目录上面有哪些文件和目录在Java当中给咱们提供了一个类File,咱们能够应用这个类去失去一个目录上面有哪些文件和目录。 public void fileTest() { File file = new File("./"); // file.listFiles() 将以后 file 对应的目录下所有的文件和目录都失去 for (File listFile : file.listFiles()) { System.out.println(listFile.getName()); // 将文件或者目录的名字打印 }查看文件和目录的元数据在Java当中给咱们提供了一个工具类查看文件的一些元信息(metadata),比如说文件的uid(用户id)、gid(用户组id)、文件的大小和文件的链接数目(nlink)。 Path path = Paths.get("."); System.out.println(Files.getAttribute(path, "unix:dev")); // 打印存储当前目录数据的设施的设施id System.out.println(Files.getAttribute(path, "unix:ino")); // 打印存储当前目录数据inode号 System.out.println(Files.getAttribute(path, "unix:mode"));// 打印存储当前目录数据的mode数据 这个数据次要用于示意文件的类型 System.out.println(Files.getAttribute(path, "unix:uid")); // 打印存储当前目录所属用户的用户id System.out.println(Files.getAttribute(path, "unix:gid")); // 打印存储当前目录所属组的组id System.out.println(Files.getAttribute(path, "unix:size"));// 打印存储当前目录数据所占的空间大小 System.out.println(Files.getAttribute(path, "unix:nlink"));// 打印存储当前目录数据的链接数除了下面的形式,咱们还能够应用上面的形式去失去文件的元数据: ...

October 10, 2022 · 2 min · jiezi

关于linux:7个好用的Linux系统PDF编辑器推荐

PDF (Portable Document Format ) 是便携文档格局的缩写。这是一种用于电子共享文档的格局,通常是将文档附加到网站上供下载时的首选格局。 有时,您可能须要对 PDF 文档进行更改。这并不像听起来那么简略,人们须要一个 PDF 编辑器来批改文本甚至图像,而不用将它们转换为另一种格局。退出咱们,咱们将摸索一些 Ubuntu Linux 最好的 PDF 编辑器。 (1) LibreOffice PDF editorLibreOffice Draw 是一个内置的不便的 PDF 编辑器,容许您对您的 PDF 文档进行编辑。你不须要购买一个专有的 PDF 编辑器,它会榨干你的口袋。不过有一个问题。您只能进行简略的批改,例如向已有的 PDF 文档增加文本、图像和文本框。尽管如此,如果你只是想对你的 PDf 文件进行简略的批改,它依然是一个弱小的工具。 (2) OkularOkular 是一个基于 Qt 和 KDE 框架库的多平台文档查看器,由 KDE 开发和保护。因而,它是 KDE 环境的原生版本,并作为 KDE 包的一部分进行散发。 作为一个多平台查看器,它反对宽泛的文档格局,包含 PDF、JPG、TIFF、XPS、markdown、ODF 等等。 Okular 为用户提供了增加文本框、评论 PDF 文档、绘制线条和形态、修剪页面边框和朗诵文本的性能。 在 Ubuntu 20.04 上装置 Okular $ sudo apt install okular还能够应用 snap 形式装置 $ sudo snap install okular(3) Scribus基于Qt 并且应用 C++开发,scribus 是开源收费的跨平台桌面公布工具。应用 Scribus,您能够创立各种出版物,包含杂志,新闻通讯,海报,小册子和其余艺术品。 ...

October 9, 2022 · 2 min · jiezi

关于linux:linux常用shell指令

前言shell是一种脚本语言, 须要有编译器执行即:应用程序->shell->操作系统->硬件bash是linux下默认的shellsh是unix下默认的shell多命令执行:xx && xx: 后面执行胜利才会执行前面的命令xx || xx: 后面执行失败才会执行前面的命令xx ; xx : 前后无关联,按程序执行与操作:xx | xx: 对后面执行后果持续前面命令操作重定向输出/输入:< , >stdin: 规范输出,代码:0stdout: 规范输入,代码:1stderr:规范谬误输入,代码:2> file: 笼罩输入正确信息>> file: 追加输入正确信息2> file: 笼罩输入错误信息> file 2>&1: 合并笼罩输入谬误和正确信息到一个文件api文档零碎操作类指令<font size="5">mkdir</font>作用新建文件夹格局mkdir [option]... DIRECTORY...示例rm -rf /xx/xxoption-p递归创立-m设置目录拜访权限mode,如777<font size="5">rm</font>作用删除格局rm [option]... FILE...示例rm -rf /xx/xxoption-f强制删除-r递归删除-i|-l删除前确认|删除超过3个文件以下或递归删除须要确认-d删除空目录-v列出详细信息<font size="5">chmod</font>作用权限赋予格局chmod [option] [权限] [目录或文件]示例chmod -R 777 /xxx/xxxoption-R给目录下所有文件(递归)授予权限权限777所有权限<font size="5">groupadd</font>作用新增用户组格局groupadd [option]示例groupadd -g 8888 gadminoption-g指定组id-p应用加密过的明码-r建设零碎工作组,id必须小于500<font size="5">useradd</font>作用新增用户格局useradd [option]示例useradd admin -g gadmin -G rootoption-g指定用户所属组-G附加群组-d指定用户登入的起始目录-u指定用户id-r建设零碎账号-s指定用户登入后应用的shell-p设置明码<font size="5">chown</font>作用设置文件用户和用户组格局chown [option]... OWNER] FILE...示例chown -R admin:gadmin /xxx/xxoption-R递归批改-c显示更改局部信息-f疏忽错误信息-h修复符号链接-v显示具体解决信息-H命令行参数是指向目录的符号链接,则遍历它-L遍历遇到的每个指向目录的符号链接-P不遍历任何符号链接(默认)文件文本相干指令<font size="5">stat</font>作用查看文件状态格局stat [option] /xx/xx示例stat /xx/xxoption-L跟踪软连贯文件原始文件状态信息-f查看文件的文件系统状态信息-t简洁打印文件状态信息-c指定格局打印文件状态信息-c %i: inode%u: 用户ID%U: 用户%g: 用户组ID%G: 用户组%m: 磁盘挂载点%x|y|z: 文件拜访|批改|更改工夫%A|a: 文件权限其余查看stat --help自行翻译<font size="5">cat</font>作用查看文件内容格局cat [option] /xx/xx示例cat /xx/xxoption-A展现所有-b对非空输入行编号-n对所有输入行编号-s间断空行转换为一个空行-e等价与 -vE-v除了LFD和TAB之外不可打印的字符用^和M-标记形式显示-E每行完结中央显示$-t|-TTAB显示为^|<font size="5">tail</font>作用查看文件开端内容格局tail [option] /xx/xx示例tail -f /xx/xxoption-f循环读取-q不显示解决信息-v显示具体解决信息-c<num>显示的字节数-n<num>显示行数-q从不输入文件的头部-s-f下每次休眠距离s秒--pid=PID-f下在pid过程死掉后完结<font size="5">vi | vim</font>作用编辑文件格局vi /xx/xx示例vi /xx/xx外部操作挪动光标0: 文章结尾G: 文章开端$: 行尾^: 行首w: 下个字结尾e: 下个字结尾b: 上个字结尾#|: 该行第#个地位删除[#]dd: 从光标开始删除[#]行[#]x|X: 删除光标前面|后面的[#]个字符复制[#]yy: 从光标往下数复制[#]行[#]yw: 复制光标到字尾[#]个字p: 粘贴替换r: 替换光标所在处字符R: 替换光标所到之处字符,按esc完结撤回u: 撤回到上一个操作更改c[#]w: 更改[#]个字跳转ctrl+g: 列出光标所在行号#G: 挪动光标到第#行行首last line mode按esc键后输出格局:[xxx]set nu展现行号set ff[?|=unix|=dos][查看|批改]文件格式[为unix|dos]#跳到#行/关键字查找关键字,n往后,N往前?关键字查找关键字,n往前,N往后w保留q[!][放弃批改]退出wq保留后退出<font size="5">sort</font>作用排序显示文本(默认升序)格局sort [option] [目录或文件]示例sort -u /xxx/xxxoption-u去重-r降序-o输入后果到文件-n数值排序-h以人类可读的数值排序-t :按:分列-k N按第几列排序-f疏忽大小写-c查看文件排序,输入第一个乱序行的信息,最初返回1-C与-c一样,只是不输入内容只返回1-M月份排序-b疏忽空白局部,从第一个可见字符排序<font size="5">awk</font>作用抽取文件或字符串中的信息格局awk [option] '[condition]COMMAND' FILE示例awk -F 'print $1,$3' /etc/passwdoption-F '<分隔符>'|fs='<分隔符>'指定分隔符,如:,默认是空格或tab-f FILE指定文件中读取awk脚本指令-v var=val执行解决之前设置变量var初始值val查找匹配指令<font size="5">find</font>作用目录中搜寻文件格局find [path...] [expression]expression=[operators|options|tests|actions]示例find / -xdev -size 100M -exec ls -l {} \;operators(!|-not)expr; expr1 (-a|-and) expr2; expr1 (-o|-or) expr2; expr1,expr2options-xdev不会进入到挂载点目录执行但依然会列出,如/dev,/sys就是把其余文件系统目录当成整体搜寻,而不会搜寻到目录外面-maxdepth最多搜寻几层-depth查看目录之前先搜寻目录的内容-follow遇到符号链接文件,跟踪链接指向文件搜寻tests-amin/-atime N查找最初N分钟/天拜访的文件-cmin/-ctime N查找最初N分钟/天被需批改文件状态的文件-mmin/-mtime N查找最初N分钟/天被批改文件数据的文件-name pattern按文件名查找-path pattern指定目录查找-perm xx按文件权限查找-user name按文件归属用户查找-group name按文件归属组查找-nouser|-nogroup按没有归属[用户|组]查找-newer file按比file批改工夫新查找-type [bcdpflsD]查找某类型文件b:块设施文件c:字符设施文件d:目录p:管道文件f:一般文件l:符号链接文件s:socket套接字-size N[bcwkMG]按文件大小为N个单位查找b:512位元组的区块c:字元数k:kilo bytesw:2个位元组actions-prune在指定目录之外查找-print|-print0查找到的文件规范打印(开端加换行符)|开端加null字符-exec command {} ;对所有查找后果(这里{}指的是以后一个查找后果)执行shell指令;是列表操作符,须要本义(\;)-ok command {} ;更平安的exec操作,每次执行命令前都会提醒用户是否执行<font size="5">grep</font>作用文本搜寻工具格局grep [option] [pattern] /xx/xx示例grep -i -n "^x" xx.txtoption-i不辨别大小写-n显示匹配行号-v排除匹配后果-c<num>只统计匹配行数-E<num>应用egrep命令-w只匹配过滤的单词-o只显示匹配的内容,不显示整行--color=auto过滤后果增加色彩<font size="5">whereis</font>作用定位某个命令应用的二进制文件、源文件、手册文件格局whereis [option] <name>示例whereis dockeroption-b找二进制文件-m找手册文件-s找源文件-f<num>不显示文件的目录名-u<num>找不蕴含指定类型的文件-B <dir>指定目录下找二进制文件-M <dir>指定目录下找手册文件-S <dir>指定目录下找源文件<font size="5">which</font>作用查找某个命令的地位格局which command [args] <name>示例which dockeroption-n <num>文件名长度大于num-p <num>绝对路径长度大于num-w指定输入栏位宽度过程相干指令<font size="5">nohup</font>作用不挂起运行命令(加&则是挂起)格局nohup [COMMAND] [ARG] [&]示例nohuo java -jar xx.jar &<font size="5">ps</font>作用展现以后过程信息格局ps [option]示例ps -ef|grep 9090打印格局USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDSTATD:无奈中断的休眠状态(通常IO的过程)R:正在执行中S:静止T:暂停Z:不存在但临时无奈打消W:没有足够的记忆体分页可调配<:高优先序的行程N:低优先序的行程option-e|-A所有过程-f全格局显示-a除了会话主持过程外的所有过程显示tty-d<num>显示除了会话主持过程之外所有过程-u<num>无效的用户id或名字-x显示没有管制终端的过程<font size="5">netstat</font>作用显示网络连接、路由表和网络接口信息格局netstat [option]示例netstat -anp|grep docker打印格局ProtoRecv-QSend-QLocal AddressForeign AddressStatePID/Program name协定网络接管队列网络发送队列内网IP地址外网IP地址状态过程ID和应用程序名StateLISTEN:侦听近程tcp端口连贯申请SYN_SENT:tcp第一次握手期待服务器确认的状态SYN_RECV:tcp第二次握手服务端期待客户端确认的状态ESTABLISHED:tcp三次握手胜利状态FIN-WAIT-1:被动敞开端敞开利用端程序,tcp收回FIN申请被动敞开连贯后进入的状态FIN-WAIT-2:被动敞开端接到ACK后进入的状态CLOSE-WAIT:被动敞开端接到FIN后,收回ACK回应FIN申请后进入的状态CLOSING:期待近程TCP对连贯中断请求的确认LAST-ACK:被动敞开端一段时间后接管到文件结束符的应用程序调用CLOSE,也发送FIN期待对方的ACK后进入的状态TIME-WAIT:被动敞开端接管到FIN后,TCP发送ACK包后进入的状态CLOSED:被动敞开端接管到ACK后进入的状态option-a所有连贯-n显示ip地址而不是域名-p显示PID和应用程序名-r<num>显示路由表-i<num>显示网络接口表-g显示多重播送性能群组组员名单-s显示网络工作信息统计表-M显示假装的网络连线-v显示指令执行过程-W显示ip地址且不截断-N显示网络硬件外围设备的符号连贯名称-e显示网络其余相干信息-o显示计时器-c继续列出网络状态(每隔一秒)-l显示所有监控中服务器的socket(个别关注端口)-F显示FIB-C显示路由器配置的快取信息而不是FIB-t显示tcp协定的连线情况-u显示udp协定的连线情况-x显示unix类型的连线情况,相当于-A unix--ip显示inet类型的连线情况,相当于-A inet-A <networktype>|--networktype列出网络类型连线中的相干地址工具类指令<font size="5">tar</font>作用解压缩格局tar [function] [option] /xxx/xx示例压缩:tar -zcvf /xx/xx.tar.gz /xxx解压缩: tar -zxvpf /xx/xx.tar.gz /xxxfunction(-c|--create)|--delete|(-u|--update)|(-t|--list)增删改查tar文件删除性能不能用于已保留在磁带上的文件-x|--extract|--get解开tar文件-r|--append附加新文件到tar文件-A|--catenate|--concatenate追加tar文件作为一个整体到另一个tar文件-d|--diff|--compare将文件系统里的文件和tar文件里的文件比拟option-v|--verbose列出每一步解决的文件信息v: 仅文件名vv: 权限、文件名等·详细信息-k|--keep-old-files不笼罩已有文件-f|--file指定要解决的文件名-P|--absolute-names绝对路径-j|--bzip2应用bizp2解压缩-J|--xz|--lzma调用XZ Utils解压缩-z|--gzip|--gunzip|--unzip调用gzip解压缩-Z|--compress|--uncompress调用compress解压缩<font size="5">zip|unzip</font>作用zip解压缩格局zip [option] /xx/xx.zip /xx/xx.txt示例压缩: zip -r /xx/xx.zip /xx/xx解压缩: unzip /xx/xx.zip /xx/xxoption-r递归解决,即目录下所有目录和文件-b指定寄存文件的目录-d删除压缩内指定文件-f更新压缩包文件-m压缩并退出压缩文件,后删除原始文件-q不显示执行过程-v显示执行过程或版本信息-sf显示文件<font size="5">scp</font>作用基于ssh协定的近程拷贝格局scp [option] /xxx [email protected]:/xx/xx示例scp -r /xx/xx [email protected]:/xx/xxoption-r递归拷贝-C复制过程中压缩文件或目录-P指定ssh端口-p保留文件拜访和批改工夫<font size="5">date</font>作用工夫操作格局date [option] [参数]示例date -s '2022-10-21 00:00:00'option没参数显示零碎工夫+%F显示日期+%Y|m|d显示零碎年|月|日+%w显示星期几+%z|Z显示时区-s|--set [日期]设置零碎工夫<font size="5">hwclock</font>作用操作硬件时钟格局hwclock [functions] [option]示例hwclock --showfunctions-r|--show显示零碎硬件工夫--set --date ['08/02/2012 12:00:00']设置硬件工夫为date指定的工夫-s|--hctosys同步到零碎工夫<font size="5">tzselect</font>作用批改时区格局tzselect 示例tzselect, 界面中抉择时区再链接ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime再批改工夫配置文件:/etc/sysconfig/clock磁盘相干指令<font size="5">df</font>作用显示整个磁盘分区的应用状况格局df [option] [目录或文件]示例df -h /xxx/xxxoption-h显示空间大小<font size="5">du</font>作用递归查看当前目录的大小(默认kb单位)格局du [option] [目录或文件]示例du -h /xxx/xxxoption-h递归显示当前目录空间大小(MB为单位)-sh [*]只查看当前目录大小[及蕴含目录]--time递归查看当前目录的大小和工夫<font size="5">mount</font>作用挂载零碎格局mount [option] <source> <directory>示例mount /dev/sdb /xxx/xxoption-f模仿挂载过程,用于检错,和-v一起用-v显示执行信息-a将/etc/fstab定义的所有档案零碎挂上实现开机主动挂载,也可独自编辑/etc/fstab实现UUID=xxxxx /d /nfts(这里来自第二步) defaults 0 0-F为每个挂载设施分叉执行,与-a一起用用于挂载大量NFS零碎时减速-n不在/etc/mtab写入挂载材料,因而mount或df无奈查看挂载信息-r|-w只读|只写source-L挂载指定标签的硬盘,相当于LABEL=<label>-U挂载指定uuid的零碎-U|-L前提是/proc/partition存在<font size="5">umount</font>作用卸载零碎格局umount [option] <source> | <directory>示例umount /dev/sdboption-f强制卸载比方无法访问NFS零碎的状况下-v显示执行信息-a卸载所有零碎(/etc/mtab中记录的零碎)-n不在/etc/mtab写入卸载材料-l拆散文件系统,稍后革除-r无奈卸载状况下以只读形式从新挂载<font size="5">lvdisplay | pvdisplay</font>作用显示[逻辑|物理]卷信息格局[lvdisplay|pvdisplay] [option] [逻辑卷|物理卷门路]示例[lvdisplay|pvdisplay] -m /xxxoption-m显示映射关系<font size="5">lvremove | pvremove</font>作用删除逻辑卷|物理卷信息格局lvremove|pvremove [option] [逻辑卷门路]示例lvremove|pvdisplay -f /xxxoption-f强制删除--noudevsync(lvremove)禁用udev同步-y(pvremove)所有问题都回yes<font size="5">lvextend</font>作用扩容格局lvextend [option] [逻辑卷门路]示例lvextend -L +100G /xxxoption-L +N[MGTP]扩容逻辑卷大小N,单位(MGTP)-l +num扩容逻辑盘区数--noudevsync禁用udev同步-f扩容不提醒-r应用fsadm调整与逻辑卷相干的文件系统-n扩大前不要执行fsck<font size="5">xfs_growfs</font>作用扩大xfs文件系统格局xfs_growfs [option] [挂载点]示例xfs_growfs /xxx/xxoption-L [size]指定日志区域大小-D [size]指定扩大文件系统数据局部的大小-d将文件系统数据局部扩大到底层设施最大的大小-m指定文件系统中可调配为inode的最大空间百分比新值

October 8, 2022 · 2 min · jiezi

关于linux:Linux安装中文字体已验证

1.装置字体命令sudo apt install -y fontconfig2.查看已装置的字体(1)查看linux已装置字体 fc-list(2)查看linux已装置中文字体 fc-list :lang=zh能够看看有没有想要的中文字体,如果没有须要手动装置。 3.装置中文字体(1)创立目录 mkdir -p /usr/share/fonts/my_fonts(2)将要装置的字体上传到该文件夹下 这里咱们装置黑体惯例,即simhei.ttf。 对于具体字体查找,我以windows为例。 进入 C:\Windows\Fonts,该文件夹下就寄存相干字体,将simhei.tty拷贝到 linux 目录 /usr/share/fonts/my_fonts下即可 (3)装置字体索引指令 sudo apt install mkfontscale(4)生成字体索引 进入目录 cd /usr/share/fonts/my_fonts, 执行索引字体生成 mkfontscale4.校验是否胜利fc-list :lang=zh如下示意装置胜利

October 8, 2022 · 1 min · jiezi

关于linux:12个好用的-linux-命令行监控工具

Linux 管理员不是一件容易的工作。放弃零碎失常运行须要大量的工夫、急躁和艰辛的工作。然而 Linux 系统管理员能够稍作喘息,因为他们有一些命令行监督工具的帮忙。这些工具帮忙他们监督 Linux 服务器性能,并在发现异常时修复任何异样。在本文中,咱们将钻研用于监督 Linux 性能的前 12 个命令行工具。 (1) top毫无疑问,top 命令是监督 Linux 排第一位的命令行工具。它是全世界 Linux 系统管理员应用最宽泛的命令之一。它以有序的列表疾速提供所有正在运行的过程的详细信息。该列表还会实时更新。它不仅显示过程名,还显示内存应用状况和 CPU 应用状况等。 同步浏览: 25 Top Command Examples to Monitor Linux Server Performance (2) vmstatVMSTST 是命令行实用程序,在咱们的列表中占据第二的地位。它的次要工作是显示虚拟内存统计信息。它还能够帮忙您显示各种信息,包含所有零碎过程、CPU 流动、分页、块 IO、内核线程和磁盘等。vmstat 是简直所有 Linux 发行版的默认装置的一部分,因而在装置后能够间接应用它。 (3) lsof如果您想查看零碎中以后关上的所有文件,则须要应用 lsof 命令。它还用于监督以后正在应用的所有过程。该命令的次要长处之一是:当磁盘无奈卸载时,它能够帮忙管理员查看以后应用的文件。lsof 命令在零碎默认装置后不可用,能够应用以下命令进行装置: For CentOS / RHEL $ sudo yum install -y lsof // CentOS 7 / RHEL 7 or before$ sudo dnf install -y lsof // CentOS 8 / RHEL 8For Ubuntu / Debian ...

October 8, 2022 · 3 min · jiezi

关于linux:Linux命令系列之ls原来最简单的ls这么复杂

Linux命令系列之ls——原来最简略的ls这么简单ls命令应该是咱们最罕用的命令之一了,然而咱们可能容易疏忽那些看起来最简略的货色。 简介ls命令的应用格局如下 ls [选项] [具体的文件] # [] 示意可选间接在命令行输出ls将当前目录下的列出当前目录下的文件和目录。$lsLICENSE README.md hello.c也能够指定具体的目录和文件$ls /bin dev home lib32 libx32 mnt proc run srv tmp varboot etc lib lib64 media opt root sbin sys usr展现暗藏文件(所谓暗藏文件就是以.结尾的目录或者文件),减少-a选项。$ls -a. .. .git LICENSE README.md hello.c # . 示意当前目录 .. 示意上一级目录展现文件的详细信息。$ls -altotal 44drwxr-xr-x 3 root root 4096 Oct 6 04:20 .drwx------ 1 root root 4096 Oct 7 03:16 ..drwxr-xr-x 8 root root 4096 Aug 26 15:28 .git-rw-r--r-- 1 root root 18027 Aug 26 15:28 LICENSE-rw-r--r-- 1 root root 210 Aug 26 15:28 README.md-rw-r--r-- 1 root root 72 Aug 26 15:32 hello.c详细信息阐明咱们当初来仔细分析一下ls输入后果: ...

October 7, 2022 · 2 min · jiezi

关于linux:如何使用-chown-命令更改文件的所属用户和用户组

chown (change ownership), chown 命令是一种命令行实用程序,用于更改文件或目录甚至链接的用户或组所有权。Linux 的理念是使每个文件或目录均由具备某些拜访权限的特定用户或组领有。 chown 命令语法如下: $ chown OPTIONS USER: GROUP file(s) 让咱们简要地阐明一下这些参数: USER: 指的是领有该文件的用户的用户名,能够指定用户名或 UID 。GROUP: 选项示意运行命令后文件将获取的新组的名称。file(s): 选项示意一个惯例文件或一个目录,甚至是一个符号链接。这里有几点须要留神: (1) 当独自指定 USER 选项时,文件 / 目录的所有权更改为指定用户,组所有权放弃不变 $ chown john file1.txt在下面的命令中,文件 file1.txt 的用户所有权从以后用户更改为 john。 (2) 如果 USER 选项前面是一个残缺的冒号,即 USER:,并且没有提供组名,那么用户取得文件的所有权,然而文件的组所有权切换到用户的登录组。 $ chown john: file1.txt在本例中,用户 john 取得文件 file1.txt 的所有权,但该文件的组所有权更改为 john 的登录组。 (3) 当用户和组选项都用冒号分隔时,即 USER:GROUP,其中没有任何空格,文件将依照指定的形式取得新用户和组的所有权 $ chown john:john file1.txt(4) 如果去掉 USER 选项,而在 GROUP 选项后面加一个冒号 :GROUP,则只扭转文件的组所有权。 查看文件权限要查看文件权限,只需应用 ls -l 命令后接文件名 $ ls -l file1.txt ...

October 7, 2022 · 1 min · jiezi

关于linux:ls命令按时间排序

在linux零碎中,应用ls命令按工夫排序文件,其实很简略,如下:ls -altr即可按工夫排序当前目录下的文件。ls command sort by time附,ls命令的参数中文详解:-a 列出目录下的所有文件,包含以 . 结尾的隐含文件。-b 把文件名中不可输入的字符用反斜杠加字符编号(就象在C语言里一样)的模式列出。-c 输入文件的 i 节点的批改工夫,并以此排序。-d 将目录象文件一样显示,而不是显示其下的文件。-e 输入工夫的全副信息,而不是输入简略信息。-f -U 对输入的文件不排序。-g 无用。-i 输入文件的 i 节点的索引信息。-k 以 k 字节的模式示意文件的大小。-l 列出文件的详细信息。-m 横向输入文件名,并以“,”作分格符。-n 用数字的 UID,GID 代替名称。-o 显示文件的除组信息外的详细信息。-p -F 在每个文件名后附上一个字符以阐明该文件的类型,“*”示意可执行的一般文件;“/”示意目录;“@”示意符号链接;“|”示意FIFOs;“=”示意套接字(sockets)。-q 用?代替不可输入的字符。-r 对目录反向排序。-s 在每个文件名后输入该文件的大小。-t 以工夫排序。-u 以文件上次被拜访的工夫排序。-x 按列输入,横向排序。-A 显示除 “.”和“…”外的所有文件。-B 不输入以 “~”结尾的备份文件。-C 按列输入,纵向排序。-G 输入文件的组的信息。-L 列出链接文件名而不是链接到的文件。-N 不限度文件长度。-Q 把输入的文件名用双引号括起来。-R 列出所有子目录下的文件。-S 以文件大小排序。-X 以文件的扩展名(最初一个 . 后的字符)排序。-1 一行只输入一个文件。 ls实现列文件按工夫排序 ls -lt 工夫最近的在后面 ls -ltr 工夫从前到后 利用 ls -l | sort +7 (日期为第8列) 工夫从前到后ls -l | sort -r +7 工夫最近的在后面 ...

October 6, 2022 · 1 min · jiezi

关于linux:Linux进阶-流管道重定向

4.2 流,管道,重定向

October 6, 2022 · 1 min · jiezi

关于linux:通过9个实例快速掌握-linux-chmod-命令

linux 零碎中的 chmod 命令用于更改或调配文件和目录的权限。在 linux / unix 零碎中,对文件和目录的可拜访性由文件所有权和权限确定。 chmod 命令是 change mode 的缩写,用于管理文件和目录的权限,并确定谁能够拜访它们。当初让咱们深入研究文件和目录权限的实质以及如何批改它们。 linux 权限为了更好地了解 chmod 命令是如何工作的,咱们要好好钻研 Linux 文件权限模型。 在 linux 中,咱们有三种类型的文件权限: 读 (r),写 (w) ,执行 (x) 。这些权限决定了哪些用户能够读写或执行文件。您能够应用文本或八进制 (数字) 表示法调配这些权限,咱们将在本教程前面探讨这些表示法。 文件和目录属主类型包含以下三种: u – owner of the file (用户)g – group (组)o – others (其它)应用 ls -l 命令列出文件权限,-l 标记列出文件权限。 $ ls -l 从最左侧开始,第一个字符批示文件类型。连字符 (-) 示意文件是惯例文件。字符 d 示意它是目录。字符 L 示意这是一个符号链接。 其余 9 个字符被分成 3 个三联,每个三联蕴含三个符号 r (读),w (写),x (执行)。如前所述,第一局部指向所有者权限,第二局部批示组权限,最初一部分指定其余用户对文件或目录的权限。 从输入中,咱们能够看到咱们有两个文件(hello.txt 和 reports.zip)和一个目录。 ...

October 6, 2022 · 2 min · jiezi

关于linux:Linux命令系列之top里面藏着很多鲜为人知的宝藏知识

Linux命令系列之top——外面藏着很多鲜为人知的宝藏常识简介top命令是咱们常常用来查看零碎信息的一个指令,它提供了一个动静的而且是实时的借口帮忙咱们去查看零碎执行时的过程、线程和零碎参数的信息。 top命令输入内容具体分析首先咱们先看一下top命令的输入后果: 咱们当初一一剖析这些字段的含意: 第一行12:53:04示意以后工夫,也就是以后实在的工夫。up 157 days 13:35,示意这个零碎从启动到当初的工夫,上图显示的含意就是这个零碎从157天13个小时35分钟以前就启动了。5 users 示意以后在应用这个机器的用户数量。load average: 0.00, 0.00, 0.00 ,这个值示意零碎过来1分钟,5分钟,15分钟的零碎负载。当初有一个问题就是,什么是这里谈到的零碎负载。所谓零碎负载,咱们拿一分钟来举例子,咱们将一分钟一个CPU工夫定义为t,在这一分钟之内总共耗费的CPU工夫为c,那么在这一分钟之内的负载为$\frac{c}{t}$,须要留神的是这个耗费的CPU工夫c是能够大于t的,因为一个程序可能应用了多个CPU(并发程序,也可能是多个过程同时在应用不同的CPU)。比方下面图中的1分钟内的负载大概是10,那么在过来的一分钟之内零碎当中各种程序所耗费的CPU工夫为$c = 10.04 \times t$。他示意的意思就是在过来的1分钟之内,CPU工夫的耗费能够看作大概有10个CPU在满负荷运行。留神:这里是能够看作是10个CPU在满负荷的运行,其实真实情况能够是在过来的一分钟之内有20个CPU在进行计算,而后每个CPU的计算工夫为$\frac{1}{2}t$,或者其余雷同的CPU耗费状况。 第二行第二行次要示意以后零碎当中工作的相干状况,所谓工作就是以后零碎当中一共有多少个过程。652 totoal,这个示意以后零碎当中一共有652个过程。1 runnung,示意有一个过程正在执行。651 sleeping,示意有651个过程处于睡眠状态,也就是不须要应用CPU的状态。0 stoped,示意有0个过程处于stopped状态,这个状态就是被停下来的过程,比如说通过ctrl+z让一个过程停下来,你能够通过给这个过程发送一个信号SIGCONT让这个过程复原执行,linux当中过程的状态变换如下所示:0 zombie,这个就示意僵尸过程的个数,这里是0个僵尸过程,所谓僵尸过程就是一个过程执行实现了,对于C程序来说你能够了解为你的main函数执行实现了(这个不够精确,其实main函数执行实现之后还会有其余函数须要执行,然而这里你能够大抵这么了解),如果这个时候(函数执行实现),这个过程的父过程却没有承受子过程发送给他的信号(子过程在执行实现之后会给父过程发送信号,父过程须要通过wait等零碎调用去承受这个信号),那么子过程就处于zombie状态,处于这个状态的过程就须要父过程承受它发送的信号,而后子过程的系统资源就能够被回收了,而后子过程会彻底沦亡。咱们当初花一点工夫来谈一谈linux当中的过程状态。 Ready,当过程被创立实现之后他就处于Ready状态,在这个状态下的过程只差CPU了,也就是说,他当初只须要被操作系统调度获取CPU而后他就能够执行了。Running,当过程从Ready状态获取CPU的执行权的时候,过程就处于Running状态,这个状态示意过程正在执行。traced,这个状态次要是一个过程处于调试状态,这个状态须要调试的过程给这个被调试的过程发送信号,而后和这个过程才能够继续执行。Zombie,当过程执行实现之后,父过程承受子过程发送的信号之前,过程就处于这个状态。Suspended,这个状态示意过程被挂起,当过程申请IO的时候,须要阻塞期待IO申请实现,这个时候的过程状态就是Suspened状态。第三行这一行次要是各种工夫所占的百分比的统计,这个数据的统计工夫区间是,从本次刷新到上一次刷新之间,切实这个区间统计的数据 us,运行没有指定优先级的用户过程所耗费的CPU工夫所占百分比,默认的终端执行的程序都是没有指定优先级的,咱们能够应用nice这个命令来扭转程序执行的优先级:sudo nice -n -10 ./time。sy,运行内核过程所耗费的CPU工夫所占的百分比。ni,运行指定了批改过优先级之后的用户过程所占的CPU工夫百分比。这里能够联合PR和NI两个字段进行剖析,咱们当初执行sudo nice -n 10 ./a.out命令,在./a.out当中我启动了10个死循环的线程,咱们来看一下它的top输入后果:从下面的后果来看咱们通过nice命令批改来过程优先级,然而须要次要的是一个过程的PR值越大他的优先级越低,NI值越大优先级越低,也就是说咱们下面实际上是升高了过程执行的优先级了,然而咱们能够看到ni的值是发生变化了的,这也印证了下面咱们所谈到的ni值发生变化的过程。咱们再来看一下没有设置优先级的后果,间接执行sudo ./a.out: 然而在试验测试的过程当中发现了一个奇怪的问题,但咱们晋升过程的优先级(晋升优先级须要管理员权限)的时候ni的值没有发生变化,因而下面所谈到的ni的变动应该只实用于普通用户的过程(因为升高优先级不须要管理员权限)。 id, idle过程执行所占的CPU工夫百分比,当零碎当中没有足够的过程让CPU执行的时候,idle过程会被调度到CPU上进行执行,这个idle过程是为了让操作系统可能良好的执行起来所设置的,idle过程次要执行HLT指令,这个指令次要是让CPU节能,不须要CPU满负荷运行,因为这个时候没有具体的过程须要执行,这个百分比越大阐明零碎负载越轻,CPU不忙碌。wa,这个很好解释,期待IO的工夫。hi,解决硬件中断所耗费的工夫。si,处理软件中断所耗费的工夫st,这个工夫略微有点简单,IBM解释原文为:Steal time is the percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor.这个次要是虚拟机的虚构CPU期待实在物理CPU的工夫,能够大抵认为是Ready状态到Running状态的等待时间,如果这个值越大阐明虚拟机运行状态越不好,因为它期待实在CPU的工夫很长。 第四行这一行示意的是物理内存的信息,单位是KiB。 total, 示意一共有多少内存,也就是物理内存大小。free, 示意还有多少物理内存没有应用。used, 示意应用了多少物理内存。buff/cache, 示意用于用于缓存的物理内存的大小。第五行这一行次要示意的是对换区的数据,所谓对换区就是当操作系统发现内存满了之后,操作系统会抉择局部不常应用的页面将它放到磁盘当中当须要应用的时候再将这部分数据从磁盘当中读取进去。 total, 示意对换区的总大小。free, 示意对换区当中还有多少空间没有应用。used, 示意对换区当中有多少空间被应用了。最初一项 avail Mem 是一个可用于启动新程序的内存大小的估计值。表头内容含意PID,示意过程号,就是每个过程的ID。USER,就是用户的名称。PR,优先级值。NI,nice值,通过程序给过程设置的。VIRT,过程应用的虚拟内存的大小,单位是KiB。RES,常驻内存的内存大小,单位是KiB。SHR,共享内存的大小,单位是KiB。S,示意过程的状态,有一下几个状态。 ...

October 5, 2022 · 2 min · jiezi

关于linux:Linux进阶-查找文件

3.17 查找文件locate: 疾速查找查找指定文件 # 查看名为restart.sh的文件locate restart.sh# /usr/local/qcloud/stargate/admin/restart.sh查找指定目录下以某个字符串结尾的文件 # 例如,查找`/root/.ssh`目录下以"id_rsa"结尾的所有文件locate /root/.ssh/id_rsa# /root/.ssh/id_rsa# /root/.ssh/id_rsa.pub利用正则表达式查找指定模式的文件 # 应用-r选项查找以"sh"结尾的文件或目录locate -r sh$find命令依据文件名查找 # 咱们应用`-name`参数指定了文件名find -name "new_file" 依据文件大小查找 # 查找/var/log目录下大于10m的文件,-10m就是小于10m。find /var/log -size +10M依据文件最近拜访工夫查找 # 查找近7天内拜访的文件find -name "*.txt" -atime -7依据文件类型查找d: dirf: file # 查找目录find . -name "new_file" -type d高级搜寻 # 查找的后果依据固定格局打印输出# %p:文件名# %u:文件所有者find . -name "*.txt" -printf "%p - %u\n"exec 调用命令 应用exec参数能够后接一个命令,对每个查找到的文件进行操作exec是execute的缩写,是执行的意思# 如果要将one目录下所有查找到的txt文件的拜访权限都改为600find one -name "*.txt" -exec chmod 600 {} \

October 5, 2022 · 1 min · jiezi

关于linux:通过9个案例学会使用-Linux-Tee-命令

Linux Tee 命令是一个命令行工具,它从规范输出中读取并同时将后果写入规范输入和文件。换句话说,Linux 中的 tee 命令能够称的上一石二鸟:从规范输出读取并将后果打印到文件中,同时输入到规范输入。 在本指南中,咱们将进一步介绍 Linux tee 命令,并应用一些示例演示它的用法。 根本语法$ tee OPTIONS filename 上面是 tee 命令能够应用的一些选项 在 tee 命令的语法中,filename 指的是一个或多个文件。 (1) 根本用法在上面的例子中,咱们正在查看零碎中的块设施,并将后果传输到 tee 命令,该命令将输入显示到终端,同时将其保留到名为 block devices.txt 的文件中 $ lsblk | tee block_devices.txt 应用 cat 命令查看 block devices.txt 文件的内容 $ cat block_devices.txt(2) 保留输入到多个文件能够将命令的输入写入多个空格分隔的文件,如上面的语法所示。 $ command | tee file1 file2 file3 . . . In the following example, we have invoked the command to print the hostname of our system among other details and save the standard output to two files file1.txt, and file2.txt ...

October 5, 2022 · 2 min · jiezi

关于linux:Linux进阶-用户和权限

3.10 用户和权限sudo命令:以root身份运行的命令sudo command # 以root用户查看日期sudo date# 始终放弃root用户权限, exit退出rootsudo sususu -sudo -i useradd 增加用户useradd : 增加新用户 # 切换到root用户sudo su# 增加用户useradd jackpasswd: 批改明码 passwd命令能够批改用户明码passwd用法相似于useradd,只有在其后加上须要批改明码的那个用户名即可。 # 给jack这个用户设置明码passwd jackNew password:...userdel 删除用户# 切换到rootsudo su# 删除Jack用户: 只会删除该用户,该用户所在home目录不会删除。userdel jack# 如果既要删除用户,也要删除其所在home目录userdel -r jack# 或userdel --remove jack

October 5, 2022 · 1 min · jiezi

关于linux:Linux基础与进阶

3.2 开启命令行之旅[[email protected] ~]$~ 以后所在目录的名字,会随着用户进入不同目录而扭转~ 示意以后用户的家目录(home directory)$ 指你所具备的权限$ : 普通用户# : 超级用户,root权限应用sudo su切换到超级用户 应用ctrl + d退出root用户。 获取以后用户名和主机名# 获取以后用户whoami# 获取以后主机名hostname

October 4, 2022 · 1 min · jiezi

关于linux:如何安装-Linux-Mint-21-Xfce-桌面系统

期待已久的 Linux Mint 21 操作系统曾经公布,这是一个 LTS 版本 (长期反对),将失去反对和更新,直到 2027 年。Vanessa 是 Linux Mint 21 的发行名称,它基于 Ubuntu 22.04,带有三种不同的桌面环境,如 Cinnamon, Mate 和 Xfce。 Linux Mint 21 的零碎要求2 GB RAM or more20 GB free hard disk space or more64-bit Dual core processor or moreBootable Media (USB Stick)Internet Connectivity (Optional)(第 1 步) 下载 xfce Edition ISO file通过以下官方网站下载 ISO 文件。 Download Linux Mint 21 Xfce Edition下载 ISO 文件后,应用 ISO 文件制作可疏导的 USB,在 Linux 桌面上应用以下以创立可疏导 USB ...

October 4, 2022 · 2 min · jiezi

关于linux:通过14个案例掌握-ss-命令监控-socket-连接

SS 是一个命令行工具,它显示套接字统计数据并监督 Linux 零碎的网络连接。它曾经取代了 netstat 命令,而 netstat 命令当初已被弃用。ss 命令比 netstat 命令快得多,并且打印出更具体的网络统计信息。在本指南中,咱们将重点介绍如何应用 ss 命令监督 Linux 零碎上的套接字连贯。 (1) 查看所有套接字连贯In its basic form, without any arguments, the ss command displays all the socket or network connections (TCP/UDP/UNIX) as shown: 不带任何参数,显示所有套接字或网络连接(TCP/UDP/UNIX) $ ss 为了更容易查看输入,能够将输入通过管道输送到 less,如下所示。 $ ss | less(2) 查看 TCP / UDP 套接字连贯要只查看 TCP scoket 连贯,能够应用 -t 选项,如下所示 $ ss -t To filter out UDP connections, pass the -ua option as shown. ...

October 3, 2022 · 2 min · jiezi

关于linux:运维工程师必须知道的-11-个-Linux-网络命令

1.ifconfigifconfig:接口配置器。该命令用于显示路由和网络接口,还用于初始化接口、为其配置 IP 地址以及启用或禁用它。语法 :复制ifconfig1.2.traceroutetraceroute用于对网络进行故障排除,检测提早并确定达到指定指标的门路。提供名称并标识门路上的每个设施。沿着通往目的地的路线确定网络提早的起源并报告它。语法 :复制traceroute <destination>1.“留神:如果您的零碎中没有装置 traceroute 服务,您能够应用以下命令装置它:”复制sudo apt-get install inetutils-traceroute1.命令:复制traceroute www.wljslmz.cn1.上述命令的输入将蕴含以下信息:指定的主机名、数据包的大小、所需的最大跳数、IP 地址。“留神:为防止反向 DNS 查找,请在命令语法中增加 -n。”命令:复制traceroute -n www.wljslmz.cn1.输入批示网络提早,输入中显示的星号示意达到该主机时存在潜在问题,它们批示与网络通信期间的数据包失落。traceroute 命令个别发送 UDP 报文,它也能够发送 TCP 或 ICMP 数据包。要专门发送 ICMP,请应用这个,命令:复制traceroute -I www.wljslmz.cn1.要发送 TCP 的变体,请应用它命令:复制traceroute -T www.wljslmz.cn1.3.tracepathtracepath相似于 traceroute 命令。它用于检测网络提早,然而,它不须要 root 权限,并且默认装置在 Ubuntu 中。它跟踪到指定目的地的路由并辨认其中的每一跳。如果您的网络较弱,它会辨认出网络较弱的点。语法:复制tracepath <destination>1.例子:复制tracepath www.wljslmz.cn1.4. pingLinux ping 是最罕用的网络故障排除命令之一,查看两个节点之间的网络连接。ping代表Packet IN ternet Groper。ping 命令发送 ICMP 回显申请以查看网络连接,始终执行直到被中断,咱们能够应用 ctrl+c 键来中断执行。语法 :复制ping <destination>1.例子 :复制ping www.wljslmz.cn1.咱们也能够应用IP地址间接ping。咱们能够通过在 ping 命令中蕴含“-c”来限度数据包的数量。语法 :复制ping -c <number> <destination>1.5. netstatLinux netstat 命令是指网络统计。它提供无关不同接口的统计数据,包含关上的套接字、路由表和连贯信息。语法:复制netstat1.输入:察看显示所有关上的套接字的输入。netstat 命令的变动:上面是应用的 netstat 命令的一些变体。要显示程序,请应用以下命令:复制netstat -p1.要获取端口的详细信息,请应用以下命令:复制netstat -s1.这给出了所有端口的具体统计信息。要获取路由表的信息,请应用上面命令:复制netstat -r1.这给出了与路由表相干的信息:6.hostnameLinux 主机名是用于查看和设置零碎主机名的简略命令。语法:复制hostname1.应用以下命令设置主机名:复制sudo hostname <newName>1.通过此命令设置的主机名不是永恒的,当零碎重新启动时,它将被重置为主机名文件中的名称。要永恒设置主机名,您必须在服务器上的主机名文件中重写主机名,设置后,您必须重新启动。在 Ubuntu 中,应用 /etc/hostname文件。在 RHEL 中,应用 /etc/sysconfig/network文件。7.curlcurl 是一个命令行工具,应用任何反对的协定(HTTP、FTP、IMAP、POP3、SCP、SFTP、SMTP、TFTP、TELNET、LDAP或FILE)向服务器传输数据或从服务器传输数据。语法:复制curl [options] [URL…]1.例子:最根本的用法curl是输出命令,后跟 URL。复制curl https://www.wljslmz.cn1.这将在终端上显示 URL 的内容。URL 语法依赖于协定,多个 URL 能够写成这样的汇合:复制curl http://example.{一、二、三}.com1.具备数字序列系列的 URL 能够写成:复制curl ftp://ftp.example.com/file[1-20].jpeg1.上面的选项能够与 curl 命令一起应用:应用此标记,咱们能够将下载的文件保留在本地机器上,并应用提供的名称作为参数。语法:复制curl -o [文件名] [URL ...]1.例子:复制curl -o curl_file.html https://www.wljslmz.cn1.8.wge...是一个命令行实用程序,用于从 Web 下载文件。应用,您能够应用、和协定wget下载文件。wget提供多个选项,容许您下载多个文件、复原下载、限度带宽、递归下载、在后盾下载、镜像网站等等。语法 :复制wget [option] [URL]1.让咱们看一些例子:只需下载网页:复制wget http://eg.com/sample.html1.在后盾下载文件:复制wget -b http://www.eg.com/sample.html...应用以下命令在下载文件时笼罩日志:复制wget http://www.eg.com/samplefile.txt -O /path/samplefile.txt1.复原局部下载的文件:复制wget -c http://example.com/samplefile...要尝试给定次数:复制wget --tries=10 http://eg.com/samplefile.tar.... whoisLinux whois 命令用于获取与网站相干的所有信息,您能够取得无关网站的所有信息,包含注册和所有者信息。语法:复制whois <websiteName>1.例子:复制whois www.wljslmz.cn1.10. SCPSCP(平安复制)是一个命令行实用程序,容许您在两个地位之间平安地复制文件和目录。应用scp,您能够复制文件或目录:从本地零碎到近程零碎。从近程零碎到本地零碎。在本地零碎的两个近程零碎之间。应用 scp 传输数据时,文件和明码都被加密,因而任何窥探流量的人都不会失去任何敏感信息。SCP 命令语法:复制scp [OPTION] [email protected]_host:file_name1 [email protected]_host:file_name21.OPTION- scp 选项,例如明码、ssh 配置、ssh 端口、限度、递归复制等。 本地文件应应用相对或相对路径指定,而近程文件名应包含用户和主机标准。scp提供了几个选项来管制其行为的各个方面:i:Identity_file抉择从中读取用于公钥认证的身份(私钥)的文件。此选项间接传递给ssh (1)。r:此选项通知scp以递归形式复制目录。11. SSHssh代表平安外壳,它是一种用于平安连贯到近程服务器/零碎的协定,ssh从某种意义上说是平安的,它以加密模式在主机和客户端之间传输数据,它将输出从客户端传输到主机并将输入中继回,ssh运行于TCP/IP port 22.语法:复制ssh [email protected](IP/Domain_name)1.例子:复制ssh -i ~/pk.pem [email protected] ...

October 1, 2022 · 1 min · jiezi

关于linux:Linux下修改时间

批改linux的工夫能够应用date指令date命令的性能是显示和设置零碎日期和工夫。输出date 查看目前零碎工夫。批改工夫须要 date -性能字符 批改内容命令中各选项的含意别离为:-d datestr, --date datestr 显示由datestr形容的日期-s datestr, --set datestr 设置datestr 形容的日期-u, --universal 显示或设置通用工夫工夫域%H 小时(00..23)%I 小时(01..12)%k 小时(0..23)%l 小时(1..12)%M 分(00..59)%p 显示出AM或PM%r 工夫(hh:mm:ss AM或PM),12小时%s 从1970年1月1日00:00:00到目前经验的秒数%S 秒(00..59)%T 工夫(24小时制)(hh:mm:ss)%X 显示工夫的格局(%H:%M:%S)%Z 时区 日期域%a 星期几的简称( Sun..Sat)%A 星期几的全称( Sunday..Saturday)%b 月的简称(Jan..Dec)%B 月的全称(January..December)%c 日期和工夫( Mon Nov 8 14:12:46 CST 1999)%d 一个月的第几天(01..31)%D 日期(mm/dd/yy)%h 和%b选项雷同%j 一年的第几天(001..366)%m 月(01..12)%w 一个星期的第几天(0代表星期天)%W 一年的第几个星期(00..53,星期一为第一天)%x 显示日期的格局(mm/dd/yy)%y 年的最初两个数字( 1999则是99)%Y 年(例如:1970,1996等)须要特地阐明的是,只有超级用户能力用date命令设置工夫,个别用户只能用date命令显示工夫。例1:用指定的格局显示工夫。$ date '+This date now is =>%x ,time is now =>%X ,thank you !'This date now is =>11/12/99 ,time is now =>17:53:01,thank you !例2:用预约的格局显示以后的工夫。 ...

October 1, 2022 · 1 min · jiezi

关于linux:通过8个案例全面掌握-linux-stat-命令

在 Linux 中,仿佛总是有一种奇妙的办法来实现工作。对于任何工作,总是有多个命令行实用程序以更好的形式执行它。Linux stat 命令是一个命令行工具,用于显示文件的详细信息。 在本指南中,咱们将重点介绍 Linux 中的 8 种 stat 命令用法。这实用于所有 Linux 发行版。 stat 命令能够将 stat 命令看作 ls -l 命令的更好版本。尽管 -l 标记提供了对于文件的更多细节,比方文件所有权和权限,但 stat 命令更深刻,提供了对于文件的大量信息。 Linux stat 命令的语法如下所示 $ stat [OPTION] filename (1) 不带参数的 stat 命令以其最简略的模式 (没有任何参数),stat 命令显示默认输入。这包含文件大小和类型,设施类型,Inode 号,UID,GID,链接数以及文件的拜访/批改日期。 $ stat file1.txt 输入条目对应如下: File : 这将显示文件的名称Size : 文件大小 (以字节为单位)Block : 调配给文件的块数IO Block : 每个块的字节大小Device : 十六进制或十进制格局的设施号Inode : 文件的 inode 编号Links : 与文件相关联的硬链接数Access : 以符号或数字格局的文件权限Uid : 所有者的用户 ID 和的名称Gid : 所有者的组 ID 和名称Context : SeLinux 平安上下文File type : 文件的类型 (是否一般文件,符号链接等)Access : 文件最初被拜访的工夫Modify : 文件内容最初更改的工夫Change : 显示最近一次文件的元数据,如权限和所有权被扭转。(2) 查看多个文件信息通过在命令行一一指定文件,能够查看对于多个文件的具体报告,如下所示。 ...

September 30, 2022 · 2 min · jiezi

关于linux:Linux编译安装kubeedge

Linux下golang装置MacBook Linux 树莓派raspberrypi装置Golang环境 golang装置#下载最新版本wget https://dl.google.com/go/go1.15.6.linux-amd64.tar.gz --no-check-certificate#解压tar -zxvf go1.15.6.linux-amd64.tar.gzvim /etc/profileexport GOROOT=/data/goexport GO_HOME=$GOROOTexport GOPATH=/data/goexport PATH=$GO_HOME/bin:$PATHsource /etc/profilego versiongo version go1.15.6 linux/amd64Linux下kubeedge编译装置获取KubeEdge的形式有两种,一种是间接从 官网(https://github.com/kubeedge/k...) 中下载;另一种办法是通过源码编译失去。 #下载源代码git clone https://github.com/kubeedge/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge#检测gcc是否装置gcc --version#更换yum源,装置gcc zipyum install -y gccyum install -y zipyum install -y unzip#在编译的时候遇到了第一个坑,就是版本的问题。因为最新clone下来的版本曾经不是v1.1.0了,所以,咱们须要把代码切回到v1.1.0版本#切换对应版本git taggit checkout v1.1.0#应用v1.1.0 编译报错如下,下载不下来包go: cloud.google.com/[email protected]: Get "https://proxy.golang.org/cloud.google.com/go/@v/v0.43.0.mod": dial tcp 216.58.220.209:443: i/o timeout#切回最新版本 mastergit checkout master编译云端cd $GOPATH/src/github.com/kubeedge/kubeedge/make all WHAT=cloudcore#新版本 编译胜利后的目录和旧版本有点不一样 在_output/local/bin/下ls _output/local/bin/#生成二进制 cloudcore 文件位于 _output/local/bin/ 目录。拷贝 cloudcore 到部署工程目录mkdir /data/go/src/cloudcp -a _output/local/bin/cloudcore /data/go/src/cloud/编译边缘端make all WHAT=edgecorels _output/local/bin/#生成二进制 edgecore 文件位于 _output/local/bin/ 目录。拷贝 edgecore 到部署工程目录mkdir /data/go/src/edgecp -a _output/local/bin/edgecore /data/go/src/edge/编译keadmmake all WHAT=keadmls _output/local/bin/cp -a _output/local/bin/keadm /data/go/src/keadm/#生成证书 新版本此步骤不必 kubeedge在1.3版本之后云端与边缘端不须要再手动拷贝证书,而是能够通过token的形式进行主动验证./build/tools/certgen.sh genCertAndKey edge#生成的 ca 和 certs 别离位于 /etc/kubeedge/ca 和 /etc/kubeedge/certs 目录,将其拷贝到部署工程目录的 certs 目录。mkdir /data/go/src/certscp -a /etc/kubeedge/* /data/go/src/certs/#拷贝设施模块和设施CRD yaml 文件mkdir /data/go/src/yamlscp build/crds/devices/* /data/go/src/yamls/#拷贝node.jsoncp build/node.json /data/go/src/cloud/#创立cloud节点./keadm init --advertise-address="192.168.1.143"#输出yKubeEdge cloudcore is running, For logs visit: /var/log/kubeedge/cloudcore.logCloudCore started#胜利启动systemctl status cloudcore#查看日志cat /var/log/kubeedge/cloudcore.log#如果报错, cloudcore日志提醒CloudCore 1.3.0 failed to run: failed to parse EC private key: asn1: structure error: length too large#kubectl删除kubeedge的namespace,而后从新运行kubectl delete namespace kubeedge --force --grace-period=0./keadm init --advertise-address="192.168.1.143"#从云端获取令牌 重启cloudcore token会变./keadm gettoken8958944580d59b13294a880.eyJhbGciOiI6IkpXVCJ9.eyJleHAc1Nzh9.bRSK_bPSkw3PkyKBBtFr4#启动cloudcore服务ps aux|grep cloudcoresystemctl restart cloudcorenohup cloudcore & #看端口通不通telnet 192.168.1.143 10000telnet 192.168.1.143 10002

September 29, 2022 · 1 min · jiezi

关于linux:rk3568调试串口改正常串口

从debug口改成一般串口 将debug性能敞开 加上串口2 绑定对应管脚 &uart2 { status = "okay"; dma-names = "!tx", "!rx"; pinctrl-0 = <&uart2m0_xfer>;};内核去掉 CONFIG_SERIAL_8250_CONSOLE这样操作之后发现uart2曾经进去了 然而应用minicom测试 只能承受不能发送,同样的操作换成其余口都是好的 确定是linux的问题后用 strace -p 1340 跟踪上minicom的id后发现 uart2的流控被关上了 关掉应用失常了

September 29, 2022 · 1 min · jiezi

关于linux:如何使用-eunomia-让eBPF-的部署更简单-第-49-期

「龙蜥大讲堂」预报来啦!本周龙蜥社区邀请了 eBPF 技术摸索 SIG Contributor 郑昱笙分享《eunomia—让开发和部署 eBPF 更简略》,快来扫码入群,预约前排小板凳观看直播吧! 直播主题及内容介绍直播主题:eunomia—让开发和部署 eBPF 更简略 直播工夫:2022 年 09 月 29 日 (周四)14:30-16:30 直播内容: 介绍 eunomia 我的项目的开发和应用,理解它编译和启动运行 eBPF 程序齐全拆散的思路。 听众受害: 理解如何部署和应用 eunomia,使得 eBPF 的部署更简略。 适宜人群:eBPF 技术爱好者、Linux 内核爱好者。 讲师介绍:郑昱笙:2022 操作系统设计大赛一等奖,浙江大学大四学生,开发我的项目为 eunomia,让开发和部署 eBPF 更简略。 如何加入直播? 钉钉扫描下方海报二维码入群即可加入本次直播。 小龙舒适揭示:本期龙蜥大讲堂直播回放将在直播完结后一周内上线至龙蜥官网(首页-动静-视频)!往期龙蜥大讲堂视频回放已上线至龙蜥官网,欢送观看,有任何疑难欢送随时征询龙蜥助手—小龙(微信:openanolis_assis)。 —— 完 ——

September 28, 2022 · 1 min · jiezi

关于linux:grepsed和awk之grep

1.1 字符1.1.1 特定字符:''蕴含"root"的字符[[email protected] ~]$ grep 'root' passwd root:x:0:0:root:/root:/bin/bash1.1.2 范畴字符:[]蕴含数字+大小写字母的字符 grep '[0-9a-zA-Z]' passwd 1.1.3 任意字符 .[[email protected] ~]$ grep '.' passwd 会全副过滤出来1.1.4 取反 [^][[email protected] ~]$ grep '[^a-zA-Z0-9:/-]' passwd 不蕴含大小写字母、不蕴含数字、不蕴含冒号、不蕴含斜杠、不蕴含横杠的后果。1.2 边界字符^$1.2.1 头字符^和尾字符$以ftp结尾[[email protected] ~]$ grep '^ftp' passwd ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin以false结尾[[email protected] ~]$ grep 'false$' passwd mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false空白行: '^$'[[email protected] ~]$ grep '^$' passwd 1.3 元字符\w\W1.3.1 字母数字下划线\w相当于 grep '[a-zA-Z0-9_]' passwd[[email protected] ~]$ grep '\w' passwd1.3.1 非字母数字下划线\W相当于 grep '[^a-zA-Z0-9_]' passwd[[email protected] ~]$ grep '\W' passwd 1.4 单词宰割元字符\b[[email protected] ~]$ grep '\bx\b' passwd // 这样就不会过滤出这样的行了:/var/spool/postfix:/sbin/nologin1.5 反复字符示意1.5.1 字符串一般字符串,比方:'root', 'r..t'等; ...

September 27, 2022 · 2 min · jiezi

关于linux:linux根据inode编号删除文件

1. 列出目录下所有文件的inode操作指令:ls -li . [[email protected] ~]$ ls -li .总用量 3929921328244 -rw-rw-r-- 1 niewj niewj 654 4月 27 22:42 -d1328240 -rw-rw-r-- 1 niewj niewj 0 4月 27 22:42 -H1322919 -rw-rw-r-- 1 niewj niewj 57276047 7月 6 2020 kafka_2.12-2.2.2.tgz1328256 -rw-rw-r-- 1 niewj niewj 334034602 9月 14 2017 mysql-5.7.20-winx64.zip1449101 drwxrwxr-x 2 niewj niewj 20480 9月 1 2020 sf_down1328798 -rw-r--r-- 1 niewj niewj 227852 9月 1 2020 sf_down.zip1329533 -rw-rw-r-- 1 niewj niewj 10849188 12月 28 2020 sublime.zip下面次要是-i选项来示意inode,也能够ls -i . ...

September 27, 2022 · 1 min · jiezi

关于linux:麒麟操作系统-kylinos-从入门到精通-综合篇

0.根底环境类别:笔记本型号:中国长城 UF712硬件平台:飞腾处理器(ArmV8 指令集)零碎:河汉麒麟操作系统 V10 SP1(2203) 关键词:信创,麒麟零碎,linux,PKS,河汉麒麟,飞腾,arm64,arm,FAQ,材料汇总特地阐明:本文为综合信息,会频繁更新,请重点关注 1.零碎设置2.1触摸屏生效对于带有触摸屏的电脑,默认48Hz,如果改成60Hz,触摸屏会生效,具体起因不详。 2.2snap与flatpak装置2.2.1Snap装置sudo apt install snapd -ysudo systemctl enable snapd #设置开机启动sudo systemctl restart snapd #启动snapd服务sudo systemctl status snapd #查看snapd状态麒麟零碎专栏:https://segmentfault.com/blog...文章发表在SegmentFault分割邮箱:[email protected]群:662512340 文章中相干材料均可通过群文件获取或向群主申请帮助发行日志:20220925 首发

September 25, 2022 · 1 min · jiezi

关于linux:如何在-Linux-中使用-GNU-Screen-管理终端会话

GNU Screen 是一个终端多路复用器,它容许在主终端中有多个终端会话。 那么为什么咱们须要 GNU Screen? 有时咱们可能会遇到一些问题,比方因为网络问题而主动终止近程 ssh 连贯。如果工作在生产环境中运行,可能会很苦楚。因而,为了解决这类问题,倡议独自的屏幕会话,它不会随着终端会话的完结而终止。 在 Linux 和 Unix 零碎中,有一种终端多路复用工具叫做 screen,它用于治理终端会话。在本文中,咱们将介绍在生产零碎中解决重要工作时如何在 Linux 中应用 GNU Screen 来治理终端会话。 装置 screen在 Linux 零碎下装置屏幕包简单易行。一些古代操作系统预装了屏幕应用程序。运行以下命令验证屏幕的可用性。 $ screen --versionScreen version 4.08.00 (GNU) 05-Feb-20如果取得其余输入,则阐明零碎上没有可用的屏幕工具。执行以下命令装置屏幕包。 Ubuntu/Debian $ sudo apt-get install screen -yRHEL/CentOS $ sudo yum installs screen -y // RHEL 7$ sudo dnf install screen -y // RHEL 8启动 screen装置实现后,只需运行命令屏幕来启动屏幕会话。 $ screen 创立带有名称的 screen 会话应用屏幕命令追随选项 -s,您能够创立一个命名的屏幕会话。在此示例中,我应用了屏幕 Linuxtechi 作为屏幕会话的名称。您能够抉择本人的名字。 $ screen -S screen-linuxtechi查看 screen 命令参数screen 提供了一些有用的参数和命令。要列出可用参数,请按 ctrl+a,而后按 ? ...

September 24, 2022 · 2 min · jiezi

关于linux:七个基于-Fedora-Linux-的优秀发行版

此处的列表实用于桌面 Linux 用户。该列表没有特定的排名顺序,并且提到的选项可能并不总是适宜新用户。因而,在第一次装置任何基于 Fedora 的发行版之前,请确保你浏览了文档。有几十个基于 Ubuntu 的发行版可用。从 面向初学者的发行版 到 丑陋的发行版,Ubuntu 主导着 Linux 桌面空间。如果通用发行版还不够的话,你还会发现一些 奇怪的基于 Ubuntu 的发行版。我不打算参加 Ubuntu 与 Fedora 的答辩。我只是说如果你想在 Fedora 畛域中尝试一些货色,我能够列出一些选项。请记住,我不会列出面向服务器的 Linux 发行版。此处的列表实用于 桌面 Linux 用户。该列表没有特定的排名顺序,并且提到的选项可能并不总是适宜新用户。因而,在第一次装置任何基于 Fedora 的发行版之前,请确保你浏览了文档。1、Fedora 定制版Fedora 有很多定制版spin,但没有 Ubuntu 那么多。Fedora 定制版 不是基于 Fedora 的独立发行版,而只是具备 不同桌面环境 或采纳平铺窗口管理器的不同版本的 Fedora。如果你不喜爱默认的 GNOME 桌面环境,你能够下载其中一种。一些可用的选项是:Fedora KDE PlasmaFedora i3 平铺窗口管理器Fedora LXQtFedora LXDEFedora MATE-COMPIZFedora Cinnamon 版2、Nobara当你在找 游戏发行版 时,列表将由 Debian 和 Arch 衍生产品占据主导地位。因而,如果你正在寻找基于 Fedora 且具备雷同成果的游戏发行版,那么 Nobara 就是你所须要的。Nobara 是由 Proton GE 的维护者制作的游戏发行版,他也是 Lutris 开发团队的成员,因而你能够期待开箱即用的下一代游戏体验!为了带来更好的体验,Nobara 在 Fedora 上事后利用了 30 多个补丁程序,以及一组游戏工具,包含 Lutris、GOverlay、Stream 和 ProtonUp。3、UltramarineUltramarine 预装了一堆工具,包含 Flathub、RPM fusion 和该发行版本人的专用仓库。你将取得一个预配置的桌面,使其看起来赏心悦目,因而你不再须要破费额定的工夫进行调整。此外,对于那些在 Fedora 根底上寻求 Pantheon 和 Budgie 桌面环境的微调体验的人来说,Ultramarine 是完满的抉择。4、RisiOS“一个反对 Web 利用的 Fedora。”这是一种形容 RisiOS 的形式,但等等,不止如此。从 Bash 脚本的用户 GUI 到欢送屏幕,你只需单击几下即可筹备好零碎,RisiOS 让 Fedora 的应用更加轻松!RisiOS 还为你提供与 Linux Mint 雷同的 Web 利用管理器,而且十分棒。然而在你跳转到下载页面之前,要记住一件事是 RisiOS 仍处于测试阶段(如网站所说的 Big beta),你可能会遇到一些小问题。5、Qubes OSQubes OS 是一个乏味的 Linux 发行版,它让你能够自由选择要用作根底的操作系统。它也提供了一个 Fedora 模板,并且他们会定期维护它。事实上,Qubes OS 也是一个 重视隐衷的 Linux 发行版。因而,你能够在应用基于 Fedora 的产品时取得最新技术,而且齐全自在。值得注意的是,Qubes OS 须要大量系统资源和至多 8-16 GB 的内存能力应用,并且具备挑战性的学习曲线。6、Berry LinuxBerry Linux 是一个简略的基于 Fedora 的发行版,你能够间接从 CD 或任何其余介质启动。它反对主动硬件检测,并且仿佛定期维护。Berry Linux 提供对英语和日语的反对。它预装了一些媒体播放器、照片编辑利用和根本利用。7、ClearOS ...

September 22, 2022 · 1 min · jiezi

关于linux:通过8个实例掌握-Linux-Head-命令

Linux head 命令读取前 N 行并将其打印到规范输入。默认状况下,它将文件的前十行输入到规范输入。然而,能够通过在命令行上传递额定的参数来批改这一点。head 命令与 tail 命令相同,后者打印给定文件的最初 N 行。 在本指南中,咱们将重点关注 Linux head 命令,并介绍该命令的几个用例。 命令语法$ head [options] files(s) (1) 显示文件的前十行不带任何参数,显示文件的前十行 $ head asian_countries.txt (2) 显示文件名标记应用 -v 选项,能够在打印文件中的行之前显示文件名标记,如下所示 $ head -v asian_countries.txt (3) 显示多个文件的输入另外,您能够在一个命令中传递多个文件,如下所示。这一次,每个文本文件的名称首先打印在行之前,第一个文件的输入位于下一个文件之前。 $ head asian_countries.txt europe_countries.txt (4) 显示前 N 行应用 -n 选项定义想要显示的行,后跟想要打印的行数。例如,要打印前 5 行,能够执行以下命令 $ head -n 5 asian_countries.txt (5) 将输入重定向到文件您能够应用重定向操作符 (>) 将 head 命令的输入保留到文本文件或日志文件中,而不是打印到规范输入。如果文件不存在,则创立它,并存储输入。请留神,这将覆盖文件中的所有内容。 将 asian_countries.txt 文件的前四行内容保留到 output.txt 文件中 $ head -n 4 asian_countries.txt > output.txt 为了避免文件被笼罩,应用双大于操作符 (>>) 将输入追加到文件中。 ...

September 21, 2022 · 1 min · jiezi

关于linux:通过10个实例掌握-Linux-Tail-命令

tail 命令是 head 命令的补充。它读取并打印文件中的最初 N 行。如果没有任何命令选项,它将打印文本文件中的最初 10 行。在本指南中,咱们将重点关注 tail 命令,并摸索该命令附带的各种选项。 根本语法$ tail [options] files(s) (1) 显示文件的最初 10 行如前所述,tail 命令不带任何参数,只显示文件的最初 10 行。 $ tail asian_countries.txt (2) 显示文件的最初 N 行假如您想要显示特定的行数,而不是默认的 10 行。要实现这一点,应用 -n 标记,后跟行数。 $ tail -n 5 asian_countries.txt (3) 打印文件头标记要增加与文件名绝对应的头标记,请应用-v 选项,如下所示 $ tail -v asian_countries在上面的示例中,首先打印标记 asian countries,而后是文件的最初十行 (4) 显示来自多个文件的最初 N 行应用以下语法列出来自多个文件的最初 N 行: $ tail -n 5 file_1 file_2示例如下: $ tail -n 5 asian_countries.txt europe_countries.txt这一次,请留神应用咱们在上一步中提到的文件名头来划分两个文件的内容。当查看来自多个文件的内容时,会主动增加标记名称,以便更好地显示。 如果您心愿禁止 tail 命令输入中的文件头标记,那么应用 -q 选项,如下所示 ...

September 20, 2022 · 1 min · jiezi

关于linux:linux命令操作android手机

目标通过一台linux机器操作android手机做一些罕用的操作 简单的操作都是由简略操作开始的, 能够自行挖掘 环境笔记本: thinkpad t480操作系统: archlinuxadb版本: 31.0.3p2-android-tools手机: 小米手机 muui13.09操作步骤笔记本装置adb环境sudo pacman -S android-tools测试adb --versionAndroid Debug Bridge version 1.0.41Version 31.0.3p2-android-toolsInstalled as /usr/bin/adb手机关上usb调试开关设置----全副参数-----狂戳miui版本,这样就关上开发者模式了。 设置-----更多设置------开发者选项---开启开发者选项。 须要开启的按钮有:USB调试、USB装置、USB调试(平安设置)、敞开启动MIUI优化。 连贯手机通过usb连贯手机后,须要在小米手机下面的USB的用处下面抉择传输文件或者传输照片(除了仅充电就行\~) 测试连贯: 查看连贯设施 adb devices, 失常输入阐明连贯胜利,usb连通后也能够用wifi连贯 :D 应用命令操作手机拍照启动相机adb shell am start -a android.media.action.STILL_IMAGE_CAMERAcamera键 拍照adb shell input keyevent 27 back键 暂退相机adb shell input keyevent 4注这里只是个简略操作, 并且相机的启动入口根本是固定的,如果是其它的app须要先获取到利用的入口, 能够自行搜寻或分割我 对于按键操作, 最好是网上搜寻一份按键编码对应表

September 19, 2022 · 1 min · jiezi

关于linux:Linux下安装Visual-Basic6

Linux下装置Visual Basic6我的项目地址 零碎环境: Delian GNU/Linux 11(内核5.1) + Wine7wine装置vb6官网英文教程 wine装置vb6第三方英文教程 装置winetricks官网教程 各种版本、各种语言的vb6下载链接 自己Github上保留的VB6中文企业版 笔者先尝试在wine5上装置,但失败(执行winetricks出错)。之后更新到wine7胜利。 笔者全程在root权限下装置(su root),执行时也须要root权限。 须要装置winetricks,之后执行 sudo sh winetricks ddr=gdi gecko gdiplus fontfix d3dx9 corefonts mdac_typ dcom98下载vbrun60sp6.exe 应用wine装置vbrun60sp6.exe sudo wine vbrun60sp6.exe关上winecfg, 将windows版本设置为windows xp sudo winecfg下载须要的ocx和dll 将以下文件复制到.wine/drive_c/windows/system32 hhcrtl.ocx (este tienen que tieparlo, no aparece en la lista)odbc32.dllodbccp32.dllole32.dlloleaut32.dllriched20.dllriched32.dllrpcrt4.dllurlmon.dllSet the Windows emulation to Windows XP 装置我提供的中文精简版,或者中文企业版)。 下载vb6企业版快捷方式或vb6精简版快捷方式后关上做适当的批改 sudo sh 快捷方式 不能够少了sudo 我的Github

September 17, 2022 · 1 min · jiezi

关于linux:Java-并发编程解析-基于JDK源码解析Java领域中的并发锁我们可以从中学习到什么内容

天穹之边,浩瀚之挚,眰恦之美; 悟心悟性,虎头蛇尾,惟善惟道! —— 朝槿《朝槿兮年说》 写在结尾 在Java畛域中, 尤其是在并发编程畛域,对于多线程并发执行始终有两大外围问题:同步和互斥。其中: 互斥(Mutual Exclusion):一个公共资源同一时刻只能被一个过程或线程应用,多个过程或线程不能同时应用公共资源。即就是同一时刻只容许一个线程访问共享资源的问题。同步(Synchronization):两个或两个以上的过程或线程在运行过程中协同步调,按预约的先后秩序运行。即就是线程之间如何通信、合作的问题。针对对于这两大外围问题,利用管程是可能解决和实现的,因而能够说,管程是并发编程的万能钥匙。 尽管,Java在基于语法层面(synchronized 关键字)实现了对管程技术,然而从应用形式和性能上来说,内置锁(synchronized 关键字)的粒度绝对过大,不反对超时和中断等问题。 为了补救这些问题,从JDK层面对其“反复造轮子”,在JDK外部对其从新设计和定义,甚至实现了新的个性。 关健术语 本文用到的一些要害词语以及罕用术语,次要如下: 信号量(Semaphore): 是在多线程环境下应用的一种设施,是能够用来保障两个或多个要害代码段不被并发调用,也是作零碎用来解决并发中的互斥和同步问题的一种办法。信号量机制(Semaphores): 用来解决同步/互斥的问题的,它是1965年,荷兰学者 Dijkstra提出了一种行之有效的实现过程互斥与同步的办法。管程(Monitor) : 个别是指治理共享变量以及对共享变量的操作过程,让它们反对并发的一种机制。根本概述在Java畛域中,咱们能够将锁大抵分为基于Java语法层面(关键词)实现的锁和基于JDK层面实现的锁。 在Java畛域中,从JDK源码剖析来看,基于JDK层面实现的锁大抵次要能够分为以下4种形式: 基于Lock接口实现的锁基于ReadWriteLock接口实现的锁基于AQS根底同步器实现的锁基于自定义API操作实现的锁从浏览源码不难发现,在Java SDK 并发包次要通过AbstractQueuedSynchronizer(AQS)实现多线程同步机制的封装与定义,而通过Lock 和 Condition 两个接口来实现管程,其中 Lock 用于解决互斥问题,Condition 用于解决同步问题。 一. 根本实践在并发编程畛域,有两大外围问题:一个是互斥,即同一时刻只容许一个线程访问共享资源;另一个是同步,即线程之间如何通信、合作。 在操作系统中,个别有如果I/O操作时,对于阻塞和非阻塞是从函数调用角度来说的,其中: 阻塞:如果读写操作没有就绪或者实现,则函数始终期待。非阻塞: 函数立刻调用,而后让应用程序轮询循环。而同步和异步则是从“读写是次要是由谁实现”的角度来说的,其中: 同步: 读写操作次要交给应用程序实现异步: 读写操作次要由操作系统实现,个别实现之后,回调函数和事件告诉应用程序。其中,信号量机制(Semaphores)是用来解决同步/互斥的问题的,然而信号量(Semaphore)的操作扩散在各个过程或线程中,不不便进行治理,因每次需调用P/V(来自荷兰语 proberen和 verhogen)操作,还可能导致死锁或毁坏互斥申请的问题。 因为PV操作对于解决过程互斥/同步编程简单,因此在此基础上提出了与信号量等价的——“管程技术”。 其中,管程(Monitor)当中定义了共享数据结构只能被管程外部定义的函数所批改,所以如果咱们想批改管程外部的共享数据结构的话,只能调用管程外部提供的函数来间接的批改这些数据结构。 一般来说,管程(Monitor)和信号量(Semaphore)是等价的,所谓等价指的是用管程可能实现信号量,也能用信号量实现管程。 在管程的倒退历程上,先后呈现过Hasen模型、Hoare模型和MESA模型等三种不同的管程模型,当初正在宽泛应用的是MESA模型。 在MESA模型中,管程中引入了条件变量(Conditional Variable)的概念,而且每个条件变量都对应有一个期待队列(Wait Queue)。其中,条件变量和期待队列的作用是解决线程之间的同步问题。 而对于解决线程之间的互斥问题,将共享变量(Shared Variable)及其对共享变量的操作对立封装起来,个别次要是实现一个线程平安的阻塞队列(Blocking Queue),将线程不平安的队列封装起来,对外提供线程平安的操作方法,例如入队操作(Enqueue)和出队操作(Dequeue)。 在Java畛域中,对于Java语法层面实现的锁(synchronized 关键字), 其实就是参考了 MESA 模型,并且对 MESA 模型进行了精简,个别在MESA 模型中,条件变量能够有多个,Java 语言内置的管程(synchronized)里只有一个条件变量。 这就意味着,被synchronized 关键字润饰的代码块或者间接标记静态方法以及实例办法,在编译期会主动生成相干加锁(lock)和解锁(unlock)的代码,即就是monitorenter和monitorexit指令。 对于synchronized 关键字来说,次要是在Java HotSpot(TM) VM 虚拟机通过Monitor(监视器)来实现monitorenter和monitorexit指令的。 同时,在Java HotSpot(TM) VM 虚拟机中,每个对象都会有一个监视器,监视器和对象一起创立、销毁。 ...

September 17, 2022 · 14 min · jiezi

关于linux:DKdocker-离线安装

重要表述 Hi,我是DK。 在通过我:" 2 * 8 = 24 ? "天的"刿心刳肺、衡虑困心、殚精竭虑、搜索枯肠、殚精竭虑、裁心镂舌",终于总结出了这"超群绝伦"的文章。最初我得出了一个强有力的僻邪剑谱:"那人长得吧,怎么说呢。像素比拟低!"。 该吹的牛也吹完了咱们开始明天的正题,docker 编译离线吧。 测试环境# 零碎: CentOS 7 # 版本:3.10.0-1160.el7.x86_64执行流程# setp 1: 如果之前曾经装置过则须要删除,若没有则跳过。# 查看是否装置过dockersudo rpm -qa | grep docker#[root@localhost ~]# rpm -qa | grep docker#docker-ce-cli-20.10.18-3.el7.x86_64#docker-ce-rootless-extras-20.10.18-3.el7.x86_64#docker-scan-plugin-0.17.0-3.el7.x86_64#docker-ce-20.10.18-3.el7.x86_64# 卸载Docker# 形式一: yum卸载# 针对yum装置的dockeryum remove docker-ce docker-ce-cli containerd.io# 删除docker相干文件rm -rf /etc/dockerrm -rf /run/dockerrm -rf /var/lib/dockerrm -rf /usr/libexec/docker# 形式二: 手动卸载# 杀死所有运行容器docker kill `docker ps -a -q`# 删除所有容器docker rm `docker ps -a -q`# 删除所有镜像docker rmi `docker images -q`# 进行 docker 服务systemctl stop docker# 卸载所以docker -*rpm -e `rpm -qa | grep docker`# step 2: 下载离线的安装包,都下载最新的且架构为x86_64# https://download.docker.com/linux/centos/7/x86_64/stable/Packages/# http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm# 需下载的包如下:containerd.io-1.6.8-3.1.el7.x86_64.rpmcontainer-selinux-2.119.2-1.911c772.el7_8.noarch.rpmdocker-ce-20.10.9-3.el7.x86_64.rpmdocker-ce-cli-20.10.9-3.el7.x86_64.rpmdocker-ce-rootless-extras-20.10.9-3.el7.x86_64.rpmdocker-scan-plugin-0.9.0-3.el7.x86_64.rpm# step 3: 装置dockerrpm -ivh container-selinux-2.119.2-1.911c772.el7_8.noarch.rpmrpm -ivh containerd.io-1.6.8-3.1.el7.x86_64.rpmrpm -ivh docker-scan-plugin-0.9.0-3.el7.x86_64.rpmrpm -ivh docker-ce-cli-20.10.9-3.el7.x86_64.rpmrpm -ivh docker-ce-cli-20.10.9-3.el7.x86_64.rpmrpm -ivh docker-ce-20.10.9-3.el7.x86_64.rpm# setp 4: 启动服务sudo systemctl start docker# setp 5: 验证是否胜利,后果如下则阐明装置胜利# - 查看docker版本docker -v #[root@localhost ~]# docker -v#Docker version 20.10.18, build b40c2f6# - 下拉镜像docker pull redis# - 查看镜像docker images#[root@localhost ~]# docker images#REPOSITORY TAG IMAGE ID CREATED SIZE#redis latest dc7b40a0b05d 2 weeks ago 117MB# - 运行镜像docker run --name redis -d redis# - 进入容器并进行测试docker exec -it redis bash#[root@localhost ~]# docker exec -it redis bash#root@4d0f49919bf7:/data# redis-cli#127.0.0.1:6379> ping#PONG报错解决# (1) 装置报错,强制装置#[root@localhost ~]# rpm -ivh containerd.io-1.6.8-3.1.el7.x86_64.rpm#error: Failed dependencies:# containerd conflicts with containerd.io-1.6.8-3.1.el7.x86_64# runc conflicts with containerd.io-1.6.8-3.1.el7.x86_64# containerd conflicts with (installed) containerd.io-1.6.8-3.1.el7.x86_64# runc conflicts with (installed) containerd.io-1.6.8-3.1.el7.x86_64rpm -ivh containerd.io-1.6.8-3.1.el7.x86_64.rpm --nodeps# (2) 装置报错,强制装置#[root@localhost ~]# rpm -ivh docker-scan-plugin-0.9.0-3.el7.x86_64.rpm#error: Failed dependencies:# docker-ce-cli is needed by docker-scan-plugin-0:0.9.0-3.el7.x86_64rpm -ivh docker-scan-plugin-0.9.0-3.el7.x86_64.rpm --nodeps# (3) 装置报错,强制装置#[root@localhost ~]# rpm -ivh docker-ce-rootless-extras-20.10.9-3.el7.x86_64.rpm#error: Failed dependencies:# docker-ce is needed by docker-ce-rootless-extras-0:20.10.9-3.el7.x86_64rpm -ivh docker-ce-rootless-extras-20.10.9-3.el7.x86_64.rpm --nodeps

September 16, 2022 · 2 min · jiezi

关于linux:Linux系统中如何使用-nmcli-命令配置网络连接

nmcli (network manager command-line interface) 是一个命令行实用程序,用于管制用于配置网络接口的 NetworkManager 守护过程。 应用 nmcli 实用程序,您能够显示、创立、编辑、启用和禁用网络接口或连贯。它对于没有 GUI 的服务器和无头零碎尤其不便。 在本教程中,咱们将重点介绍如何在 Linux 中应用 nmcli 命令配置 IP 网络。 根本语法$ sudo nmcli [OPTIONS] OBJECT {COMMAND | help } OBJECT 能够是以下任意一种: Device or network interface managed by NetworkManagerNetworkManager’s connection.NetworkManager’s stats当初让咱们看看如何在 Linux 中应用 nmcli 命令配置 IP 网络 显示网络接口如果不带任何命令参数,nmcli 命令将显示所有激活和非激活网络接口的详细信息。 $ nmcli显示的信息包含网络连接状态、接口关联的网卡硬件类型、MAC 地址、IPv4 地址、IPv6 地址、默认路由等。 要取得网络接口的简略摘要,执行以下命令 $ nmcli device status OR$ nmcli dev status 要列出零碎上的所有流动接口,执行以下命令 $ nmcli connection showOR$ nmcli con show输入显示连贯的名称、UUID、连贯的类型 (有线或 WiFi) 和设施 (网络接口) ...

September 16, 2022 · 2 min · jiezi

关于linux:Linux安装和配置nsq

NSQ简介NSQ 是一个实时分布式音讯平台,旨在大规模运行,每天解决数十亿条音讯。 它提倡没有单点故障的分布式和分散式拓扑构造,实现容错和高可用性,同时保障牢靠的消息传递。请看特点和保障。 在操作上,NSQ很容易配置和部署(所有参数都在命令行上指定,编译的二进制文件没有运行时的依赖性)。为了取得最大的灵活性,它与数据格式无关(音讯能够是JSON、MsgPack、协定缓冲区或其余任何模式)。官网的Go和Python库是开箱即用的(还有许多其余的客户端库),如果你有趣味建设本人的库,有一个协定标准。 特点: 谋求简略部署谋求高可用、防止单点故障、无核心设计确保音讯送达生产者消费者主动发现、消费者连贯所有生产者、向消费者推的模式提供 HTTP 接口提供简直所有编程语言的客户端开发包NSQ是由出名短链接服务商bitly用Go语言开发的实时音讯解决零碎,具备高性能、高牢靠、忽视单点故障等长处,是一个十分不错的新兴的音讯队列解决方案。 源代码地址:https://github.com/nsqio/nsq 下载和装置nsq官网装置地址:https://nsq.io/overview/quick... 官网下载地址:https://nsq.io/deployment/ins... #创立目录,并进入mkdir -p /data/softwarecd /data/software#下载nsq包wget https://s3.amazonaws.com/bitly-downloads/nsq/nsq-0.3.8.linux-amd64.go1.6.2.tar.gz#解压tar -zxvf nsq-0.3.8.linux-amd64.go1.6.2.tar.gz#复制到指定目录cp -r /data/software/nsq-0.3.8.linux-amd64.go1.6.2 /data/beyond/nsq启动时可配置文件的参考地址:https://liushuchun.gitbooks.i... 启动相干服务nohup /data/beyond/nsq/bin/nsqd &#(守护过程;接管,缓存和投递音讯给客户端) 如:nsqd -config=/home/nsq/bin/nsqd.cfgnohup /data/beyond/nsq/bin/nsqlookupd &#(守护过程;为消费者提供运行时发现服务,来查找指定话题(topic)的生产者 nsqd) nohup /data/beyond/nsq/bin/nsqadmin &#(提供 Web 页面用来实时的治理你的 NSQ 集群。它通过和 nsqlookupd 实例交换,来确定生产者)指定端口启动nohup /data/beyond/nsq/bin/nsqadmin --lookupd-http-address localhost:4160 & 指定配置文件启动nohup /data/beyond/nsq/bin/nsqlookupd -config=/data/beyond/nsq/conf/nsqlookupd.cfg & nohup /data/beyond/nsq/bin/nsqadmin -config=/data/beyond/nsq/conf/nsqadmin.cfg & nohup /data/beyond/nsq/bin/nsqd -config=/data/beyond/nsq/conf/nsqd.cfg & 集群治理记得谁说过,go调用nsq时,只能在代码里配置多个地址,去轮询调用 测试环境的配置,如:192.168.1.6nsqd.cfg文件cat nsqd.cfg#配置如下## enable verbose loggingverbose = false## unique identifier (int) for this worker (will default to a hash of hostname)id = 66## <addr>:<port> to listen on for TCP clientstcp_address = "0.0.0.0:4150"## <addr>:<port> to listen on for HTTP clientshttp_address = "0.0.0.0:4151"## <addr>:<port> to listen on for HTTPS clients# https_address = "0.0.0.0:4152"## address that will be registered with lookupd (defaults to the OS hostname)broadcast_address = "192.168.1.6"## cluster of nsqlookupd TCP addressesnsqlookupd_tcp_addresses = [ "192.168.1.6:4160"]## duration to wait before HTTP client connection timeouthttp_client_connect_timeout = "2s"## duration to wait before HTTP client request timeouthttp_client_request_timeout = "5s"## path to store disk-backed messages# data_path = "/var/lib/nsq"## number of messages to keep in memory (per topic/channel)mem_queue_size = 10000## number of bytes per diskqueue file before rollingmax_bytes_per_file = 104857600## number of messages per diskqueue fsyncsync_every = 2500## duration of time per diskqueue fsync (time.Duration)sync_timeout = "2s"## duration to wait before auto-requeing a messagemsg_timeout = "60s"## maximum duration before a message will timeoutmax_msg_timeout = "15m"## maximum size of a single message in bytesmax_msg_size = 1024768## maximum requeuing timeout for a messagemax_req_timeout = "1h"## maximum size of a single command bodymax_body_size = 5123840## maximum client configurable duration of time between client heartbeatsmax_heartbeat_interval = "60s"## maximum RDY count for a clientmax_rdy_count = 2500## maximum client configurable size (in bytes) for a client output buffermax_output_buffer_size = 65536## maximum client configurable duration of time between flushing to a client (time.Duration)max_output_buffer_timeout = "1s"## UDP <addr>:<port> of a statsd daemon for pushing stats# statsd_address = "127.0.0.1:8125"## prefix used for keys sent to statsd (%s for host replacement)statsd_prefix = "nsq.%s"## duration between pushing to statsd (time.Duration)statsd_interval = "60s"## toggle sending memory and GC stats to statsdstatsd_mem_stats = true## message processing time percentiles to keep track of (float)e2e_processing_latency_percentiles = [ 100.0, 99.0, 95.0]## calculate end to end latency quantiles for this duration of time (time.Duration)e2e_processing_latency_window_time = "10m"## path to certificate filetls_cert = ""## path to private key filetls_key = ""## set policy on client certificate (require - client must provide certificate,## require-verify - client must provide verifiable signed certificate)# tls_client_auth_policy = "require-verify"## set custom root Certificate Authority# tls_root_ca_file = ""## require client TLS upgradestls_required = false## minimum TLS version ("ssl3.0", "tls1.0," "tls1.1", "tls1.2")tls_min_version = ""## enable deflate feature negotiation (client compression)deflate = true## max deflate compression level a client can negotiate (> values == > nsqd CPU usage)max_deflate_level = 6## enable snappy feature negotiation (client compression)snappy = truensqlookupd.cfg文件cat nsqlookupd.cfg#配置如下## enable verbose loggingverbose = false## <addr>:<port> to listen on for TCP clientstcp_address = "0.0.0.0:4160"## <addr>:<port> to listen on for HTTP clientshttp_address = "0.0.0.0:4161"## address that will be registered with lookupd (defaults to the OS hostname)broadcast_address = "192.168.1.6"## duration of time a producer will remain in the active list since its last pinginactive_producer_timeout = "300s"## duration of time a producer will remain tombstoned if registration remainstombstone_lifetime = "45s"nsqadmin.cfg文件cat nsqadmin.cfg#配置如下## <addr>:<port> to listen on for HTTP clientshttp_address = "0.0.0.0:4171"## graphite HTTP addressgraphite_url = ""## proxy HTTP requests to graphiteproxy_graphite = false## prefix used for keys sent to statsd (%s for host replacement, must match nsqd)statsd_prefix = "nsq.%s"## format of statsd counter statsstatsd_counter_format = "stats.counters.%s.count"## format of statsd gauge statsstatsd_gauge_format = "stats.gauges.%s"## time interval nsqd is configured to push to statsd (must match nsqd)statsd_interval = "60s"## HTTP endpoint (fully qualified) to which POST notifications of admin actions will be sentnotification_http_endpoint = ""## nsqlookupd HTTP addressesnsqlookupd_http_addresses = [ "192.168.1.6:4161"]## nsqd HTTP addresses (optional)#nsqd_http_addresses = [# "192.168.1.6:4151",# "192.168.1.7:4151",#]测试环境的配置集群,第二台,如:192.168.1.7留神: nsqlookupd_tcp_addresses 地址配置的是 192.168.1.6 ...

September 15, 2022 · 8 min · jiezi

关于linux:通过10个案例掌握-linux-iftop-命令的使用

iftop 是一个实时监控网络带宽的监控工具。它捕获流经网口的入方向和出方向的数据包总数,并显示总带宽利用率。在本指南中,咱们将带您实现 iftop 命令行工具的装置和应用。 iftop 装置(1) 在 Ubuntu / Debian 发行版上装置 $ sudo apt-get install -y iftop(2) 在 CentOS / RHEL / Rocky Linux 上装置 对于基于 RHEL 的发行版,您首先须要启用 EPEL 存储库。 $ sudo yum install -y epel-release而后执行命令 $ sudo yum install iftopOr$ sudo dnf install -y iftop(3) 在 Fedora 上装置 $ sudo dnf install -y iftop(4) 在 Arch Linux / Manjaro 上装置 $ sudo pacman -S iftop当初让咱们概述一些常见的 iftop 命令用法。 (1) 显示整体带宽应用指标如果不带任何参数,iftop 命令将显示连贯到零碎的所有网络接口的带宽应用状况 ...

September 15, 2022 · 1 min · jiezi

关于linux:使用腾讯云内网镜像源给-docker-加速

腾讯云提供的 docker 镜像地址,有两个: 公网的: http://mirrors.cloud.tencent.com/docker-ce/内网的: http://mirrors.tencentyun.com/docker-ce/如果你是用的腾讯的云服务器,千万要换成内网地址,这样能够跑到 50MB/s以上;如果不小心用了公网的速度就降到了 1MB/s 左右了,尽管这不是什么大问题,然而能快一点是一点。 应用 aliyun、华为云同理,因为他们不会因为你是内网机器,就主动给你走内网

September 14, 2022 · 1 min · jiezi

关于linux:重磅启动第-17-届中国-Linux-内核开发者大会征稿

敬爱的各位 Linux 内核爱好者,咱们又能够见面啦! 第十七届中国 Linux 内核开发者大会(CLK )如期而至。往年,咱们打算于 10 月 22 日在湖南长沙智谷相聚。CLK 以“自在、合作、翻新”为理念,以开源技术的推广和遍及为使命,旨在促成 Linux 内核开发爱好者互相交换,共同进步。本着纯技术、非商业的准则,现向宽广内核爱好者征稿。 征稿主题演讲主题需与 Linux 内核相干。倡议畛域为: 硬件与架构异构零碎微内核实时零碎调度内存治理文件系统存储与网络容器平安虚拟化性能优化节能优化测试与动态剖析Profiling/TracingQuality/Compatibility征稿工夫征稿凋谢工夫:2022 年 9 月 12 日 征稿截止工夫:2022 年 9 月 30 日 评比后果颁布工夫:2022 年 10 月 8 日 演讲 PPT 截止提交工夫:2022 年 10 月 18 日 征稿要求严格依照征稿工夫提交相干内容。 征稿初期,须要提供作者简介(不少于 150 字)、 稿件的题目和内容简介(不超过 500 字),不须要提供残缺的文稿。 通过评比的社区演讲者,须要提供 PPT 演讲资料。 投稿形式请将稿件电子版投送至 E-mail:clk_committee@126.com。 征稿指标本届大会设置了特地演讲名额供社区爱好者投稿,通过评比者将参加大会主题演讲。 专家评比委员Intel、富士通南大、阿里云、华为、清华大学、腾讯、OPPO 等单位的资深专家和工程师。 分割咱们大会官网:ckernel.org 大会微博:中国 Linux 内核开发者大会 微信公众号:Linux 内核开发者大会 分割邮箱:clk_committee@126.com 最初,感激 Intel、富士通南大、阿里云、华为、腾讯、OPPO 对本次峰会的情谊资助,感激 Linux 阅码场、迪捷软件对本次峰会的反对。 本次峰会龙蜥社区将会在相干社群和平台进行转播,还请扫描下方二维码入群,届时可第一工夫获取直播链接,欢送继续关注龙蜥公众号【OpenAnolis龙蜥】不迷路,获取更多流动资讯~ —— 完 —— ...

September 14, 2022 · 1 min · jiezi

关于linux:理解virtresshr之间的关系linux系统篇

前言 想必在linux上写过程序的同学都有剖析过程占用多少内存的经验,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)? 通常咱们能够通过top命令查看过程占用了多少内存。这里咱们能够看到VIRT、RES和SHR三个重要的指标,他们别离代表什么意思呢? 这是本文须要跟大家一起探讨的问题。当然如果更加深刻一点,你可能会问过程所占用的那些物理内存都用在了哪些地方?这时候top命令可能不能给到你你所想要的答案了,不过咱们能够剖析proc文件系统提供的smaps文件,这篇文章详尽地列出了以后过程所占用物理内存的应用状况。 本文将分为三个局部: 1、简要论述虚拟内存和驻留内存这两个重要的概念; 2、解释top命令中VIRT、RES以及SHR三个参数的理论参考意义; 3、向大家介绍一下smaps文件的格局,通过剖析smaps文件咱们能够具体理解过程物理内存的应用状况,比方mmap文件占用了多少空间、动态内存开拓耗费了多少空间、函数调用栈耗费了多少空间等等。 一、对于内存的两个概念 要了解top命令对于内存应用状况的输入,咱们必须首先搞清楚虚拟内存(Virtual Memory)和驻留内存(Resident Memory)两个概念。 (1)虚拟内存 首先须要强调的是虚拟内存不同于物理内存,尽管两者都蕴含内存字眼然而它们属于两个不同层面的概念。过程占用虚拟内存空间大并非意味着程序的物理内存也肯定占用很大。虚拟内存是操作系统内核为了对过程地址空间进行治理(process address space management)而精心设计的一个逻辑意义上的内存空间概念。 咱们程序中的指针其实都是这个虚拟内存空间中的地址。比方咱们在写完一段C++程序之后都须要采纳g++进行编译,这时候编译器采纳的地址其实就是虚拟内存空间的地址。因为这时候程序还没有运行,何谈物理内存空间地址?但凡程序运行过程中可能须要用到的指令或者数据都必须在虚拟内存空间中。 既然说虚拟内存是一个逻辑意义上(假象的)的内存空间,为了可能让程序在物理机器上运行,那么必须有一套机制能够让这些假象的虚拟内存空间映射到物理内存空间(实实在在的RAM内存条上的空间)。这其实就是操作系统中页映射表(page table)所做的事件了。 内核会为零碎中每一个过程保护一份互相独立的页映射表。页映射表的基本原理是将程序运行过程中须要拜访的一段虚拟内存空间通过页映射表映射到一段物理内存空间上,这样CPU拜访对应虚拟内存地址的时候就能够通过这种查找页映射表的机制拜访物理内存上的某个对应的地址。“页(page)”是虚拟内存空间向物理内存空间映射的根本单元。 下图演示了虚拟内存空间和物理内存空间的互相关系,它们通过Page Table关联起来。其中虚拟内存空间中着色的局部别离被映射到物理内存空间对应雷同着色的局部。而虚拟内存空间中灰色的局部示意在物理内存空间中没有与之对应的局部,也就是说灰色局部没有被映射到物理内存空间中。这么做也是本着“按需映射”的指导思想,因为虚拟内存空间很大,可能其中很多局部在一次程序运行过程中基本不须要拜访,所以也就没有必要将虚拟内存空间中的这些局部映射到物理内存空间上。 到这里为止曾经根本论述了什么是虚拟内存了。 总结一下就是,虚拟内存是一个假象的内存空间,在程序运行过程中虚拟内存空间中须要被拜访的局部会被映射到物理内存空间中。虚拟内存空间大只能示意程序运行过程中可拜访的空间比拟大,不代表物理内存空间占用也大。 (2)驻留内存 驻留内存,顾名思义是指那些被映射到过程虚拟内存空间的物理内存。上图中,在零碎物理内存空间中被着色的局部都是驻留内存。比方,A1、A2、A3和A4是过程A的驻留内存;B1、B2和B3是过程B的驻留内存。 过程的驻留内存就是过程实实在在占用的物理内存。个别咱们所讲的过程占用了多少内存,其实就是说的占用了多少驻留内存而不是多少虚拟内存。因为虚拟内存大并不意味着占用的物理内存大。 二、top命令中VIRT、RES和SHR 对于虚拟内存和驻留内存这两个概念咱们说到这里。上面一部分咱们来看看top命令中VIRT、RES和SHR别离代表什么意思。 搞清楚了虚拟内存的概念之后解释VIRT的含意就很简略了。VIRT示意的是过程虚拟内存空间大小。对应到图1中的过程A来说就是A1、A2、A3、A4以及灰色局部所有空间的总和。也就是说VIRT蕴含了在曾经映射到物理内存空间的局部和尚未映射到物理内存空间的局部总和。 RES的含意是指过程虚拟内存空间中曾经映射到物理内存空间的那局部的大小。对应到图1中的过程A来说就是A1、A2、A3以及A4几个局部空间的总和。所以说,看过程在运行过程中占用了多少内存应该看RES的值而不是VIRT的值。 最初来看看SHR所示意的含意。 SHR是share(共享)的缩写,它示意的是过程占用的共享内存大小。在上图中咱们看到过程A虚拟内存空间中的A4和过程B虚拟内存空间中的B3都映射到了物理内存空间的A4/B3局部。咋一看很奇怪。 为什么会呈现这样的状况呢? 其实咱们写的程序会依赖于很多内部的动静库(.so),比方libc.so、libld.so等等。这些动静库在内存中仅仅会保留/映射一份,如果某个过程运行时须要这个动静库,那么动静加载器会将这块内存映射到对应过程的虚拟内存空间中。多个停顿之间通过共享内存的形式互相通信也会呈现这样的状况。 这么一来,就会呈现不同过程的虚拟内存空间会映射到雷同的物理内存空间。这部分物理内存空间其实是被多个过程所共享的,所以咱们将他们称为共享内存,用SHR来示意。 某个过程占用的内存除了和别的过程共享的内存之外就是本人的独占内存了。所以要计算过程独占内存的大小只有用RES的值减去SHR值即可。 三、过程的smaps文件 通过top命令咱们曾经能看出过程的虚拟空间大小(VIRT)、占用的物理内存(RES)以及和其余过程共享的内存(SHR)。然而仅此而已,如果我想晓得如下问题: 过程的虚拟内存空间的散布状况,比方heap占用了多少空间、文件映射(mmap)占用了多少空间、stack占用了多少空间? 过程是否有被替换到swap空间的内存,如果有,被替换进来的大小? mmap形式关上的数据文件有多少页在内存中是脏页(dirty page)没有被写回到磁盘的? mmap形式关上的数据文件以后有多少页面曾经在内存中,有多少页面还在磁盘中没有加载到page cahe中? 以上这些问题都无奈通过top命令给出答案,然而有时候这些问题正是咱们在对程序进行性能瓶颈剖析和优化时所须要答复的问题。所幸的是,世界上解决问题的办法总比问题自身要多得多。linux通过proc文件系统为每个过程都提供了一个smaps文件,通过剖析该文件咱们就能够一一答复以上提出的问题。 在smaps文件中,每一条记录(如下图所示)示意过程虚拟内存空间中一块间断的区域。其中第一行从左到右顺次示意地址范畴、权限标识、映射文件偏移、设施号、inode、文件门路。具体解释能够参见understanding-linux-proc-id-maps。 接下来8个字段的含意别离如下: • Size:示意该映射区域在虚拟内存空间中的大小。 • Rss:示意该映射区域以后在物理内存中占用了多少空间 • Shared_Clean:和其余过程共享的未被改写的page的大小 • Shared_Dirty:和其余过程共享的被改写的page的大小 • Private_Clean:未被改写的公有页面的大小。 • Private_Dirty:已被改写的公有页面的大小。 • Swap:示意非mmap内存(也叫anonymous memory,比方malloc动态分配进去的内存)因为物理内存不足被swap到替换空间的大小。 • Pss:该虚拟内存区域平摊计算后应用的物理内存大小(有些内存会和其余过程共享,例如mmap进来的)。比方该区域所映射的物理内存局部同时也被另一个过程映射了,且该局部物理内存的大小为1000KB,那么该过程摊派其中一半的内存,即Pss=500KB。 有了smap如此具体对于虚拟内存空间到物理内存空间的映射信息,置信大家曾经可能通过剖析该文件答复下面提出的4个问题。 最初心愿大家可能通过浏览本文对过程的虚拟内存和物理内存有一个更加清晰意识,并能更加精确了解top命令对于内存的输入,最初能够通过smaps文件更进一步剖析过程应用内存的状况。————————————————版权申明:本文为CSDN博主「京东云开发者」的原创文章,遵循CC 4.0 BY-SA版权协定,转载请附上原文出处链接及本申明。原文链接:https://blog.csdn.net/jdcdev_... ...

September 14, 2022 · 1 min · jiezi

关于linux:Deepin20-LNMP环境搭建又一个瞎折腾的经历

背景最近头脑发热,想装置个Linux零碎来办工,所以装置了Deepin20的零碎,折腾了一天的LNMP的环境,记录一下瞎折腾的过程。 lnmp 是一个常见的web开发的环境nginx如果装置过能够不必装置,或者卸载重新安装 sudo apt remove nginx --purge #装置 sudo apt install nginxnginx -v # 验证是否装置胜利service nginx status # 查看 nginx 的运行状态 stop进行 restart重启PHP同样,装置过想要重新安装能够先卸载 sudo apt remove php7.3-fpm --purge装置 sudo apt install php7.3-fpm# 装置扩大,有时运行我的项目提醒没有扩大,须要应用上面命令装置sudo apt install php7.3-xml php7.3-curl php7.3-mbstring php7.3-xml# 如果还须要扩大能够应用 sudo apt install php7.3- 加Tab键主动提醒所有的扩大,而后抉择须要的扩大进行装置MySQL能够在官网下载 关上网页 https://dev.mysql.com/downloa...点击 Download 按钮在弹出的界面中点击登录按钮或者 “No thanks, just start my download.” 链接。也能够复制链接 应用 wget 下载 wget https://dev.mysql.com/get/mysql-apt-config_0.8.23-1_all.deb装置 sudo dpkg -i mysql-apt-config_0.8.23-1_all.deb # 就会进入装置源的过程# 抉择 mysql-server # 版本 依据本人须要进行抉择# 最初抉择 oksudo apt update # 更新 装置源胜利就会看到有 mysql 的源输入sudo apt install mysql-server # 装置 mysql 服务# 输出 y# 会弹框提醒输出明码,输出两次即可# 会让认证插件, 个别抉择第二个,第一个可能兼容性不好。验证 ...

September 13, 2022 · 1 min · jiezi