关于linux:openEuler-RISCV-2303-创新版本亮相全面提升硬件兼容性和桌面体验

近日,openEuler RISC-V 23.03 翻新版本正式公布。openEuler RISC-V SIG 作为 openEuler 零碎在 RISC-V 架构上的保护组织,次要致力于 openEuler 在 RISC-V 软硬件方面的适配,始终追随 openEuler 版本节奏提供 openEuler 的 RISC-V 镜像版本。本次更新带来更好的硬件反对,更多的软件适配,包含 VisionFive 2 ,SG2042 等多款新开发板的默认反对、UKUI,GNOME 等多个桌面环境的新增适配、容器及其工具的适配,另外,还默认新增 JIT 反对以及针对性优化。 镜像下载链接 https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC... 硬件反对在硬件方面,openEuler RISC-V 23.03 继承性反对和更新了全志哪吒 D1,矽速 Lichee RV,SiFive Unmatched,赛昉 VisionFive 1 等开发板,同时更新与反对了赛昉 VisionFive 2 和算能 SG2042 两款设施。 反对 SG2042openEuler RISC-V 23.03 翻新版本胜利接入 RISC-V 64 cores 高性能处理器 SG2042(EVB) 服务器板卡,是 RISC-V 服务器畛域生态倒退的重要一步,经测试,根底零碎、有线网络、USB 接口等组件已可晦涩应用。SG2042 本地构建形式相较于 qemu user 模式具备显著速度劣势,为本次发版的 openEuler RISC-V 23.03 大幅缩短了构建时长。RISC-V SIG 打算将 SG2042 与 OBS 构建零碎联合,晋升 openEuler RISC-V 软件包构建效率。 ...

April 11, 2023 · 2 min · jiezi

关于linux:Linux的3种特殊权限场景实战SUIDSGIDSBIT

3种非凡权限在Linux零碎中,有3种非凡权限,它们别离是Setuid(SUID)、Setgid(SGID) 和 Sticky Bit。 Setuid权限:通过Setuid权限,普通用户能够在执行某些特定程序时,领有与程序所有者雷同的权限。也就是说,该程序在执行时,会主动获取其所有者的权限,而不是执行者的权限。这通常用于一些须要root权限能力执行的程序。Setgid权限:通过Setgid权限,执行者能够在执行某个程序时,取得该程序所属组的权限,而不是执行者所在的组的权限。通常,Setgid权限用于一些须要共享拜访权限的目录,比方一个共享的工作目录。Sticky Bit权限:Sticky Bit权限通常用于某些共享的目录,它能够避免普通用户删除其余用户创立的文件。也就是说,一旦一个目录被设置了Sticky Bit权限,只有该目录的所有者和root用户能力删除该目录中的文件。这样能够防止其余用户意外删除其余用户创立的文件,保障了文件的安全性和完整性。场景实战假如有这样一个二进制程序/usr/bin/passctl,这个程序只能被root用户执行,而咱们心愿普通用户也能执行该程序,然而又不想将该程序赋予root用户以外的用户特权。这时,咱们能够应用Setuid权限来实现该目标。# 将该程序的所有者设置为root用户,并将该程序的权限设置为可执行,但不容许其余用户执行该程序chown root /usr/bin/passctlchmod 700 /usr/bin/passctl# 设置Setuid权限,以便普通用户执行该程序时能够取得与root用户雷同的权限chmod u+s /usr/bin/passctl这时候,该程序将以root用户的身份运行,并取得与root用户雷同的权限了。比方有一个普通用户tantianran,那么该用户就能够像上面这样运行该程序啦! /usr/bin/passctl留神,在理论工作中设置Setuid权限时,须要确保所设置的程序是平安的,防止潜平安危险。假如有一个团队正在开发一个 Web 应用程序,并且他们都是在同一个 Linux 服务器上工作。为了便于团队成员之间共享文件和目录,创立了一个名为 "webapp" 的共享目录。此外,还心愿确保任何新文件或目录在创立时都具备与父目录雷同的权限。为了实现这个场景,能够应用 Setgid 权限来配置 "webapp" 目录。# 创立演示的目录和用户、组[root@workhost ~]# mkdir -p /data/tmpdir/webapp[root@workhost ~]# chmod 775 /data/tmpdir/webapp/[root@workhost ~]# groupadd webappgroup[root@workhost ~]# useradd webappdev# 将 "webapp" 目录的所有者设置为 Web 应用程序的次要开发者,并将其所属组设置为 "webappgroup"。[root@workhost ~]# chown webappdev:webappgroup /data/tmpdir/webapp# 设置 "webapp" 目录的 Setgid 权限,这将导致任何新创建的文件或目录都将继承 "webapp" 目录的组权限。[root@workhost ~]# chmod g+s /data/tmpdir/webapp# 查看[root@workhost ~]# ls -ld /data/tmpdir/webapp/drwxrwsr-x 2 webappdev webappgroup 21 Apr 10 20:58 /data/tmpdir/webapp/[root@workhost ~]# 如果权限中有小写字母s,则示意 Setgid 权限曾经被设置 当初,团队成员能够在 "webapp" 目录中创立新文件和目录,并确保这些文件和目录都具备与 "webapp" 目录雷同的组权限。例如,如果开发者tantianran在 "webapp" 目录中创立了一个名为 "main.go" 的文件。 [root@workhost ~]# usermod -g webappgroup tantianran[root@workhost ~]# id tantianranuid=1000(tantianran) gid=1001(webappgroup) groups=1001(webappgroup),1000(tantianran)[root@workhost ~]# [root@workhost ~]# su - tantianranLast login: Mon Apr 10 20:55:24 CST 2023 on pts/0[tantianran@workhost ~]$ cd /data/tmpdir/webapp/[tantianran@workhost webapp]$ touch main.go# 该文件的权限将如下所示:[tantianran@workhost webapp]$ ls -ltotal 0-rw-r--r-- 1 tantianran webappgroup 0 Apr 10 20:58 main.go[tantianran@workhost webapp]$ 留神到该文件的所属组为 "webappgroup",这是因为 "webapp" 目录设置了 Setgid 权限,导致该文件继承了组权限。此外,团队内其余成员也能够拜访该文件,因为 "webapp" 目录的组权限容许组中的任何成员拜访它。 假如咱们有一个名为“shared_directory”的公共目录,用于寄存团队成员之间共享的文件。咱们心愿所有团队成员都能够向该目录上传文件,但只有文件所有者和超级用户能力删除文件。# 创立一个共享目录“shared_directory”[root@workhost ~]# mkdir /data/tmpdir/shared_directory# 设置Sticky Bit权限[root@workhost ~]# chmod +t /data/tmpdir/shared_directory[root@workhost ~]# ls -ld /data/tmpdir/shared_directory/drwxr-xr-t 2 root root 6 Apr 10 21:09 /data/tmpdir/shared_directory/[root@workhost ~]# # 创立两个测试用户账号“user1”和“user2”,并将它们增加到同一用户组[root@workhost ~]# useradd user1[root@workhost ~]# useradd user2[root@workhost ~]# groupadd shared_group[root@workhost ~]# usermod -aG shared_group user1[root@workhost ~]# usermod -aG shared_group user2[root@workhost ~]# # 将共享目录“shared_directory”的所有权更改为“root”用户和“shared_group”用户组[root@workhost ~]# chown root:shared_group /data/tmpdir/shared_directory/# 将目录权限更改为“rwxrwxrwt”,这将容许所有团队成员上传文件到目录中,但只有文件所有者和超级用户能够删除文件:[root@workhost ~]# chmod 1777 /data/tmpdir/shared_directory/[root@workhost ~]# ls -ld /data/tmpdir/shared_directory/drwxrwxrwt 2 root shared_group 6 Apr 10 21:17 /data/tmpdir/shared_directory/[root@workhost ~]# # 测试[root@workhost shared_directory]# sudo -u user2 touch test.go[root@workhost shared_directory]# ls -ltotal 0-rw-r--r-- 1 user2 user2 0 Apr 10 21:21 test.go[root@workhost shared_directory]# sudo -u user1 rm -f test.go rm: cannot remove ‘test.go’: Operation not permitted # 会收到一个谬误音讯,提醒没有权限删除该文件:[root@workhost shared_directory]# touch main.go[root@workhost shared_directory]# sudo -u user1 rm -f main.go rm: cannot remove ‘main.go’: Operation not permitted[root@workhost shared_directory]# sudo -u user1 touch conf.json[root@workhost shared_directory]# sudo -u user2 rm -f conf.json rm: cannot remove ‘conf.json’: Operation not permitted[root@workhost shared_directory]# 这个场景实战演示了如何应用Sticky Bit权限来管制公共目录的删除操作,以确保只有目录所有者和超级用户能够删除其余用户的文件。 最初的总结SUID权限(Set User ID on execution):当一个可执行文件被设置了SUID权限时,当任何用户执行该文件时,该文件将以文件所有者的权限来运行,而不是执行者的权限。SUID权限通常用于那些须要执行特定操作,而这些操作只能由具备特定权限的用户或组来执行的程序,例如passwd命令。这能够帮忙管理员在零碎中实现更严格的访问控制。SGID权限(Set Group ID on execution):当一个可执行文件被设置了SGID权限时,当任何用户执行该文件时,该文件将以文件所属组的权限来运行,而不是执行者的权限。与SUID权限相似,SGID权限通常用于那些须要特定组的权限能力运行的程序。例如,在一个共享文件夹中,如果一个目录设置了SGID权限,则新创建的文件将继承目录的组权限,而不是创建者的组权限,这能够确保在组共享文件夹中的文件访问控制。sticky bit权限:当一个目录被设置了sticky bit权限时,只有目录的所有者、root用户和文件的所有者能力删除目录中的文件。这种权限通常被用于公共目录,以避免其余用户意外删除或批改其他人上传的文件。当一个用户上传一个文件到该目录时,他或她只能批改或删除本人上传的文件,而不能批改或删除其他人的文件。总而言之,言而总之,这些非凡权限能够帮忙管理员更好地管制对文件和目录的拜访,并确保零碎的安全性和稳定性。本文转载于WX公众号:不背锅运维(喜爱的盆友关注咱们):https://mp.weixin.qq.com/s/zSWP-fr238SqmS-mkEQzFA

April 10, 2023 · 1 min · jiezi

关于linux:Linux-parallel-命令使用手册

@[TOC] 引言 GNU Parallel是一个开源的命令行工具,能够将多个命令行作业并行执行。它能够用于在多个CPU或计算机上同时运行命令行作业,从而进步作业处理速度。Parallel还能够帮忙您更好地利用系统资源,节省时间和精力。 在日常工作中,咱们常常须要解决大量的命令行作业,例如搜寻文件、解决数据、编译代码等等。这些作业通常须要破费大量的工夫和精力,而且可能会占用大量的系统资源。如果咱们可能将这些作业并行执行,那么就能够进步作业处理速度,节省时间和精力。 GNU Parallel提供了一种简略、灵便和高效的形式来并行执行命令行作业。它能够在多个CPU或计算机上同时运行作业,从而利用系统资源,进步作业处理速度。Parallel还能够帮忙您更好地管制并行度和资源利用率,从而防止零碎负载过高和资源节约。 在本博客中,咱们将介绍GNU Parallel的基本概念、用法和优缺点。咱们将演示如何应用Parallel来减速命令行作业、管制并行度和资源利用率,并提供一些应用Parallel的最佳实际和倡议。如果您须要在Linux零碎上解决大量的命令行作业,那么GNU Parallel是一个值得尝试的工具。 装置和配置GNU Parallel装置 GNU Parallel能够在Linux和其余Unix-like操作系统上运行,能够通过软件包管理器或源代码进行装置。在Debian/Ubuntu零碎中,您能够应用以下命令来装置GNU Parallel: sudo apt-get updatesudo apt-get install parallel 在Red Hat/CentOS零碎中,您能够应用以下命令来装置GNU Parallel: sudo yum install parallel 如果您想要装置最新版本的GNU Parallel,您能够从官方网站下载源代码,并依照以下步骤进行编译和装置: wget https://ftpmirror.gnu.org/parallel/parallel-latest.tar.bz2tar xjf parallel-latest.tar.bz2cd parallel-*./configuremakesudo make install配置 装置GNU Parallel后,您须要进行一些根本配置,以便应用Parallel来并行执行命令行作业。以下是一些常见的配置选项: --jobs:指定要并行执行的作业数量--load:指定要应用的零碎负载--memfree:指定要保留的零碎内存量--noswap:禁用替换空间--nice:指定要应用的过程优先级--timeout:指定作业的超时工夫 您能够在命令行中应用这些选项来配置Parallel。例如,以下命令将应用Parallel并行执行5个作业,并应用零碎负载不超过2: parallel --jobs 5 --load 2 command1 ::: arg1 arg2 arg3 您还能够将这些选项增加到Parallel的配置文件中,以便每次应用Parallel时主动加载这些选项。Parallel的配置文件通常位于用户主目录下的“~/.parallel/config”文件中。您能够编辑此文件,并增加您的配置选项,例如: --jobs 5--load 2--timeout 60 在本博客中,咱们介绍了如何装置和配置GNU Parallel。如果您想要应用Parallel来并行执行命令行作业,那么您须要进行一些根本配置,以便Parallel能够更好地适应您的环境和需要。 GNU Parallel的根本用法 GNU Parallel的根本用法非常简单,您只须要将要执行的命令和参数传递给Parallel即可。以下是一个根本的应用示例: parallel command1 ::: arg1 arg2 arg3 在这个示例中,咱们应用Parallel并行执行command1命令,并应用:::符号传递arg1、arg2和arg3参数。Parallel会主动将这些参数分成多个块,并并行地解决它们。您能够应用其余选项来管制并行度和资源利用率,例如--jobs选项来指定要并行执行的作业数量,--load选项来指定要应用的零碎负载等等。 ...

April 10, 2023 · 1 min · jiezi

关于linux:ps-备忘清单开发速查表分享

ps 命令速查备忘清单Linux咱们提供了一个名为 ps 的实用程序,用于查看与零碎上的过程相干的信息,它是 Process Status 的缩写这份 ps 命令备忘清单的疾速参考列表,蕴含罕用选项和示例。入门,为开发人员分享疾速参考备忘单。 开发速查表纲要入门 语法示例查看零碎上的每个过程打印过程树仅打印 PID 42 的名称获取无关线程的信息列出以后用户领有的所有过程获取平安信息查看以 root 身份运行的每个过程查看具备用户定义格局的每个过程仅打印 syslogd 的过程 ID显示面向用户的格局列出具备残缺格局的过程显示虚拟内存格局按无效用户 ID 或名称显示过程按理论组 ID 或名称显示过程暗藏 ps 命令输入的题目显示命令后的环境反复 ps 命令输入的题目行显示过程树

April 7, 2023 · 1 min · jiezi

关于linux:LinuxThe-Command-Line-Handbook-读书笔记下半部分

【Linux】《The Command Line Handbook》 读书笔记(下半局部)前言这篇博客介绍的命令的确比拟多,并且受到平台字数影响,拆分为高低两个局部。 与其说是读书笔记,实际上更像是学学英语顺带学学Linux命令。这本书是通过每天挤一点工夫边看边学边敲实现的,每天日常翻翻所以程序和原始博客网站长处不一样。 集体起初看这个“书”的时候PDF还是收费凋谢的,不过当初博主曾经转为免费了,然而在线版本仍然收费对外公开。 此外英文博主还出过很多小而美的初级教程,英文用词和语法都比较简单,非常适合像我一样词汇量单薄的人看看。 这个教程对于一些简略的Linux入门是用是十分足够,话不多说咱们间接开始。 英文博客网址网址:https://thevalleyofcode.com/linux/#54-traceroute 在最近的更新当中,作者改名并且把书名改为了《The Command Line Handbook》,在线网址如下:flaviocopes.com 介绍Linux是操作系统,和MacOs和Windows没什么区别。Linux“外围”(称为内核)于 1991 年在芬兰诞生,从其不起眼的开始经验了很长的路要走。它持续成为 GNU 操作系统的内核,创立了双核 GNU/Linux。 相比Windows和MacOs零碎不同的是,Linux是永恒收费的。如果你应用Mac,你须要晓得macOS是一个UNIX操作系统,它与GNU/Linux零碎有很多相独特的思维,Shell命令也甚至局部软件能够间接兼容,因为GNU/Linux是基于UNIX开源的。 而如果应用Windows,则提供了Windows Subsystem for Linux 来实现运行Linux的相干内容。然而集体并不举荐是用WSL来学习Linux命令。(更举荐虚拟机) 绝大多数下应用Linux是在VPS (Virtual Private Server) 等环境当中,Linux提供了shell来执行脚本或者文原本执行一系列操作。同时shell 容许以比 GUI(图形用户界面)更优化的形式执行操作。命令行工具能够提供许多不同的配置选项,并且应用过程中并不会特地简单。 最初留神,博主用的是Mac电脑编写的笔记,局部命令在CenterOs零碎和Ubuntu不肯定实用,请以集体试验成果为准。 chmod每个linux操作系统都具备三个权限,读取,写入,执行。 因为linux所有皆文件理念,能够发现这些设计和文件系统的常见操作一模一样。 应用命令ls -al能够列表查看目录所有文件,并且获取所有文件的读写权限。 ubuntu@VM-8-8-ubuntu:~$ ls -altotal 152drwxr-x--- 11 ubuntu ubuntu 4096 Apr 2 12:09 .drwxr-xr-x 4 root root 4096 Nov 10 07:16 ..-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 25 11:15 ''$'\033''[200~recipes.txt~'-rw-rw-r-- 1 ubuntu ubuntu 10240 Mar 25 14:45 archive.tar-rw------- 1 ubuntu ubuntu 11962 Apr 2 12:11 .bash_history-rw-r--r-- 1 ubuntu ubuntu 220 Jan 7 2022 .bash_logout-rw-r--r-- 1 ubuntu ubuntu 3771 Jan 7 2022 .bashrcdrwx------ 2 ubuntu ubuntu 4096 May 18 2022 .cachedrwxrwxr-x 2 ubuntu ubuntu 4096 Mar 25 16:51 compressdrwxr-xr-x 4 ubuntu ubuntu 4096 Mar 16 13:05 .configdrwxrwxr-x 4 ubuntu ubuntu 4096 Mar 26 21:32 currentdrwxrwxr-x 2 ubuntu ubuntu 4096 Mar 27 21:42 dif-rw-rw-r-- 1 ubuntu ubuntu 131 Mar 15 09:38 error.txtrwx代表所有的文件操作形象,也是对于文件操作权限形象,r 代表读取,w 代表吸入,x 代表运行。chmod 的非凡用法如下: ...

April 6, 2023 · 19 min · jiezi

关于linux:LinuxThe-Command-Line-Handbook-读书笔记上半部分

【Linux】《The Command Line Handbook》 读书笔记(上半局部)前言这篇博客介绍的命令的确比拟多,并且受到平台字数影响,拆分为高低两个局部。 与其说是读书笔记,实际上更像是学学英语顺带学学Linux命令。这本书是通过每天挤一点工夫边看边学边敲实现的,每天日常翻翻所以程序和原始博客网站长处不一样。 集体起初看这个“书”的时候PDF还是收费凋谢的,不过当初博主曾经转为免费了,然而在线版本仍然收费对外公开。 此外英文博主还出过很多小而美的初级教程,英文用词和语法都比较简单,非常适合像我一样词汇量单薄的人看看。 这个教程对于一些简略的Linux入门是用是十分足够,话不多说咱们间接开始。 英文博客网址网址:https://thevalleyofcode.com/linux/#54-traceroute 在最近的更新当中,作者改名并且把书名改为了《The Command Line Handbook》,在线网址如下:flaviocopes.com 介绍Linux是操作系统,和MacOs和Windows没什么区别。Linux“外围”(称为内核)于 1991 年在芬兰诞生,从其不起眼的开始经验了很长的路要走。它持续成为 GNU 操作系统的内核,创立了双核 GNU/Linux。 相比Windows和MacOs零碎不同的是,Linux是永恒收费的。如果你应用Mac,你须要晓得macOS是一个UNIX操作系统,它与GNU/Linux零碎有很多相独特的思维,Shell命令也甚至局部软件能够间接兼容,因为GNU/Linux是基于UNIX开源的。 而如果应用Windows,则提供了Windows Subsystem for Linux 来实现运行Linux的相干内容。然而集体并不举荐是用WSL来学习Linux命令。(更举荐虚拟机) 绝大多数下应用Linux是在VPS (Virtual Private Server) 等环境当中,Linux提供了shell来执行脚本或者文原本执行一系列操作。同时shell 容许以比 GUI(图形用户界面)更优化的形式执行操作。命令行工具能够提供许多不同的配置选项,并且应用过程中并不会特地简单。 最初留神,博主用的是Mac电脑编写的笔记,局部命令在CenterOs零碎和Ubuntu不肯定实用,请以集体试验成果为准。 man第一个命令是查问命令的命令,man帮忙咱们了解所有其余命令。不晓得如何应用命令时咱们能够键入 man <command> 来获取手册: LS(1) User Commands LS(1)NAME ls - list directory contentsSYNOPSIS ls [OPTION]... [FILE]...DESCRIPTION List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified. Mandatory arguments to long options are mandatory for short options too. -a, --all do not ignore entries starting with . -A, --almost-all do not list implied . and .. --author with -l, print the author of each file -b, --escape print C-style escapes for nongraphic characters --block-size=SIZE scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of 1,048,576 bytes; see SIZE format below -B, --ignore-backups do not list implied entries ending with ~man命令是学习Linux必不可少的工具,然而有时候为了疾速学习一个命令,并不是把参数列举就是好的,更多时候咱们会想要看到理论案例疾速上手。 ...

April 6, 2023 · 17 min · jiezi

关于linux:为什么我推荐你使用-systemd-timer-替代-cronjob

概述前几天在应用 Terraform + cloud-init 批量初始化我的实验室 Linux 机器。正好发现有一些定时场景须要应用到 cronjob, 进一步理解到 systemd timer 齐全能够替换 cronjob, 并且 systemd timer 有一些十分乏味的性能。 回归话题:为什么我举荐你应用 systemd timer 代替 cronjob? 因为相比 cronjob, systemd timer 有这些劣势: 能够笼罩 cronjob 的所有性能对立日志收集到 systemd 日志针对工夫精确度更具体的配置项除了定时场景,还反对基于 event 的触发相比 cronjob 更灵便的语法更丰盛的应用/运维命令集接下来咱们一一介绍。 首先咱们通过零碎自带的 timer 来相熟这个新玩意。 零碎自带的 timer当 Ubuntu 或任何基于 systemd 的发行版装置在一个新零碎上时,它会创立几个 timer,作为任何 Linux 主机后盾的零碎维护程序的一部分。这些 timer 会触发一般保护工作所需的事件,比方更新零碎数据库、清理长期目录、切割日志文件等等。 咱们应用systemctl status *timer命令列出我的主机上的所有 timer: casey@casey-Virtual-Machine:~$ systemctl status *timer● plocate-updatedb.timer - Update the plocate database daily Loaded: loaded (/lib/systemd/system/plocate-updatedb.timer; enabled; vendor preset: enabled) Active: active (waiting) since Tue 2023-04-04 16:49:49 CST; 19s ago Trigger: Wed 2023-04-05 00:40:16 CST; 7h left Triggers: ● plocate-updatedb.service4 月 04 16:49:49 casey-Virtual-Machine systemd[1]: Started Update the plocate database daily.● fwupd-refresh.timer - Refresh fwupd metadata regularly Loaded: loaded (/lib/systemd/system/fwupd-refresh.timer; enabled; vendor preset: enabled) Active: active (waiting) since Tue 2023-04-04 16:49:49 CST; 19s ago Trigger: Wed 2023-04-05 01:54:51 CST; 9h left Triggers: ● fwupd-refresh.service4 月 04 16:49:49 casey-Virtual-Machine systemd[1]: Started Refresh fwupd metadata regularly.● update-notifier-motd.timer - Check to see whether there is a new version of Ubuntu available Loaded: loaded (/lib/systemd/system/update-notifier-motd.timer; enabled; vendor preset: enabled) Active: active (waiting) since Tue 2023-04-04 16:49:50 CST; 19s ago Trigger: Sat 2023-04-08 03:19:02 CST; 3 days left Triggers: ● update-notifier-motd.service4 月 04 16:49:50 casey-Virtual-Machine systemd[1]: Started Check to see whether there is a new version of Ubuntu available.● fstrim.timer - Discard unused blocks once a week Loaded: loaded (/lib/systemd/system/fstrim.timer; enabled; vendor preset: enabled) Active: active (waiting) since Tue 2023-04-04 16:49:49 CST; 19s ago Trigger: Tue 2023-04-04 17:58:23 CST; 1h 8min left Triggers: ● fstrim.service Docs: man:fstrim4 月 04 16:49:49 casey-Virtual-Machine systemd[1]: Started Discard unused blocks once a week....每个 timer 至多有六行信息与之相干: ...

April 5, 2023 · 6 min · jiezi

关于linux:细节拉满80-张图带你一步一步推演-slab-内存池的设计与实现

1. 前文回顾在之前的几篇内存治理系列文章中,笔者带大家从宏观角度残缺地梳理了一遍 Linux 内存调配的整个链路,本文的主题仍然是内存调配,这一次咱们会从宏观的角度来探秘一下 Linux 内核中用于零散小内存块调配的内存池 —— slab 分配器。 在本大节中,笔者还是依照以往的格调先带大家简略回顾下之前宏观视角下 Linux 内存调配最为外围的内容,目标是让大家从宏观视角平滑地适度到宏观视角,内容上有个连接,不至于让大家感到突兀。 上面的内容咱们只做简略回顾,大家不用纠缠细节,把握整体宏观流程在 《深刻了解 Linux 物理内存调配与开释全链路实现》一文中,笔者以内核物理内存调配与开释的 API 为终点,具体为大家介绍了物理内存调配与开释的整个残缺流程,以及相干内核源码的实现。 其中物理内存调配在内核中的全链路流程如下图所示: 在 Linux 内核中,真正负责物理内存调配的外围是搭档零碎,在咱们从总体上相熟了物理内存调配的全链路流程之后,随后咱们持续来到了搭档零碎的入口 get_page_from_freelist 函数,它的残缺流程如下: 内核通过 get_page_from_freelist 函数,挨个遍历查看各个 NUMA 节点中的物理内存区域是否有足够的闲暇内存能够满足本次的内存调配要求,当找到合乎内存调配规范的物理内存区域 zone 之后,接下来就会通过 rmqueue 函数进入到该物理内存区域 zone 对应的搭档零碎中调配物理内存。 那么内核既然曾经有了搭档零碎,那么为什么还须要一个 slab 内存池呢 ?上面就让咱们从这个疑难开始,正式拉开本文的帷幕~~~ 2. 既然有了搭档零碎,为什么还须要 Slab ?从上篇文章 《深度分析 Linux 搭档零碎的设计与实现》第一大节 “1. 搭档零碎的外围数据结构” 的介绍中咱们晓得,内核中的搭档系统管理内存的最小单位是物理内存页 page。 搭档零碎会将它所属物理内存区 zone 里的闲暇内存划分成不同尺寸的物理内存块,这里的尺寸必须是 2 的次幂,物理内存块能够是由 1 个 page 组成,也能够是 2 个 page,4 个 page ........ 1024 个 page 组成。 ...

April 5, 2023 · 18 min · jiezi

关于linux:Linux系统中如何强制用户定期修改密码

只管 Linux 被认为是一个平安的操作系统,但它的安全性与登录用户的明码强度成等比关系。设置明码策略以确保用户设置了高强度的明码。作为 Linux 用户,您应该留神执行这些策略,以避免产生违规行为。你必定不心愿用户配置弱或易猜的明码,这些明码能够在几秒钟内被黑客强行破解。 在本文中,咱们将介绍如何在 Linux 中施行明码策略。咱们将介绍明码策略的施行,如明码有效期、明码复杂度和明码长度。 在 Ubuntu / Debian 执行明码策略执行明码策略次要有两种办法,让咱们来具体理解一下。 (1) 配置明码的最长应用天数首先,您能够配置一个明码策略,要求用户在肯定天数后更改明码。最佳实际表明,应该定期更改明码,以放弃歹意用户的均衡,并使他们更难侵入您的零碎。这不仅实用于 Linux,也实用于其余零碎,如 Windows 和 macOS。 要在 Debian / Ubuntu 中实现这一指标,您须要批改 /etc/login.defs 文件,找到 PASS_MAX_DAYS 属性,默认状况下,该工夫设置为 99999 天,如下所示。 您能够将其批改为正当的持续时间,例如 30 天。超过 30 天后,您将被迫创立另一个明码。 (2) 应用 pam 配置明码复杂度确保明码满足肯定的复杂性同样至关重要,进一步挫败黑客使用暴力浸透您的零碎。 一般来说,强明码应该是大写、小写、数字和特殊字符的组合,长度至多应该是 12-15 个字符。 要在 Debian / Ubuntu 中执行明码复杂性,您须要装置 libpam-pwquality 软件包,如下所示: $ sudo apt install libpam-pwquality 从您要设置明码策略的中央拜访 /etc/pam.d/common-password 文件,默认状况下,如图所示: 找到上面的行 password requisite pam_pwquality.so retry=3向该行增加以下属性 minlen=12 maxrepeat=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 difok=4 reject_username enforce_for_root整行代码应该如图所示 ...

April 2, 2023 · 1 min · jiezi

关于linux:OpenCloudOS-90-发布首个全自研服务器操作系统

零碎开源社区 OpenCloudOS 正式公布首个全自研社区 9.0 版本(以下简称 OC 9.0)。据理解,该版本由腾讯等十余家企业共同开发并长期保护,其内核及用户态软件均为自主选型、独立演进,在操作系统发行版的全链路均实现自主可控。 操作系统等根底软件是信息技术的根基,也是亟需实现冲破,把握更多自主知识产权的要害核心技术畛域。 以后,服务器操作系统发行版蕴含从 L1 到 L3 的不同层级。其中,L1 基于 Linux 内核及外围组件构建,是最上游的「源社区」版本;L2 企业版基于 L1 源社区版本加固,提供企业级的技术支持及服务,可用于实在业务场景,是稳固牢靠的发行版本;L3 社区版基于 L2 企业版进一步优化,是代码齐全开源、生态全面凋谢的发行版本。 早在 2010 年,腾讯就曾经推出自研操作系统 TencentOS。TencentOS Server 在资源调度弹性、容器反对、零碎性能及平安方面均有降级,更适宜云环境,在腾讯的服务器中被大量采纳,简直笼罩了腾讯所有的业务。 在腾讯操作系统研发逐步步入成熟的阶段,2021 年,OpenCloudOS 操作系统开源社区正式诞生。腾讯将十余年技术积攒悉数投入,成为 OpenCloudOS 的次要发起者和核心技术贡献者。OpenCloudOS 以打造从 L1 到 L3 全笼罩的操作系统发行版为特色,致力于研发自主可控的下一代云原生操作系统,并以社区为依靠,建设操作系统开源生态。 OpenCloudOS 社区 TOC(技术监督委员会)主席、腾讯云副总裁郭振宇示意: 从 L1 到 L3 的研发模式是一种残缺成熟的操作系统研发模式,只有通过这样的模式,从源头社区切入,能力真正解脱内部依赖,长期衰弱倒退。往年 1 月,L1 源社区的 OpenCloudOS Stream 正式公布,在云原生、稳定性、性能等方面均有撑持,能够全面地反对所有硬件平台,提供自主翻新的上游版本。 本次公布的 L3 社区版 OC 9.0,是基于 L1 源社区的 OpenCloudOS Stream 优化推出,由腾讯与 Intel、北京红旗、中兴、龙芯、中科方德等二十余家单位独特研发。OC 9 使 用上游社区最新内核 Kernel 6.1,提供多体系架构和新硬件反对,多核性能优化,混部隔离个性加强。同时,MGLRU、Mapple Tree 等个性晋升内存管理效率,具备欠缺的 Cgroup V2 反对、多架构热补丁反对,并提供粗疏化的调优与零碎适配。 ...

March 31, 2023 · 1 min · jiezi

关于linux:深入理解-python-虚拟机pyc-文件结构

深刻了解 python 虚拟机:pyc 文件构造在本篇文章当中次要给大家介绍一下 .py 文件在被编译之后对应的 pyc 文件构造,pyc 文件当中的一个核心内容就是 python 字节码。 pyc 文件pyc 文件是 Python 在解释执行源代码时生成的一种字节码文件,它蕴含了源代码的编译后果和相干的元数据信息,以便于 Python 能够更快地加载和执行代码。 Python 是一种解释型语言,它不像编译型语言那样将源代码间接编译成机器码执行。Python 的解释器会在运行代码之前先将源代码编译成字节码,而后将字节码解释执行。.pyc 文件就是这个过程中生成的字节码文件。 当 Python 解释器首次执行一个 .py 文件时,它会在同一目录下生成一个对应的 .pyc 文件,以便于下次加载该文件时能够更快地执行。如果源文件在批改之后被从新加载,解释器会从新生成 .pyc 文件以更新缓存的字节码。 生成 pyc 文件失常的 python 文件须要通过编译器变成字节码,而后将字节码交给 python 虚拟机,而后 python 虚构机会执行字节码。整体流程如下所示: 咱们能够间接应用 compile all 模块生成对应文件的 pyc 文件。 ➜ pvm lsdemo.py hello.py➜ pvm python -m compileall .Listing '.'...Listing './.idea'...Listing './.idea/inspectionProfiles'...Compiling './demo.py'...Compiling './hello.py'...➜ pvm ls__pycache__ demo.py hello.py➜ pvm ls __pycache__ demo.cpython-310.pyc hello.cpython-310.pycpython -m compileall . 命令将递归扫描当前目录上面的 py 文件,并且生成对应文件的 pyc 文件。 ...

March 28, 2023 · 4 min · jiezi

关于linux:如何在安装-Linux-后修复-Windows-EFI-分区

最近在电脑上装置了最新的 Arch Linux,这次不同于之前,应用了 Gnome 的桌面环境,用起来还不错,所以就依照我之前的配置文件,光速配置了一下电脑。然而当我配置 Windows 双启动的时候,却找不到 Windows 的 EFI 分区了,很奇怪,我的两个零碎装置在两个硬盘里,所以不存在我误操作删除 EFI 分区的问题。而且我在 Linux 零碎还能挂载 Windows 的数据,数据也没有失落。 而后我尝试搜寻问题呈现的起因,没找到,不过却找到了解决方案,办法倒是不是特地难,用到了一个 Windows 的bcdboot命令,这里记录一下。 第一步,筹备一个 Windows 的装置介质 第二步,boot 进 live 装置零碎,顺次点击Repair Computer > Troubleshoot > Advanced > Command Prompt 第三步,进入命令提示符后,应用以下命令显示分区: $ diskpart // 运行diskpartdiskpart> list disk // 列出所有硬盘,每个硬盘都有一个编号(e.g. 0/1/2)diskpart> sel disk <disk_id> // 抉择Windows零碎EFI分区所在的硬盘diskpart> list vol // 列出所有分区diskpart> sel vol <volume_id> // 抉择EFI分区diskpart> assign letter=F // 调配EFI一个新盘符diskpart> exit //退出$ bcdboot C:\Windows /s F: /f ALL // 创立所有Windows boot files到F盘$ reboot //重启即可失常进入Windows首发于集体博客:方寸之间 ...

March 28, 2023 · 1 min · jiezi

关于linux:从底层操作系统到容器云平台OpenCloudOS-与秒云构筑完美兼容链

近日,成都元来云志科技有限公司(简称「秒云」)的秒云容器云平台和秒云日志剖析零碎与 OpenCloudOS 实现互相兼容认证,测试期间,整体运行稳固,在性能、性能及兼容性方面体现良好。 一、产品简介作为开源操作系统社区,OpenCloudOS 积淀了腾讯及多家厂商在软件和开源生态的劣势,在云原生、稳定性、性能、硬件反对等方面均有松软撑持,能够平等全面地反对所有硬件平台。目前,OpenCloudOS 已反对 X86_64、ARM64、RISC-V 架构,适配 飞腾、海光、兆芯、鲲鹏等芯片。同时提供反对全栈国密和秘密计算,另有 300 余家企业产品与 OpenCloudOS 操作系统实现适配。 深厚的技术积攒与不断创新,让 OpenCloudOS 在社交、游戏、金融领取、AI、平安、大数据等实在业务场景中,经验了千万级节点的长时间验证,可用性高达 99.999% 。相比 CentOS 7 和其余开源社区版本,OpenCloudOS 故障率升高 70% 以上,且在典型业务场景中性能晋升超 50% 。 想理解更多信息,可扫描下方二维码,退出 OpenCloudOS 社区群。 作为国内首家专一于云原生智能运维的公司,秒云专一于企业云原生环境下的智能运维需要,以「一秒入云,一键智维」为产品理念,打造一体化的云原生智能运维中台,内置云原生容器治理底座,针对云原生利用进行构建、编排、部署、观测、治理等全生命周期交付治理,疾速、平安、牢靠的落地云原生利用,最大化升高企业在云原生环境上的运维投入,让企业可能更专一于本身利用的开发和交付。 秒云容器云平台是一款开箱即用的企业级容器云平台,基于 Kubernetes 外围底座,产品以「让容器应用更简略」为外围设计理念,以可插拔的形式深度整合数十种云原生开源组件,提供简略易用、逐渐进阶、一致性操作体验的多云多集群治理、多租户治理、Linux 和 Windows 利用全生命周期治理、容器和虚拟机对立治理、共享 GPU 调度、CI/CD、微服务治理等性能,最大化的屏蔽底层技术细节,极大升高容器技术应用门槛,重点解决企业生产环境中的基础设施云化,利用部署简化,运维治理自动化等难题。 秒云日志剖析零碎自研数据解析和搜寻减速引擎,采纳多维写时建模,实现 0 延时解决和 0 延时搜寻。是集日志采集、解析、检索、剖析、告警、响应于一体的实时日志对立剖析平台。专一于集中处理多起源、多格局、多采集协定的海量结构化/非结构化日志数据,反对从芯片、服务器到操作系统的全系信创生态。 产品基于云原生容器化架构,以简略易用为产品外围设计理念,内置多种搜寻剖析工具,提供全图形化操作界面,0 代码定制开发个性化的日志剖析利用。帮忙客户不便、疾速的从海量日志中定位问题,构建运维全景剖析视图,进步运维效率,升高运维老本。实用于日志运维、业务剖析等 AIOps 场景,同时满足等保合规、安全监控等需要,胜利服务于金融、能源、政府、运营商及互联网等诸多行业客户。 二、测试认证过程本次兼容性认证测试包含且不限于验证秒云容器云平台治理节点部署、主机池治理、集群治理、域治理、项目管理、利用编排、调度治理、健康检查、镜像治理、监控告警、容器组高可用测试等 24 个业务功能测试。 实现秒云日志剖析零碎功能测试,包含零碎部署、接入数据源、数据解析、数据源搜寻、数据源模型搜寻、图标、仪表盘、告警规定、用户治理、系统监控等 10 个业务性能测试用例。 三、测试认证论断本次测试蕴含 34 个业务性能测试用例,全副通过测试认证,测试期间各性能运行稳固,所有用例、场景均合乎测试通过规范,没有呈现任何异样。通过以上多项测试表明,成都元来云志科技有限公司的秒云容器云平台、秒云日志剖析零碎与 OpenCloudOS 操作系统齐全适配,单方齐全满足产品兼容认证要求。 云原生时代,秒云高度重视云生态畛域的单干与建设,致力于打造国内平台平安生态, OpenCloudOS 社区致力于打造一个齐全中立、全面凋谢、平安稳固、高性能的操作系统及生态。 秒云期待与 OpenCloudOS 社区内更多生态搭档一起,共建以开源操作系统为外围的整体运行稳固,性能、兼容性等各方面体现卓越,满足用户需要的云原生智能运维平台,赋能数智化产业蓬勃发展。 欢送扫描下方二维码,退出社区交换群,即可收费获取各种 OpenCloudOS 相干的技术支持,参加群内抽奖流动。 ...

March 28, 2023 · 1 min · jiezi

关于linux:深入理解Linux中的nohup命令

前言当咱们在Linux或Unix零碎上执行一个长时间运行的命令或脚本时,咱们通常会遇到一个问题,那就是在终端敞开或者退出后,该过程也会随之进行运行。在这种状况下,咱们须要一种形式来让过程在后盾运行,而不受终端敞开的影响。这时,nohup命令就派上用场了。 nohup是什么?nohup是Linux和Unix零碎中的一个命令,其作用是在终端退出时,让过程在后盾持续运行。它的全称为“no hang up”,意为“不挂起”。nohup命令能够让你在退出终端或敞开SSH连贯后持续运行命令。 nohup语法规定nohup命令的根本语法如下: nohup COMMAND [ARGS ...] [> output-file 2> error-file] &其中的参数含意如下: COMMAND:须要在后盾运行的命令或脚本。ARGS:命令或脚本的参数。> output-file:输入重定向到指定的文件中。2> error-file:错误信息重定向到指定的文件中。&:将命令放在后盾运行。nohup命令的执行过程分为以下几个步骤: nohup命令将以后shell的规范输出、规范输入和规范谬误输入全副重定向到/dev/null设施中,防止被敞开终端的信号所中断。nohup命令将过程放到后盾执行,并将过程的PID输入到终端。过程开始执行,并将规范输入和规范谬误输入重定向到指定的文件中。用户能够退出终端或敞开终端窗口,过程依然在后盾运行。nohup应用办法应用nohup命令非常简单,依照下面的根本语法即可。以下是一些nohup命令的用法示例: 后盾运行命令要在后盾运行命令,只须要在命令行中输出以下命令即可: nohup COMMAND &例如,在后盾运行一个Bash脚本: nohup bash test.sh &规范输入重定向到文件nohup bash test.sh > stdout.txt &规范谬误输入重定向到文件nohup bash test.sh 2> stderr.txt &将规范输入和规范谬误输入都重定向到文件1. 重定向到同一文件 nohup bash test.sh > output.txt 2>&1 &2. 重定向到不同文件 nohup bash test.sh > stdout.txt 2> stderr.txt &3. 一个更为简单的例子,重定向规范输出(stdin): nohup ./myprogram > foo.out 2> foo.err < /dev/null &这里多进去一个< /dev/null,意思是将规范输出重定向到/dev/null,以确保程序不会从规范输出中读取任何数据。 这个是为了解决一个理论问题:SSH会话经常回绝登记(或者挂起),因为它不违心去失落与后盾job(s)进行交互的数据。当遇到这个问题的时候,能够应用下面的命令,通过三次重定向来解决。 nohup后盾过程治理应用 jobs 命令能够查看以后 shell 中后盾运行的工作列表,包含工作编号、状态和命令。 ...

March 27, 2023 · 1 min · jiezi

关于linux:操作系统跻身国家战略中国操作系统开源社区走向何方

前言:近年来随着国际形势巨变,中国在多个关键技术畛域都面临着难题,外部需要和外部环境的变动正在减速国内操作系统的进化降级。与此同时,不少操作系统都在打造开源社区,汇聚各方力量,以此晋升操作系统的话语权和位置。  随着国家层面、公司策略层面对开源的器重水平越来越高,中国开源也逐步迎来了倒退的高光时刻。作为国内当先的 DPU 企业,大禹智芯同样借助于 OpenCloudOS 这样的国内开源社区平台,推动与 DPU 相干的新型架构在标准化、兼容性等方面的高速倒退。  但跟先发厂商比,国内操作系统除了技术层面的差距,生态系统的建设也仍然道阻且长,咱们不禁要问,国内开源社区之路又将走向何处? 以下文章内容来自大禹智芯软件研发部负责人王伟在「新一代根底软件倒退与国家数字经济平安研讨会」上的分享《中国服务器操作系统开源社区倒退的思考》。 本文从企业级开发者的维度,从使用者和参与者的角度登程,联合本身 DPU 的运作环境以及开发过程中遇到的问题,剖析以后操作系统的倒退现状与需要,进而探讨国内开源操作系统社区的业务模式和生态倒退。 一、DPU的系统结构与运行环境家喻户晓,DPU 是一种专门为网络数据处理而生的全新处理器类型,是继 CPU、GPU 当前的云计算第三引擎。其呈现将推动计算架构从以算力为核心向以网络通讯为核心进行转变。而 DPU 作为底层基础设施组件,要实现这样技术架构的降级和变革,势必须要与下层的应用层进行连接,同时波及到宏大的生态协同和共建,所以开源操作系统也是 DPU 重点关注的一环。 在上图中,左图是传统服务器的构造,网络数据间接交由 CPU 解决,CPU 在解决业务的同时,还须要解决沉重的通信、虚拟化工作,使得 CPU 的无效使用率大幅度降落。部署 DPU 当前,网络数据则将首先经由 DPU,目前常见的 DPU 应用状态是通过 PCIE 接口与 Host 相连,在 DPU 上运行一个独立的操作系统,下面运行着用户以及厂商的应用软件,DPU 会针对网络、存储、平安等畛域对数据做一些预处理,让应用程序更专一于解决业务逻辑。   DPU 系统结构DPU 是集芯片、硬件板卡、操作系统以及应用软件的一整套解决方案。从逻辑构造上看,DPU 领有与主机局部雷同的逻辑处理单元,甚至领有额定的减速单元,能够说,DPU 就是一台部署在服务器外部的「服务器」。但 DPU 的集成度更高,数据处理会通过非凡调度与减速单元。DPU 也可作为 CPU 的平安壁垒,保障 CPU 的数据和网络安全。 DPU 可通过 PCIE 提供 Ethernet 和 Storage 相干性能,反对 SRIOV、VirtIO、NVMe 等规范驱动,用户通过正当的划分,将局部逻辑跑在 DPU OS 上,协同配合管制 DPU 做数据处理,因而 DPU OS 须要有和 Host OS 雷同的软件兼容性,以此升高用户的开发成本。而且在 DPU OS 中,会存在一些与 CPU OS 通信的需要,因而这块也是 DPU OS 标准化的一个很重要的局部。 ...

March 24, 2023 · 2 min · jiezi

关于linux:linux-如何不用每次sudo-都输入密码

在 Linux 中,您能够通过配置 /etc/sudoers 文件,让指定的用户在执行 sudo 命令时无需输出明码。 以下是一些操作步骤: 关上终端并以管理员身份运行命令 sudo visudo 以编辑 /etc/sudoers 文件。在文件开端增加以下行:username ALL=(ALL) NOPASSWD: ALL其中,将 username 替换为您要免明码的用户名。这条命令示意让该用户在任何状况下执行 sudo 命令时都无需输出明码。保留并退出编辑器。请留神,visudo 命令会查看您的语法是否正确,如果有谬误,将无奈保留文件。当初,指定的用户就能够在执行 sudo 命令时无需输出明码了。 请留神,将用户增加到 /etc/sudoers 文件是一项高级工作,如果您不相熟 sudo 和 /etc/sudoers 文件的用法,请小心操作,以防止对系统造成潜在的侵害。

March 22, 2023 · 1 min · jiezi

关于linux:crontab-每小时触发一次

要让 crontab 每小时触发一次,能够应用以下格局: 0 * * * * /path/to/command这个 crontab 示意,在每个小时的 0 分钟执行一次 /path/to/command 命令。这个表达式的五个星号别离示意: * * * * *| | | | || | | | ----- Day of the Week (0 - 6) (Sunday is 0 or 7)| | | ------- Month (1 - 12)| | --------- Day of the Month (1 - 31)| ----------- Hour (0 - 23)------------- Minute (0 - 59)在这个表达式中,前四个星号能够用来指定日期和工夫的范畴,最初一个星号用于指定分钟数。因为咱们心愿每小时触发一次,所以分钟数固定为 0。 留神,如果您应用的是 systemd 而不是传统的 cron,则能够应用 systemd 的定时器来代替 crontab。在这种状况下,能够应用 systemd 的 OnCalendar 选项来设置相似于 crontab 的时间表。 ...

March 22, 2023 · 1 min · jiezi

关于linux:Linux-xargs命令介绍

 Linux 中的 xargs 命令是一个十分有用的命令行工具,能够将一些参数汇合传递给其余命令作为参数,并利用指定的命令进行解决。它能够帮忙咱们批量解决文件,执行一些须要多个参数的命令,并且反对并发操作。 通过将 xargs 命令与其余命令进行配合,咱们能够通过一条命令批量解决多个文件,而且能够非常灵活地解决多个文件。xargs 命令的用处十分宽泛,它能够在日常应用中帮忙咱们提高效率,让咱们更好地治理和解决文件。 代码示例上面举一些 xargs 命令的具体例子,不便大家理解其应用的形式: 示例1:删除多个文件 你能够应用 find 命令找到须要删除的文件列表,并通过管道传递给 xargs 命令来执行删除操作。例如,删除 /tmp 目录下所有扩大名为 .txt 的文件: find /tmp -name "*.txt" | xargs rm示例2:将多个文件传递给其余命令 你能够应用 xargs 命令将多个文件传递给其余命令,例如应用 du 命令来计算多个文件的总大小。执行以下命令: ls | xargs du -sh这将输入当前目录下的所有文件的大小,并输入一个总计。 示例3:更改多个文件的权限 你能够应用 xargs 命令执行多个文件的权限更改操作。例如,将当前目录下的所有 .sh 文件的文件权限更改为可执行: ls *.sh | xargs chmod +x示例4:将多条命令传递给 xargs 你能够在 xargs 命令中传递多条命令,并在传递文件列表时,让这些命令顺次执行。例如,找到某个目录中以 .txt 结尾的文件,并将它们复制到 /home/user 目录并输入复制的文件名: find /data -name "*.txt" -print0 | xargs -0 sh -c 'echo $0 && cp $0 /home/user' {}示例5:在命令行中交互式运行xargs 你能够应用 -i 参数在命令行中交互式运行 xargs 命令,并依据每个参数提醒用户输出一些信息。例如,找到所有 /tmp 目录下的 .txt 文件,并让用户一一确认是否要删除这些文件: ...

March 19, 2023 · 1 min · jiezi

关于linux:Linus-自传读后感-Part2-从书呆子诞生扯到现代教育

图片起源:www.vic-20.it 本文包含 Linus 自传 [Just for FUN 读书笔记] —— 一个书呆子(Nerd)的诞生 局部的读后感。讲述了 Linus 如何与计算机结缘。察看Linus 幼年时,比照现代科技环境与社会文化环境后的一些感想。也聊聊古代教育鸡娃的事实。作为一个程序员,同时也是一个小学生的家长,我的浅见。 正如看 《乔布斯传》并不是想或认为可能成为一样的人一样,看本文,也不是要让读者或者读者的娃成为 Hacker/Geeker 。 后面写完了:[Linus 自传 [Just for FUN]读后感 - Part1 前言](https://blog.mygraphql.com/zh/notes/wu/biography/linus/just-f...) 后。这次开始讲内容。 之前,本系列文章命名为“读书笔记”,但前面写着写着,我感觉更适合的名字是:“读后感”。因为我更多是想把读后的想法,更多是联合本人从业20年码龄30年,以来的一些见解写下来(无论是正解还是误会)。 有时候,我会问问本人,为什么要写这些货色。流量上可能写个 ChatGPT 更好。刷简历上还不如写写 eBPF 或 Cloud Native 的货色。或者只为想写就写吧。说些诗和远方的货色。或者 50 年后,有意思的反而是这些。 全书能够分为三局部: 一个书呆子(Nerd)的诞生。作为自传,当然要说说主人公的出世国家和天文文化特色了。一个操作系统(Linux)的诞生。讲述 Linus 为何要开发 Linux,以及其中乏味且充斥戏剧性的小故事。所向无敌的球王(King Of The Ball)。讲述 Linux 胜利与风行后,Linus 的遇到的麻烦事与播种。以及 Linus 在哲学上对人生意义的见解。这是本书占比最大的局部。能够再细分为 Linux 商标知识产权之争管制的终结后方的游乐之旅探讨开源为何正确名成利就生命的意义探讨 II本文次要讲述:1. 一个书呆子(Nerd)的诞生。 I. 自画像 Linus 对年老时的本人作以下自画像: 仿佛 Linus 很在意本人的大鼻子,在本书中,可能有 10 处说本人有个家族特色的大鼻子。衣着上和大多数书呆子(Nerd)/Geeker 一样,都是无特色的大巷货。和大多数计算机天长一样,数学与物理对于他来说,是不须要学习就成为学霸的科目。社交能力是失常书呆子的程度,即 no social graces whatsoever(没有任何社交礼节)。 ...

March 17, 2023 · 3 min · jiezi

关于linux:面向技术爱好者的主机远程协同工具之开发指南

导言说起主机管理工具,你是否用过资源监控、终端治理、主机面板、远程桌面、堡垒机之类的工具来治理和监控主机,却仍旧面临以下问题: 笔记本没带,服务器的 SSH 认证私钥只在笔记本上,没有私钥登不下来家里有台机器,然而网络受 NAT 的影响,出了门就连不回家里的内网,无奈近程连贯内网主机出于工作须要,在阿里云、腾讯云、华为云等等各种云下面买了一大堆机器,常常忘了本人有哪些机器,还不能对立治理运维要求 SSH 端口不能对外开放,连个 SSH 须要好几层堡垒机出门在外没有电脑,只有手机,想看看服务器的状态...作为一位研发&运维&平安技术爱好者,长期饱受以上问题的困扰。一次酒足饭饱后,与三个程序员一拍即合,决定做一个供本人应用的主机治理小工具。几天后公布了第一版,发现身边不少敌人都有同样的困扰,于是决定做一个公开服务,并正式给工具命名:牧云主机治理助手。上线不到一个月就有超过 1000个敌人注册应用,这篇文章将分享玩法儿并揭秘开发思路,欢送同为技术爱好者前来体验交换~ 在线体验:https://rivers.chaitin.cn/01. 面临的挑战做技术的敌人必定都相熟终端,终端是治理计算机最简略间接的形式。为了让本人用起来更爽一点,咱们决定对终端做一些加工,整顿了一下,次要是上面几个问题须要解决: 能连贯近程服务器的终端 服务器没有公网 IP 也要能连不开 ssh 服务也要能连反对对终端做近程帮助 多人同时对同一个终端进行操作观看近程操作时能复制终端里的文本反对录制终端操作,能重复观看安全性 能够应用账号密码登录,能够对指定用户免密登录须要在服务器留下规范登录日志02. 设计思路1. 服务端服务端架构绝对简略,在服务器上安装 Agent,用 Agent 拉起本地终端,用一台公网服务器做直达,通Websocket 将终端的输入输出喂给前端,参考下图: 2. Web 终端Web 终端采纳 Xterm.js,轮子不错,应用体验和本地终端基本一致,省了很多事,就是有几个小问题: Bug 不少,字体偶然会跑飞性能有点拉跨,依赖 GPU,屏幕越大越卡受浏览器限度,Ctrl-w 和 esc 没法用3. AgentAgent 的局部,间接用 login 命令搞定 login 程序间接调用就有一个看起来还不错的登录界面login -f 就能间接跳过明码认证免密登录login 本人会把登录日志写到 btmp 和 wtmp 里这样一来 login 程序齐全满足需要,只须要把 login 过程的 stdint/stdout/stderr 和网络连接绑定起来就能够。不过也有小问题:centos 默认开了 selinux,会对 login 的登录行为有烦扰,root 无奈应用明码登录。 4. 协同计划对于如何多人合作应用终端的问题,tmate 是目前被宽泛应用的计划,然而不合乎咱们的要求,咱们想要的计划: 不依赖 ssh 或其余客户端不依赖公网环境,可穿透内网能够抉择 ”只能观看终端“ 和 ”能够操作终端“ 两种模式能反对文件上传下载实现其实非常简单,只须要把 Agent 的输入输出复制进去,别离发给不同的 Websocket 就能够,参考下图: 03. 打开方式微信扫码登录百川云平台https://rivers.chaitin.cn/绑定你的主机 点击在线终端 > 分享按钮,能够一键生成拜访链接。 在另一个浏览器里关上分享链接,这时候就能够两边同步操作了,如丝个别顺滑。 除了近程协同,牧云主机治理助手还提供资源监控、文件治理等性能,且对一般个人用户都是收费的,然而如果你十分有钱,也非常感激你能不吝打赏五毛~  咱们为了讨同为死宅程序员们的欢心,还花了半早晨工夫 P 图,定制了一套 Miku 皮肤,这里成心不说换肤入口,谁找到谁先用~ 后续打算: Windows 版本:反对治理 Windows 主机私有化版本:提供独立部署能力,给临时不方便使用 SaaS 服务的用户应用开源:期待性能绝对欠缺后,我的项目源码最终咱们会以开源的形式回馈技术社区欢送大家加 CTRivers 万能小助手 入群踊跃探讨:发现 Bug 有 ¥8.88 的现金红包提需要被驳回有 ¥8.88 的现金红包:

March 17, 2023 · 1 min · jiezi

关于linux:通过HHDESK将windows中的文件转移至Linux系统中

跨零碎转移文件始终来说,是一件繁琐的事件,而HHDESK的新性能SMB连贯,让这件事件变得简略而不便。 1 在windows零碎中,设置共享文件夹1)将须要转移的文件放入文件夹中,右键文件夹——属性——共享;2)点击高级共享——权限,默认抉择Everyone;3)如图所示,全副勾选“容许”。 备注:图片程序从左至右。 2 在Linux零碎上应用HHDESK连贯Windows零碎注:笔者这里是英文零碎1)点击连贯(Connect Manager);2)新增连贯,设置如图所示,留神需抉择SMB连贯;3)点击连贯(Connect)。备注:此连贯须要输出Windows零碎下的账户名和明码,如果账户没有设置明码,则无奈连贯胜利。 3 复制/转移文件夹在右侧文件夹中抉择须要转移的文件,右键复制(Copy),而后粘贴至左侧文件栏即可。倡议:新建一个文件夹,将文件全副搁置于此,避免凌乱。

March 17, 2023 · 1 min · jiezi

关于linux:Linux-Nginx-Keepalived-高可用配置

家喻户晓,NGINX 是一个广受好评的 web 服务器,也能够用作反向代理,负载均衡器和 HTTP 缓存。keepalive 工作在虚构路由器冗余协定 VRRP (Virtual Router Redundancy Protocol) 上,它容许一个动态 IP 在两个 Linux 零碎之间进行故障转移。 在本文中,咱们将演示如何在 Linux 中应用 keepalive 设置高可用 (HA) NGINX web 服务器。 试验筹备Node 1 – 192.168.1.130 – nginx1.example.com – minimal CentOS 8 / RHEL 8Node 2 – 192.168.1.140 – nginx2.example.com – minimal CentOS 8 / RHEL 8Virtual IP (VIP) – 192.168.1.150sudo user pkumarFirewalld enbledSELinux Running废话不多说,让咱们间接进入装置和配置步骤。 1) 装置 NGINX Web ServerFor CentOS 8 / RHEL 8 ...

March 16, 2023 · 3 min · jiezi

关于linux:Centos-7-安装系列9Minio-rpm-方式

一、零碎环境操作系统:Centos 7已配置环境:空 二、装置步骤2.1 下载安装包yum install -y wgetmkdir /opt/miniowget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio-20230210184839.0.0.x86_64.rpm minio.rpm2.2 装置并试运行rpm -ivh minio-20230210184839.0.0.x86_64.rpmminio server /opt/minio --console-address ":9001"server 前面跟着的使minio 的数据目录;console-address 前面跟着的是minio 的治理端拜访端口,若不指定,将会随机赋予端口号。 2.3 凋谢端口Ctrl + c 退出 minio firewall-cmd --zone=public --add-port=9000/tcp --permanentfirewall-cmd --zone=public --add-port=9001/tcp --permanentfirewall-cmd --reload9000 是minio 的默认api 端口号,9001 是上一步启动命令中指定的前台端口号。 2.4 设置开机自启systemctl enable minio这条命令是使minio 能够开机自启,并且通过该命令的输入能够发现minio 自启文件的所在。 编辑该文件: vi /etc/systemd/system/minio.service须要将用户和用户组批改为本人零碎的,/etc/default/minio 是默认的minio 配置文件。 批改后须要从新加载设置使其失效。 systemctl daemon-reload编辑配置文件: vi /etc/default/minio增加一下内容: MINIO_VOLUMES="/opt/minio"MINIO_OPTS="--address :9000 --console-address :9001"MINIO_ACCESS_KEY=minioadminMINIO_SECRET_KEY=minio123456MINIO_ACCESS_KEY 和 MINIO_SECRET_KEY 就是minio 的登录账号和明码,明码至多8位。 2.5 账号密码登录设置了开机自启后,minio 曾经注册为服务,开始应用service 进行启动: service minio start拜访地址为 ip:port例如在本案例中就拜访 192.168.88.159:9001,进入minio 治理端登录页面,输出配置中的账号密码即可。 ...

March 14, 2023 · 1 min · jiezi

关于linux:CentOS系统变化看开源演进

CentOS社区还存不存在?CentOS我的项目还存不存在?泛滥CentOS用户将何去何从?随同CentOS停更,大家可能会有这样那样的疑难,明天针对以上问题,我来进行一一解答。CentOS实际上有两个变种,一个叫做CentOS Linux,另外一个叫CentOS Stream。CentOS Linux呈现比拟早,大家所晓得的CentOS都是CentOS Linux。而CentOS Stream是两年前红帽对外推出的,推出CentOS Stream之后就相当于把CentOS Linux逐步做了升级换代。这就好比是,你过来用的是iphone4,当初是iphone5,相当于是一个升级换代,换代之后主打的名字也产生了一些变动——从CentOS Linux到CentOS Stream,前面我会讲到,这个变动自身是跟开源开发模式的演进,以及市场需求的变动有关系的。接下来我置信大家还会有其余的一些疑虑,比方CentOS Linux到CentOS Stream是不是稳固的?我先简略一句话答复,它是稳固的。具体怎么稳固,听我一点点给大家引出来前面的一些细节。Linux发行版开发模式的演进咱们先来看看Linux发行版开发模式的演进,这可能也是好多开源的开发方式的演进。Linux曾经走过了31年,晚期齐全凭喜好做Linux,那时候的Linux也正像Linus Torvalds自己讲的,就是为了好玩、乏味才做的Linux。逐步的Linux这种开源的开发方式被更多的人所承受,随着Linux逐步走向企业级,Linux逐步不是一个玩具了。Linux发行版有社区版、企业版,咱们次要讲有了企业需要之后,Linux倒退的几大阶段。Fedora时代第一个阶段是所谓的v1.0阶段,就是Fedora的时代。其实很多人也用过Fedora,Fedora的桌面还是很炫酷的。为什么过后会呈现Fedora Linux呢?次要是取决于两方面起因,而且这两个起因还是有些对抗的。一个是说如果要做企业级的Linux,零碎须要足够稳固,这就意味着你的更新兴许不能太频繁,即便更新了,你的兼容性也要保障得特地好。然而对于翻新来讲,如果过多思考稳固、兼容,翻新的包袱就会比拟重。如何均衡翻新和稳固两者之间的关系?红帽把本人原来对立的Redhat Linux,分成了Fedora和Redhat Enterprise Linux。不光是红帽,其余支流的厂商,像SuSE也是这样的形式。这样两者辨别之后,对于不同的用户,如何去选用呢?如果说咱们是企业用户,咱们就当然抉择稳定版,对于社区用户,你就用Fedora。但那时候做Linux开发的时候,不同阶段各有侧重点,那个时候更偏重Linux操作系统自身的货色,特地是图形化桌面的一些性能。其实只管红帽曾经不做桌面了,然而在Gnome外面的奉献仍旧很大。在那个时候,Fedora这种模式是很好的,它把最新的一些软件包给到你。那时候的桌面其实曾经很成熟了,然而可能次要是因为兼容性、稳定性的起因,Linux的桌面毕竟用的人少,所以并没有齐全倒退起来。CentOS Linux时代再往后倒退,因为逐步走向挪动互联网,相似于安卓这样的货色就呈现了,自身桌面的份额也越来越小,在这方面有Windows、有苹果,所以对于Linux桌面来讲,起初逐步的各大发行版厂商都放弃了在桌面上的投入,比方红帽,再比方SuSE。在服务器端咱们逐步走向了云、虚拟化。这个方向成为关注焦点后,如果连续之前咱们讲的云上翻新,那么虚拟化、云、容器或者容器外面的翻新咱们都基于Fedora去做可不可以?企业级的用RHEL。起初发现这种形式其实不是很好,为什么呢?因为咱们心愿有稳固的内核,咱们认为操作系统是一个最底层软件,咱们不心愿最底层软件出毛病。这时候,大家须要一个跟RHEL品质简直雷同的货色作为它的底层去做下面的一些开发,这时候CentOS就应运而生了。但CentOS是社区里呈现的,并不是红帽给它做出的一个CentOS。CentOS呈现之后,它的理念实际上很符合过后Linux上开发的趋势,所以红帽就把CentOS收买过去,收买过去之后,CentOS Linux持续依照原有的技术方向去倒退。这时候也有一个均衡的问题,一方面CentOS Linux是咱们要在这下面做一些基于虚拟化、云之上的翻新;另外一方面,它的根底要足够稳固。所以我方才讲的这一段历史,就是上边这幅图里所展示的。然而我置信可能咱们有好多敌人理解CentOS,可能只晓得右边这一部分——咱们晓得RHEL红帽企业级Linux是来自于Fedora的,能够说Fedora是RHEL的试验场。CentOS是基于RHEL呈现的一个上游复刻版本,跟RHEL近乎是一样的,所以它的稳定性是毫不狐疑的。然而左边这一部分很多人不理解——实际上当云、虚拟化这些成为一个次要的利用负载的时候,咱们会发现其实CentOS外面的货色曾经不仅仅是RHEL外面的货色了,它外面还有大量来自于RDO的货色,RDO是红帽的OpenStack社区版。有很多像比方虚拟化,像Libvirt、oVirt,相似于这样的货色也加到了CentOS外面。所以坦白讲,CentOS外面并不光是红帽企业级的Linux包,它还包含很多其余的包。坦白讲,其余的包在CentOS外面,它的品质就应该不如RHEL了,因为RHEL是通过严格测试的,对于像社区版里的RDO外面的货色并不是严格测试的。然而RDO这个货色,社区版的OpenStack通过严格测试之后,生成红帽企业版的OpenStack,这是严格测试的。所以在CentOS外面咱们看这个箭头的指向,它一方面有RHEL里稳固的操作系统的包,同时也有对于云方面的、从测试各方面看没有那么稳固的包在CentOS Linux外面,实际上这是CentOS Linux那个时代的模式。CentOS Stream时代接下来可能就谈到最要害的CentOS Stream阶段了。CentOS Stream阶段咱们发现过来的开发方式曾经不能满足当初的要求了,这点可能很好了解:当初讲数字化转型也好,数字孪生也好,以前很多货色并没有被数字化,而当初曾经被数字化了。这个世界自身就是频繁变动的,所以就要求反映它的货色也要频繁变动。这个趋势映射在咱们的软件里,25年前Linux公布一个版本的时候,没有几个人去做奉献,所以咱们用什么样的开发模式、开发流程可能都没有太大所谓。然而当初一个版本里有一千多人去做奉献,奉献量是极大的,所以它的变动是十分快的。在这种变动十分快的社区版本外面,如果红帽还想做一个企业级的十分稳固的版本给大家用,那你的研发流程必然要做这样的一个改良。这样的改良就是所谓的Stream模式,Stream的模式区别于传统的所谓瀑布式开发,不是把集成、测试、验证这样一些步骤放在最初一步,而是随做开发就随做测试,能够保障每一个公布的版本都是稳定版。这是因为咱们这种快节奏要求Stream模式,而不是说咱们出了一个Stream模式。所以简略的总结,CentOS Stream是一个稳固的、牢靠的RHEL的继续交付版本。对于CentOS Stream的几个热门问题CentOS blog上有一篇文章,是2020年12月公布的,外面有几个特地重要的热点问题,我给大家重点再强调一下。CentOS的将来是怎么样的?在CentOS官方网站上给出的一个FAQ,我不想给它做任何因为翻译的误解。如果你是一个CentOS Linux的User,你不要焦急,将来会有一个CentOS Distribution等着你。CentOS Distribution是什么呢?实际上就是咱们当初的这个Stream。大家关怀的是Stream稳固不稳固、平安不平安,有没有CVE破绽的更新、补丁。咱们做这个新版,肯定要保障它原有的品质。第二点也比拟重要,如果你还想要一个老版的CentOS Linux截然不同的货色,能够本人去做。那你本人去做的话,必定要有一个RHEL的代码,代码是从哪儿来呢?git.centos.org。之前RHEL代码是在这里,之后RHEL的代码也是在这里,没有任何区别,这一点实际上是齐全公开的。当然如果你是红帽的客户、订阅用户的话,你在订阅的账号里就能够很不便的下载你的代码。下面提到的这个代码下载的git地址是说你跟红帽没有任何关系,我就想看看你的代码,这是能够的。这实际上也齐全遵循GPL协定,大家独特恪守、独特凋敝好这个社区。既然咱们是基于GPL的代码,只管咱们做了很多改变,这些改变也都会完完整整的公开。还有大家比拟关注的一个问题,CentOS Stream是不如RHEL的beta测试版吗?咱们明确讲CentOS Stream不是一个测试版,前面我会简略解释一下为什么它不是一个测试版。还有一个比拟要害的问题,因为CentOS Linux8当初曾经转成CentOS Stream8了,那我怎么去转?你说没有停服,那我怎么能持续拿到补丁?那你就在你的这台机器上敲这两行命令:[root@centos ~]# dnf swap centos-linux-repos centos-stream-repos[root@centos ~]# dnf distro-sync敲完之后,把它的源从新一更新,从CentOS Linux的源更新到CentOS Stream的源,而后把所有的包下载下来装置,而后替换,接下来你的零碎就照样去应用了。即便你是比拟资深的用户,如果我在你的电脑上敲了这两条命令,接下来去应用,其实你是毫无感知的。就是它的稳定性、应用、性能都跟之前没有差异。接下来咱们讲一下Stream为什么跟RHEL一样是稳固的。对于Fedora来讲,咱们能够认为它是滚动更新,因为每半年咱们就会出一个新版本。这外面所谓滚动更新,是说我滚动更新进去一个新货色,跟老的货色的兼容性并不是特地好。比方在29外面咱们有一个性能,在30外面可能给它废除了,这是齐全有可能的。然而对于CentOS Stream和RHEL来讲就不会,因为这两个货色是基于Fedora某一个特定版本,比方基于Fedora28,我要做一个稳固的企业版,我拉一个分支进去。但这个稳定版有些新的性能会退出进来,这个退出进来叫Backport,Backport是说我须要一些新的个性、Bug fix,而不是说一股脑的把所有货色都加过来。CentOS如何构建CI接下来咱们讲到CentOS如何构建CI。CentOS Stream跟RHEL,同一份代码,进到两个编译和测试的零碎外面去,编译、测试的过程用到的工具都是一样的,无非一个是社区版本,一个是企业版本,就是名字不一样,然而它的内容是一样的。这外面测试用例有可能不一样,然而最初通不通过测试用例的规范是一样的。比方Stream外面有300个测试用例,RHEL外面有500个测试用例,两头重合了200个测试用例,实际上不反复的一共有600个测试用例。这600个测试用例无论你是CentOS Stream的code走到这儿,还是RHEL的code走到这儿,这600个都必须齐全通过之后,才能够往下走。有一个没通过,大家都等一等,这个代码品质不合格,回去从新做。Gating这一步次要是自动化的一些测试伎俩,Verification这一步次要是手动的一些测试伎俩。咱们曾经尽量的把所有能够自动化的都做自动化了,然而不能说所有货色齐全自动化,有一些针对于特定环境的一些可能须要手动的。但这一步Verification也是两边都要满足Verification的这个胜利规范之后,才能够往下走,所以它的质量保证是一样的。说了这么多质量保证,置信很多做测试的敌人可能会讲,你每出一个小的改变,都走残缺的测试流程,走得过去吗?你是用什么样的架构去撑持的?所以也是基于这种事件触发的机制,用空间去换工夫,CI的零碎就齐全并发的会起很多个不同的测试环境所以,整个CI的过程是齐全满足DevOps CI/CD流水线的,能够疾速的做大规模测试,以保障当有更多并发,有很多人去提交patch补丁的时候,我可能疾速的去做Stream的形式。讲到这里,我不晓得大家有没有这样一个疑难,这种形式是不是跟微服务有点像?实际上是有点像。咱们做微服务的话,把一个大的分成若干小的模块,也是为了更新不便。咱们在内核里边为什么不能做微服务呢?我感觉很要害的一点,因为内核,特地是Linux是一个宏内核,所有货色都在内核外面,而且内核整体上它的代码实际上还是一大坨一个整体。一个小的驱动,实际上它可能就把整个内核都搞崩,这一点在微服务里实际上是不存在的。正因为这样,内核外面每做一个小的改变,都要对所有的做测试。这样的话测试量很大,所以如果你没有一个先进一点的架构,是无奈撑持这种Linux发行版开发的。也就是说你从CentOS Linux到CentOS Stream必须做这样一步转变,因为如果不做这样的转变,那你的开发节奏就跟不上,拿不出一个又稳固同时又比拟新的版本。开源软件供应链平安因为往年的log4j破绽,可能有些人会感觉log4j就是洪水猛兽。其实大家抉择log4j是没有问题的,问题是说当呈现安全漏洞,咱们发现安全漏洞的时候,咱们如何去应答。这个过程咱们会发现跟当初的DevSecOps的理念很像,咱们不能保障你进来的时候肯定没有破绽,咱们的目标是打造一个对开源软件供应链平安提供保障的闭环。第一步,咱们在UpStream阶段必定有一个甄选和辨认,是不是存在一些歹意的代码成分呢?甄别出后,是不是有一个标准的流程能够帮忙咱们去选;选完之后,咱们打包对它进行测试;到最初你的流传过程中,是不是有一些很好的校验伎俩;特地是最要害的,到最初一步咱们曾经把这个货色给到用户,但咱们呈现问题的时候,是不是可能无效的去解决。所以咱们认为开源软件的供应链平安,实际上次要是技术问题。AlmaLinux:一个代替计划AlmaLinux是什么?当初好多做CentOS Linux一样的货色,齐全基于RHEL代码去做复刻。整个过程用到了哪些组建,所有的AlmaLinux外面的货色都是开源的。如果大家感兴趣的话,能够看一下这个流程,就看CentOS.org下面代码的变动。针对于这外面的任何些变动,就能够触动它的打包构建的流程,最终出品它的AlmaLinux。从这点也以看进去,CentOS必定是没有停服的,如果停了之后,所有这些上游的版本,像AlmaLinux、RockLinux和其余很多的Linux,它的起源从哪儿来呢?因为红帽这个RHEL就是基于CentOS Stream来做的,除非红帽不做RHEL了,否则CentOS Stream就会始终都在。CentOS Linux不是红帽企业级Linux最初说一下CentOS Linux,它跟红帽企业级的Linux还是有很大差异的。对于企业级Linux要求的平安认证、软硬件认证,在企业级保障中,更多的不是性能而是保障,这样的一些保障在企业级Linux外面是有的。在CentOS外面坦白讲的确很稳固,如果一旦出问题,一旦有安全漏洞,就去找补丁,总有一天我能够找到补丁。但实际上你拿到补丁的速度,必定没有企业级Linux快。如果是连续这样的应用形式,你切到Stream上,可不可以呢?是齐全能够的。当然了,其实对于企业级Linux,如果说有明确的规定,比如说有一些行业标准,倡议还是选用红帽的企业级Linux。

March 11, 2023 · 1 min · jiezi

关于linux:Linus-Just-for-FUN-读书笔记-Part1-前言

最近有幸读到 Linux 发起者 Linus 主笔的 [Just for FUN -- THE STORY OF AN ACCIDENTAL REVOLUTIONARY] 一书。比拟乏味,怕日后遗记。于是写本文以记录。 书评豆瓣读书中有本书的评估。 本书对作者的评估是: 有些人天生就有能力领导数百万人。 另外有的人天生就是要编写扭转世界的软件。 而同时做到了这两点的只有一个人:Linus Torvalds。 -- Time Digital 动机现代人生存很忙,置信在看本文的你也是一个现代人。花工夫来看一本书要问为何,花工夫看一篇 TL;DR 的读书笔记也要问为何。我很难通知你一个预期,读完本文,会失去什么。我只能够必定地通知你,读完本文你肯定会应用了读本文的工夫 :) 。 好吧,如果肯定要说个动机,那么可能会有这些: 发明和变革,是怎么从基层实际走进去的,而不是顶层设计来的从基层来的发明和变革,须要什么条件Linus 身上鲜为人知的八卦事,能够用于中午饭时吹牛接地气的 Open Source 文化与精力。而不是不食人间烟火的那种 Open Source 文化Linus 对事物倒退的三段式划分哲学。没错,这是一本有讲哲学的书。以下不是本文的动机: 本人造或再造一个操作系统只看本文,不看原书背景书名:[Just for FUN -- THE STORY OF AN ACCIDENTAL REVOLUTIONARY] 创作背景作者:Linus Torvalds 与 David Diamond出版商是:HarperCollins印刷版本发行工夫:2002年 是的,没看错,是 2002 年 (20多年前)的书了。花贵重的工夫看新书还有意义吗?还是回去刷朋友圈好了 :) Linux 操作系统工夫线为让读者更好理解本书成书时的 Linux 操作系统的状态和工夫线,这里列一下进去: 1991: The Linux kernel is publicly announced on 25 August by the 21-year-old Finnish student Linus Benedict Torvalds.[16] Version 0.01 is released publicly on 17 September.[64]1992: The Linux kernel is relicensed under the GNU GPL. The first Linux distributions are created.1993: Over 100 developers work on the Linux kernel. With their assistance the kernel is adapted to the GNU environment, which creates a large spectrum of application types for Linux. The oldest currently existing Linux distribution, Slackware, is released for the first time. Later in the same year, the Debian project is established. Today it is the largest community distribution.1994: Torvalds judges all components of the kernel to be fully matured: he releases version 1.0 of Linux. The XFree86 project contributes a graphical user interface (GUI). Commercial Linux distribution makers Red Hat and SUSE publish version 1.0 of their Linux distributions.1995: Linux is ported to the DEC Alpha and to the Sun SPARC. Over the following years it is ported to an ever-greater number of platforms.1996: Version 2.0 of the Linux kernel is released. The kernel can now serve several processors at the same time using symmetric multiprocessing (SMP), and thereby becomes a serious alternative for many companies.1998: Many major companies such as IBM, Compaq and Oracle announce their support for Linux. The Cathedral and the Bazaar is first published as an essay (later as a book), resulting in Netscape publicly releasing the source code to its Netscape Communicator web browser suite. Netscape's actions and crediting of the essay[65] brings Linux's open source development model to the attention of the popular technical press. In addition a group of programmers begins developing the graphical user interface KDE. Linux first appears on the Top500 list of fastest supercomputers.[66] The ARM port (initiated in 199467) is merged.[69]1999: A group of developers begin work on the graphical environment GNOME, destined to become a free replacement for KDE, which at the time, depended on the then proprietary Qt toolkit. During the year IBM announces an extensive project for the support of Linux. Version 2.2 of the Linux kernel is released.2000: Dell announces that it is now the No. 2 provider of Linux-based systems worldwide and the first major manufacturer to offer Linux across its full product line.[70]2001: Version 2.4 of the Linux kernel is released.2002: The media reports that "Microsoft killed Dell Linux"[71]2003: Version 2.6 of the Linux kernel is released.原文链接 ...

March 10, 2023 · 4 min · jiezi

关于linux:openEuler加入RISCV-Landscape

北京工夫2023年3月8日,openEuler退出RISC-V Landscape。 https://landscape.riscv.org/?selected=open-euler 此次退出RISC-V Landscape,意味着openEuler在对RISC-V架构的生态适配失去了RISC-V基金会的认可,相干技术已与RISC-V生态实现适配。 目前 openEuler 曾经推出了多个基于 openEuler 开发的 RISC-V 架构的发行版。将来,openEuler将持续摸索在 RISC-V 架构处理器上的更多可能

March 10, 2023 · 1 min · jiezi

关于linux:Linux黑皮书确实Linux入门第一书

从大一就开始学习Linux零碎,转眼间好多年过来了,经验过从图书馆里借Linux相干的书,到网上看诸多教程,再到在Coursera与edX上零碎的学Linux教程,整顿Linux英文资料,到浏览Linux内核代码。 这些年在Linux沉迷已久,目前在沪漂中,手中还是有两本Linux与Shell的根底书籍,《Linux/Unix零碎编程手册》与《Shell脚本学习指南》,偶然用到的时候,还是会翻阅查找。Linux/Unix零碎编程手册,对每个linux操作的设计,都有深刻的解说,而Shell脚本学习指南则是对单个shell命令的解析,不过在日常的工作中,还是欠缺了一些全面性的常识。 这本《Linux命令行与Shell脚本编程大全》真的是对各个版本的、各种状况做出了详尽的阐明,是一本不可多得的Linux畛域的参考书,如果我在一开始学习Linux零碎的时候,就遇到它就好了,这样就不会在不同分支不同环境里,折腾了那么久,遍尝Linux的苦处,而是能疾速地清晰地领略到Linux的奥秘,领会到Linux精妙的设计思维。 它的“提醒”与“留神”真是精髓所在,即使你很相熟Linux零碎的应用,你还是会犯一些常识性的谬误,咱们毕竟不是字典,还是无力所不能的中央。这时候作者的提醒,总是先咱们的操作一步,预料到可能会错的中央。记住这些要点,可能会节俭很多出错后,拼命翻阅搜索引擎的工夫,从数分钟到数个小时不等,这些就是资深工程师的教训,他总是溯源追踪。 它不仅是一本查漏补缺的命令行与脚本编程大全,更是开启Linux零碎的钥匙。

March 9, 2023 · 1 min · jiezi

关于linux:Centos-7-安装系列8openGauss-300

@TOC 一、零碎环境操作系统:Centos 7已配置环境:空 二、官网文档openGauss 官网文档:筹备软硬件装置环境 三、装置步骤3.1 环境筹备装置依赖包: yum -y install libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel openssl-devel sqlite-devel libnsl装置插件: yum install -y bzip2 net-tools为什么要装置这两个?装置bzip2 是因为openGauss 的压缩包比拟非凡,须要用这个插件能力解压;装置net-tools 是因为在openGauss 初始化中会用到相应的命令。当时在这里装置好,前面就不必再操心这些了。 官网文档中提及了一个装置过程中的谬误,理论中也会遇到,故先在这里坐下相应的配置: sysctl -w kernel.sem="250 85000 250 330" 3.2 敞开防火墙依据官网文档所说,openGauss 目前仅反对在防火墙敞开的状态下进行装置。 systemctl stop firewalld.servicesetenforce 0setenforce 0 命令只是临时敞开selinux ,但也曾经足够撑持本次装置。 3.3 创立用户openGauss 不能用root 用户启动,须要新建一个用户。 groupadd dbgroupuseradd -g dbgroup ommpasswd omm3.4 创立数据目录mkdir -p /opt/software/openGauss具体目录能够依据集体爱好设置,不用谋求统一。 3.5 配置环境变量vi /etc/profile增加以下配置: export GAUSSHOME=/opt/software/openGauss/binexport LD_LIBRARY_PATH=$GAUSSHOME/lib::$LD_LIBRARY_PATHexport PATH=$GAUSSHOME/bin:$PATH使配置文件失效: source /etc/profile3.6 解压并初始化对压缩包解压: ...

March 9, 2023 · 1 min · jiezi

关于linux:OpenCloudOS-轻量级虚拟化引擎-LiKeX-介绍

虚拟化技术是云计算的根底,目前大量的私有云以及公有云环境都抉择 KVM 作为Hypervisor。KVM 作为 Type 2 型的零碎级硬件辅助虚拟化技术的典型计划,绝对于 Xen 的劣势有: KVM 作为一个 Linux 内核模块形式实现,因而其硬件生态兼容性、扩展性较好;KVM 中没有实现调度等性能,而是依赖 Linux 内核的实现,如 Linux 的调度器,实现充分利用了 Linux 内核的成熟模块,实现绝对精简。 然而随着 FaaS、Serverless 等新场景的呈现,KVM 现有的实现就显得简单了。新的场景趋向于以容器为核心,虚拟化技术在新的场景中次要的作用是补救传统容器技术的隔离性有余的问题。因而对于 KVM 技术有进一步轻量化的需要。 Rust 作为内存平安语言曾经被业界宽泛认可。但 Rust 语言不只是谋求平安,而且在并发和性能方面也有很好的体现,因而 Rust 不仅被很多大公司如 AWS、微软、Google 等用于应用软件的开发,而且其曾经用于构建操作系统,比方 Redox OS。 Rust 也逐步成为将来底层软件开发的首选语言。目前 Rust 曾经被 Linux 内核开源社区承受作为开发语言,次要用于 Linux 内核驱动模块的开发。 一、Why LiKeX ?LiKeX 是一个对 KVM 的 Rust 重构我的项目,但又不仅仅是简略的重构。 LiKeX 中的「Li」代表轻量,「K」代表 KVM,「e」代表 extension,「X」是一个对立的后缀对于下一代云原生 OS 我的项目。 LiKeX 我的项目开发的指标是针对 FaaS 场景,提供轻量化的 Hypervisor 解决方案。在架构设计上,思考到 FaaS 利用的特点:单实例短生命周期,单实例资源占用低,高实例密度,因而 LiKeX 在不少设计上与 KVM 有较大差别,局部比照项如下: ...

March 9, 2023 · 3 min · jiezi

关于linux:查看当前-linux-主机支持什么类型的硬件解码

输出 ffmpeg -hwaccels 命令就行 ╰─➤ ffmpeg -hwaccels 130 ↵ffmpeg version 5.1.2 Copyright (c) 2000-2022 the FFmpeg developers built with Apple clang version 14.0.0 (clang-1400.0.29.202) configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/5.1.2_5 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-neon libavutil 57. 28.100 / 57. 28.100 libavcodec 59. 37.100 / 59. 37.100 libavformat 59. 27.100 / 59. 27.100 libavdevice 59. 7.100 / 59. 7.100 libavfilter 8. 44.100 / 8. 44.100 libswscale 6. 7.100 / 6. 7.100 libswresample 4. 7.100 / 4. 7.100 libpostproc 56. 6.100 / 56. 6.100Hardware acceleration methods:videotoolboxmacbook Apple Silicon 输入的就是 videotoolbox ...

March 8, 2023 · 1 min · jiezi

关于linux:麒麟操作系统-kylinos-从入门到精通-研发环境-第四十八篇-kubernetes的试验环境minikube安装

0.根底环境类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)零碎:河汉麒麟操作系统 V10 SP1(2203) 关键词:信创,麒麟零碎,linux,c++,c,飞腾,arm,kubernetes,k8s,minikube 1.背景研发人员有时候会有k8s环境构建的需要,在x86上咱们能够通过minikube,rancher,kubesphere等来构建这个环境。但思考到飞腾处理器目前的处理速度,咱们更多的只是构建起单机试验环境,minikube是较好的抉择,也好动手疾速构建一个k8s集群单机版。前面我会再针对microk8s再出一期教程。 2.minikube装置sudo apt install docker-compose docker-doc docker.io docker-registry #装置docker相干组件curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64 #下载二进制包sudo install minikube-linux-arm64 /usr/local/bin/minikube #装置sudo usermod -aG docker $USER && newgrp docker #将以后用户退出docker用户组3.启动minikube3.1 保障gcr.io能够拜访的筹备工作如果有其余形式也能够,能拜访就行 sudo apt-get install proxychains sudo vim /etc/proxychains.conf应用proxychains bash #使bash中所有命令都走代理 minikube start #会拉包,须要可能拜访image 'gcr.io/k8s-minikube/kicbase:v0.0.37' locally 具体可参考本专栏命令行代理上网那一篇文章3.2 错误处理执行minikube start可能呈现谬误一:docker: failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar: invalid tar header.解决办法,参考本站文章https://segmentfault.com/a/1190000042634466解决方案一,挪动unpigz可执行文件地位使其不解压mv /usr/bin/unpigz /usr/bin/unpigz.bak再重试minikube start接下来,就能够参照https://minikube.sigs.k8s.io/docs/start/进行集群操作,部署利用了。执行 minikube kubectl -- get po -A 后成果执行 alias kubectl="minikube kubectl --" 建设别名 ...

March 8, 2023 · 1 min · jiezi

关于linux:FATE联邦学习给新手-FATE-hello-world我想要一个能运行的程序

FATE服务的场景是各方上传数据,各方取得数据且能交融数据取得独特训练的模型。 官网文档就是以这个程序来写的,然而吧upload data和模型取得数据和模型训练离开来写了。 整顿下数据集文档中的file path其实是FATE联邦学习github我的项目的绝对目录,所波及到的数据集能够从github取得。你能够间接从github上下载,也能够复制粘贴,然而要留神,查看最初一行是否空行!,如果是空行,删掉,不然FATE会报错。能够具体看我这个亲自踩坑的博客。 Python例子下载解决好数据集后,记得批改上面代码中的门路。代码大部分是复制粘贴人家官网文档的,我只是把改放到一起的中央放到了一起,所以不必放心有谬误。【记得改数据集的门路和名字】。 代码是在Linux上运行的。默认你曾经胜利启动FATE服务了,如何启动FATE服务?首先在终端把pipeline下载和初始化好 pip install fate_clientpipeline init --ip=127.0.0.1 --port=9380另外记得check FATE服务是否失常运行pipeline config check记得看代码正文,我要更加具体的教程。 from pipeline.backend.pipeline import PipeLinefrom pipeline.component import Reader, DataTransform, Intersection, HeteroSecureBoost, Evaluationfrom pipeline.interface import Data# pipeline能够了解为一个工作,这个工作是上传数据pipeline_upload = PipeLine().set_initiator(role='guest', party_id=9999).set_roles(guest=9999)partition = 4dense_data_guest = {"name": "breast_hetero_guest", "namespace": f"experiment"}dense_data_host = {"name": "breast_hetero_host", "namespace": f"experiment"}tag_data = {"name": "breast_hetero_host", "namespace": f"experiment"}import osdata_base = "/root/Downloads/"pipeline_upload.add_upload_data(file=os.path.join(data_base, "real_guest.csv"), table_name=dense_data_guest["name"], # table name namespace=dense_data_guest["namespace"], # namespace head=1, partition=partition) # 每一个数据集由table name和namespace标识pipeline_upload.add_upload_data(file=os.path.join(data_base, "real_host.csv"), table_name=dense_data_host["name"], namespace=dense_data_host["namespace"], head=1, partition=partition)pipeline_upload.add_upload_data(file=os.path.join(data_base, "real_host.csv"), table_name=tag_data["name"], namespace=tag_data["namespace"], head=1, partition=partition)# drop=1的意思是笼罩掉先前的同名tablepipeline_upload.upload(drop=1)# 开始取得数据并且训练,新实例化一个pipelinepipeline = PipeLine() \ .set_initiator(role='guest', party_id=9999) \ .set_roles(guest=9999, host=10000) # 想要取得FATe中的数据,必须通过Readerreader_0 = Reader(name="reader_0")# set guest parameter# 留神reader所绑定的身份和id,想要胜利获取到数据,# 要绑定数据起源的身份和id,而非数据需求方的reader_0.get_party_instance(role='guest', party_id=9999).component_param( table={"name": "breast_hetero_guest", "namespace": "experiment"})# set host parameterreader_0.get_party_instance(role='host', party_id=10000).component_param( table={"name": "breast_hetero_host", "namespace": "experiment"})# 想要用取得的数据进行训练,必须通过datatransformer。data_transform_0 = DataTransform(name="data_transform_0")# set guest parameterdata_transform_0.get_party_instance(role='guest', party_id=9999).component_param( with_label=True,missing_fill=True)data_transform_0.get_party_instance(role='host', party_id=[10000]).component_param( with_label=False,missing_fill=True)# 交融(纵向)数据intersect_0 = Intersection(name="intersect_0")# 定义模型,FATE提供了一些模型,当然也能够本人开发模型hetero_secureboost_0 = HeteroSecureBoost(name="hetero_secureboost_0", num_trees=5, bin_num=16, task_type="classification", objective_param={"objective": "cross_entropy"}, encrypt_param={"method": "paillier"}, tree_param={"max_depth": 3})evaluation_0 = Evaluation(name="evaluation_0", eval_type="binary")pipeline.add_component(reader_0)pipeline.add_component(data_transform_0, data=Data(data=reader_0.output.data))pipeline.add_component(intersect_0, data=Data(data=data_transform_0.output.data))pipeline.add_component(hetero_secureboost_0, data=Data(train_data=intersect_0.output.data))pipeline.add_component(evaluation_0, data=Data(data=hetero_secureboost_0.output.data))pipeline.compile()# 后面的代码其实是结构了一个计算图,fit才算开始真正执行pipeline.fit()胜利的话,terminal有五光十色的提醒。如果失败,须要通过Fateboard进行debug,Python 处的代码不会给出具体的提醒。怎么应用Fateboard进行debug? ...

March 7, 2023 · 1 min · jiezi

关于linux:个人新搞了Linux虚拟机要做什么

先解决网络问题设置虚拟机桥接模式,而后vi /etc/network-scripts/ifcfg-enpxxx把ONBOOT批改成yes。而后service network restart,等他一段时间就能够了。更具体的,查看我这篇博客 有网后整顿下yum# 我要用最新版的软件yum update# 没有netstat和vim我可怎么活啊……yum install net-tools vim搞个图形界面yum groupinstall "X Windows Desktop"yum groupinstall "GNOME"下载安装实现后init 5就能够了。 如果是virtualbox,开启加强性能具体能够看我这篇博客,这样能力缩放虚拟机页面、共享粘贴板……共享粘贴板记得关上,不然怎么从宿主电脑复制粘贴…… 图形界面图形界面曾经装置了firefox浏览器,别离下载 anaconda,python治理,装置后是有可能conda依然不能辨认的,手动退出环境变量就能够,参考这个vscode,代码编辑器,如果是centos能够间接看我这篇博客,不然能够间接开官网看本人对应的Linux适宜怎么下载。而后写个用root启动的脚本 code --no-sandbox --user-data-dir=/root/Downloads/vscode序幕这样基本上就OK了,该conda create就新建,该开发开发,根本的网络和软件都曾经有了。

March 6, 2023 · 1 min · jiezi

关于linux:非抄袭极简解决centos虚拟机没有网络

起因先说点简略的: 没启用虚拟机容器的网络选项虚拟机的网卡没启用手动设置了网关、掩码、dns等没设置对DHCP没开做法没启用虚拟机容器的网络选项在virtualbox外面,开启虚拟机后右下角有个网络选项这里亮着就阐明开了,没亮就右键关上,点上。 虚拟机的网卡没启用一般来说新的centos iso外面的网卡设置是不启用的。用ip addr查看下有没有ip地址,发现enpxxx前面没有ip地址,就的确没启用,要批改网卡配置文件 cd /etc/sysconfig/network-scripts/ vi ifcfg-enpxx # 把ONBOOT批改成yes而后重启网络服务service network restart 再次ip addr就能看到被调配了ip了。 手动设置了网关dns等,没开DHCP我看很多教程都批改了etc/...network-script/.../ifcfg外面的选项,把dhcp给关了用static……那既然你手动设置就去设置对啊……不然就用DHCP的就行啊,让dhcp服务主动给你调配ip和dns。 最初检测网络是否通顺ping 127.0.0.1,能 ping通则协定正确ping 网关,通过ip route,能够看到本人的网关: 最初ping下www.baidu.com吧

March 6, 2023 · 1 min · jiezi

关于linux:你也能成为黑客高手趣谈Linux-Shell编程语言

作者:京东批发 杜兴文 咱们看过很多在电脑命令行敲一些命令并给观众展现很高科技的画面感的电影,比方《盗梦空间》《操作系统反动》《代码》等等, 再想想电影黑客帝国中的画面,预计会令很多人都叹为观止,其实挺简略的,只有会应用Linux操作系统就能够很简略地实现电脑屏幕的字符串雨了!是不是很高大上呢! 同时Linux零碎的其余几个操作指令,都有非常酷炫的成果,相对令人叹为观止,废话不多说,间接进入主题! 上面无妨逐个介绍这10个Linux比拟乏味的命令。 1、cmatrix命令 接下来就是见证奇观的时刻: 2、htop命令 htop是Linux操作系统的图形化性能检测工具,如果类比的话相当于windows操作系统的工作管理器 运行进去的后果是绿色的界面,同时动静的检测显示,上面看看是不是很酷的样子: 3、hollywood命令 说实话这个命令可能就是抖音里很火的那个,你眼中的程序猿VS事实中的程序猿: 执行后果如下: 4、aafire aafire终端命令能够将字符串像火焰一样的焚烧的输入 5、bastet命令 应用bastet命令能够在Linux零碎下玩俄罗斯方块: 运行后果如下: 6、sl 运行后果是一辆呼啸而过的火车: 运性后果如下: 7、cowsay命令能够打印进去一头牛,并且能够指定让这头牛说任意的话语, 8、fortune 这是一个比拟乏味的性能 在输出fortune之后,Terminal会输入一句名言,诗句,或一些乏味的话: 9、echo “" | boxes -d dog 输入一条小狗 看到以上应用简略的命令输入可恶的图案,是不是感觉Linux命令性能既弱小又好玩! 另外,咱们应用Linux零碎基本操作命令来治理操作系统文件、配置环境,排查问题等等也是看着十分高大上的! 上面是一些根本的操作命令,用熟了操作起来也是很酷的啊!

March 6, 2023 · 1 min · jiezi

关于linux:Rocky-Linux-84-操作系统安装-图文教程

Rock Linux 是基于社区的企业级操作系统,与 RHEL(RED HAT Enterprise Linux)兼容。因为 ,如果您正在寻找替换 CentOS 8 的生产级操作系统,则能够思考 Rocky Linux。 零碎要求2 GB RAM or more20 GB hard disk or more2 CPU / vCPUs (1.1 GHz processor)Internet Connection (optional)Bootable media (USB / DVD)废话不多说,间接上干货! 1) 下载 Rock Linux 8.4 ISO 文件从官方网站下载 Rocky Linux ISO 文件 https://rockylinux.org/download 下载了 ISO 文件后,将其刻录到 USB 或 DVD 中,使其成为可疏导的媒体。Linux 中应用以下办法创立可疏导的媒体: How to Create Bootable USB Drive on Ubuntu / Linux Mint 2) 用可疏导介质疏导零碎重新启动零碎并转到 BIOS 设置,而后将启动介质从硬盘更改为 USB / DVD 等媒体。 ...

March 6, 2023 · 2 min · jiezi

关于linux:在Linux上查看活跃线程数与连接数

原创:扣钉日记(微信公众号ID:codelogs),欢送分享,非公众号转载保留此申明。简介现如今,有两种常见的软件资源简直成了Java后端程序的标配,即线程池与连接池,但这些池化资源十分的重要,一旦不够用了,就会导致程序阻塞、性能低下,所以有时咱们须要看看它们的应用状况,以判断这里是否是瓶颈。 查看沉闷线程数在Linux上,通过top -H -p 1命令,能够查看java过程的线程状况,其中1是java过程号,如下: 如上,能够看到线程的名称、CPU使用率等,其中http-nio-8080-e就是Tomcat线程池中的线程,tomcat线程全名相似于http-nio-8080-exec-20,因为Linux中线程名称有长度限度,所以被截断了。 注:jdk8的话,须要jdk8u222以上版本,能力在top中看到线程名称。咱们数一下http-nio-8080-e线程的数量,发现它有20个,正好对应上了在springboot中的线程配置。 这样能通过top失去线程池的线程数量了,但如何理解线程池的应用状况,即沉闷线程有多少个呢? 通过查看man文档,我发现top命令有一个-i选项,形容如下: 意思就是i是一个开关选项,默认会显示全副线程,而关上此选项之后,就只显示沉闷线程了! 所以,只须要利用-i选项,再配合sed/awk/uniq等文本处理命令,即能够统计出沉闷线程数了,如下: $ top -H -i -b -d 1 -n2 -p 1 | awk -v RS= 'END{print $0}' | awk '$1 ~ /[0-9]+/{print $12}' | sed -E 's/[0-9]+/n/g' | sort | uniq -c 能够看到,20个线程的线程池中,在1秒内只有4个线程是沉闷的,线程池中线程数量是足够的。 这个命令脚本就不开展解释了,也不简单,有linux命令根底的将命令顺次拆开执行,应该能Get到脚本逻辑,没学过linux命令的话,就间接拿去用吧 查看沉闷连接数在Linux上,应用ss -natp|grep pid=1能够查看1号过程的TCP连贯,如下: 比方若redis数据库端口是6379的话,那么可这样查看redis连接池中连贯数量,如下: $ ss -natp | grep pid=1 | awk '$5~/:6379$/' | wc -l20可见以后有20个redis网络连接,那同样的,其中有多少个是沉闷的呢? 通过查看man文档,发现ss中也有一个-i选项,如下: 能够发现,增加-i选项后,ss会输入tcp连贯中的一些额定信息,其中lastsnd示意最初一次发送包到以后所经验的毫秒数,lastrcv示意最初一次接管包到以后所经验的毫秒数。 有了这个信息后,就能够通过awk过滤出lastsnd或lastrcv小于1000的tcp连贯,这些连贯即是1秒内沉闷过的连贯了,因而我又编写了如下命令脚本。 $ ss -natpi | sed '1!{N;s/\n//;}' | grep pid=1 | awk -v t=1000 'match($0,/lastsnd:(\w+) lastrcv:(\w+)/,a) && (a[1]<t || a[2]<t) && match($4,/(.+):(\w+)$/,s) && match($5,/(.+):(\w+)$/,d) && s[2]>=32768{print d[2]}' |sort |uniq -c |sort -nk2 8 80 3 3306 7 3307 6 6379 1 7916如上,能够看到各连出端口的沉闷连贯状况,其中80是http连接池端口,3306与3307是MySQL主从库的连接池端口,6379是redis连接池的端口。 ...

March 4, 2023 · 1 min · jiezi

关于linux:OpenCloudOS-如何以最小成本高效定位内存泄露路径

导读|蒙受内存泄露往往是令开发者头疼的问题,传统剖析工具 gdb、Valgrind在解决内存泄露问题上效率较低。本文特地邀请到了 OpenCloudOS 社区 Contributor、腾讯后盾开发工程师邢孟棒以 mysql-proxy 内存泄露问题作为剖析对象,分享其基于 eBPF 动静追踪技术的通用内存泄露(增长)分析方法。 其中将具体介绍内存分配器行为剖析、缺页异样事件剖析,涵盖应用程序内存调配的常见过程。本文提及的 eBPF 剖析工具将作为 OpenCloudOS 操作系统的一部分在近期开源进去,便于 OpenCloudOS 的用户在面临内存泄露(增长)困扰时顺手可用。 一、背景某数据库在全链路压测中发现开源工具 mysql-proxy 的设计存在缺点,在执行大量申请转发的时候,内存占用量持续增长导致 OOM 景象,最终影响了用户业务的失常应用 。在剖析该问题过程中发现一个较为广泛的业务痛点:传统剖析工具(gdb、Valgrind 等)效率绝对较低,在私有化场景中尤其突出。 针对这一痛点,本文将提供若干基于 eBPF 技术的通用内存泄露(增长)分析方法以及相应的 eBPF 剖析工具 memstacks、pgfaultstacks,帮助各位开发者更高效地定位产生泄露的代码门路,以期用最小的人力投入老本并升高对用户业务体验的影响。 二、根底概念在开展讲述内存泄露(增长)分析方法之前,咱们先理解一些相干的根底概念。 内存泄露包含内核内存泄露、应用程序内存泄露两大类。内核内存泄露能够通过 kmemleak 进行检测,本文次要关注应用程序的内存泄露。应用程序的内存泄露又能够细分为:堆内存(Heap)泄露、内存映射区(Memory Mappings)泄露。咱们平时提及的内存泄露,次要是指物理内存的泄露(继续调配、映射理论的物理内存,且始终未开释),危害较大,须要立刻修复。 另外,虚拟内存的泄露(继续调配虚拟内存,但未调配、映射理论的物理内存)容易被忽视,尽管危害绝对较小,但也需额定关注(过程的内存映射区总数量有下限,默认 1w)。 通常,应用程序内存调配波及的步骤大抵如下图所示: 第一,应用程序通过内存分配器(例如 libc)提供的 malloc 及其变体函数申请内存,free 函数开释相应内存。第二,内存分配器外部通过零碎调用 brk 扩大堆内存(小块内存调配)。第三,内存分配器外部通过零碎调用 mmap 分配内存映射区域(大块内存调配,默认不小于 128 KB)第四,二或三已申请的虚拟内存在首次写入时触发缺页异样,OS 调配理论物理页面,并将虚拟内存与其相关联,记录至页表。 其中,步骤一至三均为虚拟内存,步骤四调配理论物理内存并创立相应页表。 三、传统剖析工具比照在定位 mysql-proxy 内存泄露(增长)问题的过程中,开发人员尝试应用了 Valgrind Memcheck、gdb 进行帮助剖析。最终前者实际效果不太现实;我通过后者剖析出泄露起因,但整个过程消耗了较多工夫。 gdb 是罕用的程序调试工具,益处不必赘述。但对于内存泄露或增长问题,gdb 毛病也较为显著,大抵如下:烦扰程序失常运行,不适宜生产环境;间接定位比拟艰难,且要求对源码有肯定理解。 Valgrind Memcheck 是一款知名度较高的内存泄露剖析工具,十分弱小,开发调试过程中可能疾速发现场景的内存泄露问题。不过开发者在应用之前,倡议对以下状况有所理解: 第一,须要重启程序,且作为 Valgrind 子过程运行。不适宜剖析正在产生内存增长的过程。 第二,代替默认的 malloc/free 等调配函数,指标过程运行速度减慢 20~30 倍。 ...

March 2, 2023 · 2 min · jiezi

关于linux:一文看懂全链路自主可控操作系统OpenCloudOS

如果 Linux 从地球隐没,会产生什么?你可能连这篇文章都看不完,因为应用 Linux 零碎的网络服务器会瘫痪,以 Linux 为根底的智能手机将无奈应用,人们的衣食住行都可能受到影响。 好在有开源,使得 Linux 能不受商业与地区的影响,在几十年里继续为每个人的生存和工作服务。在宽泛应用的 Linux 发行版之一 CentOS 8 进行保护后,由 100 余家操作系统、云平台、软硬件厂商与集体独特倡导发动的操作系统社区我的项目——OpenCloudOS 成立。 成立之初,OpenCloudOS 就决定成为开源凋谢的中立社区,满足用户对「全链路自主可控」的需要,打造一个中立、凋谢、平安、稳固、易用和高性能的 Linux 服务器操作系统。 一、十余年技术积攒,数百家生态搭档作为 OpenCloudOS 社区的次要发起方之一,腾讯将其本身在操作系统畛域超过 10 年的技术积攒,全副奉献到 OpenCloudOS 社区,反对社区建设和倒退。社区同时积淀了 500 多家合作伙伴的技术劣势,汇集起国内外的操作系统研发力量。 在架构设计上,OpenCloudOS 着重从硬件到内核进行全方位的优化。在硬件上,OpenCloudOS 已反对 X86_64、ARM64、RISC-V 架构,适配 飞腾、海光、兆芯、鲲鹏等芯片。同时提供反对全栈国密和秘密计算,另有 300 余家企业产品与 OpenCloudOS 操作系统实现适配。 内核方面,OpenCloudOS 移植了社区最新要害个性,并联合不同的业务场景自主研发了多项性能和性能优化,典型个性包含:容器资源视图隔离(cgroupfs)、云原生 SLI、Monitor Buffer、ARM64 热补丁、Page Cache Limit 等。在保障企业级稳定性的同时,享有社区的各种新技术和自研优化。 在继续的性能优化过程中,OpenCloudOS 也逐步深刻到了用户的业务场景,针对典型的业务场景进行了深度分析和优化,在云原生、虚拟化、及数据库的场景均做了验证。其中以云原生场景为例,设计了一整套云原生个性,大大晋升了 OS 对于云原生业务的服务能力。 深厚的技术积攒与不断创新,让 OpenCloudOS 在社交、游戏、金融领取、AI、平安、大数据等实在业务场景中,经验了千万级节点的长时间验证,可用性高达 99.999%。相比 CentOS 7 和其余开源社区版本,OpenCloudOS 故障率升高 70% 以上,且在典型业务场景中性能晋升超 50%。 二、OpenCloudOS 如何实现全链路自主可控?Linux 操作系统的供应链就像一条河流,对应着其在 L1 至 L3 的不同阶段。L1 是基于开源软件上游研发的 Linux 发行版本,L2 企业版基于 L1 上游版本开发,通常由商业公司主导,提供企业级的技术支持及服务。L3 社区稳定版基于 L2 企业版发行,通常是商业系统的收费再发行版本。 ...

March 1, 2023 · 1 min · jiezi

关于linux:Linuxgetline解释

知识点先说一下重要的知识点: getline;在awk中能够用于管制“循环”。getline;之后,awk会扭转对应的NF,NR,FNR和$0等外部变量getline;拿到的是下一行而不是以后行,概念设想为++i操作即可。介绍getline命令扭转了awk的运行逻辑,是awk命令不可或缺的一部分。awk实质上就是一个for循环,它每次对输出文件的一行进行解决,而后转而执行下一行,直到整个文件的每一行都被执行结束。整个过程是主动的无需做什么。 getline命令却能够让你去管制循环。当然,getline命令执行后,awk会设置NF,NR,FNR和$0等这些外部变量。 简略应用咱们先看一个简略的例子,打印出从1到10之间的偶数: [zxd@localhost kafka2.8.X]$ seq 10 | awk '{getline; print $0}'246810这个命令的的执行逻辑是执行一个for循环从1到10,在循环外部先执行getline;而后打印$0,$0指向的就是以后的变量,留神getline;获取的是获取以后行的下一行,相似咱们编程语言的++i,留神getline;之后,awk会扭转对应的NF,NR,FNR和$0等外部变量,所以$0值会随着遍历扭转,最初实现打印偶数成果。 依据下面的介绍咱们能够推导出打印奇数的逻辑: [zxd@localhost kafka2.8.X]$ seq 10 | awk '{ print $0;getline;}'13579长期变量应用奇偶行对调打印,原来在奇数行的内容将其打印在偶数行,原来在偶数行的内容将其打印在奇数行,要实现这个性能,须要在循环中应用长期变量: seq 10 | awk '{getline tmp; print tmp; print $0}'后果如下: [zxd@localhost kafka2.8.X]$ seq 10 | awk '{getline tmp; print tmp; print $0}'21436587109文件合并在下面的例子当中tmp变量是不会扭转的。 getline也能够从另外一个文件中读取内容。上面例子实现将两个文件的每一行都打印在一行上: vim b.txt12345vim c.txt5678910[zxd@localhost ~]$ awk '{printf "%s ", $0; getline < "c.txt"; print $0}' b.txt 1 62 73 84 95 10日期获取getline也能够用来执行一个UNIX命令,并失去它的输入。上面例子通过getline失去零碎的以后工夫: awk 'BEGIN {"date" | getline; close("date"); print $0}'[zxd@localhost ~]$ awk 'BEGIN {"date" | getline; close("date"); print $0}'Wed Mar 1 00:34:01 CST 2023参考资料# awk getline命令解析 ...

February 28, 2023 · 1 min · jiezi

关于linux:我是学生想要参与-OpenCloudOS该怎么做

为帮忙高校同学在 OpenCloudOS 操作系统开源社区中,把握 Linux 常识,积攒开源我的项目经验,成长为优良的软件工程师。近日,小云为大家汇总了一份在 OpenCloudOS 社区的成长攻略,并正式上线 2023 年 OpenCloudOS 校园大使招募打算。 在这里,你能够深刻学习 Linux 常识,取得导师业余领导! 在这里,你能够积攒开源我的项目经验,成为闪耀的开源 Star! 在这里,你能够结识 1000+ 操作系统大牛! 取得社区 500+ 成员单位公司岗位举荐! 加入「优良贡献者」等奖项的年度评比 …… 那么如何能力退出 OpenCloudOS 社区并参加奉献呢?戳下文理解详情 OpenCloudOS 社区奉献攻略奉献之前1、 扫码填写表单信息 2、 增加小助手微信(ID:OpenCloudOS),退出社区高校群 奉献攻略1、 进入 OpenCloudOS Gitee 仓库 -> Issue 页面: https://gitee.com/organizatio... 2、 抉择你感兴趣的 Issue,点击该 Issue 并在评论区留言「支付工作」告诉管理员与其余贡献者,即实现 Issue 认领(日常及其他工作无需此操作)。  3、 提交 PR 时,请同时将 PR 链接到相应的 issue。  4、 实现奉献后,提交奉献记录至「OpenCloudOS 奉献记录表」: https://docs.qq.com/sheet/DSl... 小助手将和社区负责人一起审核奉献记录,按月分割你发放「开源贡献者」证书 如果有疑难:低、中难度工作有疑难可在社群和评论区发问,高难度工作少数为社区主线工作,将由技术老师分割你带你参加研发。 如实现难度较高或社区重要工作可取得社区周边处分 社区奉献指南:https://gitee.com/organizatio... 除此之外,OpenCloudOS 校园大使也在炽热招募当中,欢送酷爱技术、乐于分享的你退出咱们 ...

February 28, 2023 · 1 min · jiezi

关于linux:Memblaze-联合-OpenCloudOS-完成技术兼容互认证

近日,北京忆恒创源科技股份有限公司(以下简称 Memblaze)PBlaze6 6530 系列企业级 NVMe SSD 与 OpenCloudOS 实现互相兼容认证,测试期间,整体运行稳固,在性能、性能及兼容性方面体现良好。       1、产品简介作为国产开源操作系统社区,OpenCloudOS 积淀了腾讯及多家厂商在软件和开源生态的劣势,在云原生、稳定性、性能、硬件反对等方面均有松软撑持,能够平等全面地反对所有硬件平台。目前,OpenCloudOS 已反对 X86_64、ARM64、RISC-V 架构,适配 飞腾、海光、兆芯、鲲鹏等芯片。同时提供反对全栈国密和秘密计算,另有 300 余家企业产品与 OpenCloudOS 操作系统实现适配。 深厚的技术积攒与不断创新,让 OpenCloudOS 在社交、游戏、金融领取、AI、平安、大数据等实在业务场景中,经验了千万级节点的长时间验证,可用性高达 99.999%。相比 CentOS 7 和其余开源社区版本,OpenCloudOS 故障率升高 70% 以上,且在典型业务场景中性能晋升超 50%。 Memblaze 是国内出名企业级 PCIe SSD 产品和解决方案供应商,致力于高性能、高可靠性企业级 PCIe SSD 的开发工作,成立至今已有十余年工夫。其高性能企业级 SSD 解决方案和 PBlaze 系列企业级 SSD 在国内外数据库、虚拟化、云计算、大数据、人工智能等畛域正失去广泛应用,寰球部署规模超百万片。 本次通过认证的 PBlaze6 6530 系列企业级 NVMe SSD 面向支流业务利用开发,采纳 PCIe 4.0 接口,有着高达 1,100K IOPS 的 4K 随机读性能、420K IOPS 的 4K 随机写性能,6.8GB/s 和 4.8GB/s 的程序读、程序写带宽,联合 IO 门路优化技术、多核计算以及 IO 智能调度等技术,可在显著晋升企业业务响应速度的同时,让 QoS 得以保障。 ...

February 28, 2023 · 1 min · jiezi

关于linux:Linux-瑞士军刀-BusyBox-实用工具

BusyBox 是一个不便的实用工具,它在一个大概 2 MB 的可执行文件中提供了几个精简的 UNIX shell 命令行工具和微型 Linux 程序汇合。它能够在多个环境中运行,如 Android、Linux、FreeBSD 等环境。BusyBox 是专门为内存和存储空间十分无限的嵌入式设施而创立的。 BusyBox 被称为瑞士军刀工具,它是 GNU shellutils、fileutils 和 coreutils 中 shell 实用程序的简略代替。它也能够在占用空间较小的 Linux 发行版中找到,比方 Alpine Linux。 在本指南中,咱们将帮忙您在 Linux 上开始应用 Busybox。 装置 BusyBox对于 Debian / Ubuntu 零碎,执行如下命令 $ sudo apt update$ sudo apt install busybox 对于 ArchLinux / Fedora /RHEL / CentOS / Rocky / AlmaLinux 零碎 首先下载 BusyBox 64 位二进制文件 $ wget https://busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-x86_64接下来,给它起一个更简略的名字 $ mv busybox-x86_64 busybox而后应用 chmod 命令为其调配执行权限 ...

February 28, 2023 · 2 min · jiezi

关于linux:Linux-下如何确定-CPU-是32位还是64位

有时候晓得服务器的 CPU 架构为32位或64位是否十分重要的,因为64位应用程序不能在32位零碎上运行,而32位应用程序能够轻松运行在64位零碎。 确定 CPU 是 32 位还是 64 位?通过查看 /proc/cpuinfo 文件确定 CPU 体系结构,如下所示: [root@localhost ~]# cat /proc/cpuinfo | grep -i flagsflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc up rep_good pni monitor ssse3 lahf_lm在下面的输入中,咱们能够看到 lm, tm,rm,这些标记示意 CPU 架构。 含意如下: lm : Long Mode (64 bit)tm : Transparent Mode ( 32 bit)rm : Real Mode (16 bit)应用 lscpu 命令查看 CPU 架构,在输入中查找 “CPU op-modes(s)” ...

February 27, 2023 · 2 min · jiezi

关于linux:僵尸进程和孤儿进程

https://www.cnblogs.com/Anker... 孤儿过程:一个父过程退出,而它的一个或多个子过程还在运行,那么那些子过程将成为孤儿过程。孤儿过程将被init过程(过程号为1)所收养,并由init 过程对它们实现状态收集工作。孤儿过程是没有父过程的过程,孤儿过程这个重任就落到了init过程身上,init过程就如同是一个民政局,专门负责解决孤儿过程的善后工 作。每当呈现一个孤儿过程的时候,内核就把孤 儿过程的父过程设置为init,而init过程会循环地wait()它的曾经退出的子过程。这样,当一 个孤儿过程苍凉地完结了其生命周期的时候,init过程就会代表党和政府露面解决它的所有善后工作。因而孤儿过程并不会有什么危害。 僵尸过程:一个过程应用fork创立子过程,如果子过程退出,而父过程并没有调用wait或waitpid获取子过程的状态信息,那么子过程的过程描述符依然 保留在零碎中。这种过程称之为僵死过程。解决僵尸过程查找状态为Z的过程,Z就是代表zombie process,僵尸过程的意思。kill -9 能够杀死僵尸过程,因而 kill - 9 示意强制杀死该过程;与SIGTERM相比,这个信号不能被捕捉或疏忽,同时接管这个信号的过程在收到这个 信号时不能执行任何清理。 僵尸过程的解决办法(1)通过信号机制 子过程退出时向父过程发送SIGCHILD信号,父过程解决SIGCHILD信号。在信号处理函数中调用wait进行解决僵尸过程https://blog.csdn.net/chenkai...(2)fork两次 《Unix 环境高级编程》8.6节说的十分具体。原理是将子过程成为孤儿过程,从而其的父过程变为init过程,通过init过程能够解决僵尸过程https://www.cnblogs.com/funbl...

February 23, 2023 · 1 min · jiezi

关于linux:阿里云ECS-TOP性能提升超20KeenTune助力倚天Alinux3达成开机即用的全栈性能调优-龙蜥技术

文/KeenTune SIG 01 阿里云 ECS 上售卖页新增“利用减速”性能2023年1月12日 阿里云 ECS 的售卖页有了一些新的变动,在用户抉择倚天+ Alinux3 新建实例时,多了一个新的选项“利用减速”。这个性能是 阿里云 ECS 基于 KeenTune 提供典型云场景的开机即用的全栈调优解决方案,业务均匀性能晋升达到 20%+,为客户提供远高于 x86 实例的性价比。 目前曾经上线 MySQL、Nginx、Redis、PostgreSQL,之后Spark、Kafka、Memcached、Onnx 等也会陆续上线,力争为云上全场景客户服务。 02 阿里云 ECS 云场景性能调优的问题与挑战业务环境复杂多变波及畛域多:环境资源逾越硬件、固件、OS内核、编译器、Runtime、利用等多层级,调优复杂度高。 软硬件更新快:新的硬件设施、软件技术继续呈现,会重大影响业务的体现,产生新的资源瓶颈。 调优老本高,不易复用人力、工夫老本高:大部分全栈调优须要5位以上领域专家进行为期3个月以上的集中调优。 业务环境差别大:业务和场景差别往往导致已有的性能调优计划无奈在新的场景上复用。 镜像治理调优艰难、不灵便场景调优镜像治理、运维艰难:调优在镜像内治理,就会导致镜像仓库几何增长,运维艰难。 业务切换、调优更新艰难:老实例难以享受最新调优能力,混布、业务更换无奈应用。 03 KeenTune 是如何来做的?在售卖页抉择“利用减速”,KeenTune 会从阿里云 ECS 管控侧接管到须要进行调优的利用,在新购买的倚天实例上装置曾经通过编译优化的利用版本,并且应用“一键专家调优”性能,提供包含 CPU、内存、IO、网络及平安及利用自身的优化,从而实现开机即用的全栈调优。 04 产品亮点拉通多畛域调优能力,充沛开释倚天硬件能力,提供高性价比云产品阿里云 ECS 倚天实例采纳最新 Arm 架构,通过多个相干团队一年左右的的全栈优化,摸索技术近百项,落地技术 30+,在 20+ 利用场景中获得 20-30% 的性能晋升,为用户提供更高性价比的产品。 采纳龙蜥社区智能调优产品 KeenTune,为典型云场景提供一键式专家调优服务底层采纳龙蜥社区的开源智能调优工具KeenTune(轻豚)为倚天实例提供调优专家知识库和 AI 参数调优的协同调优的能力,在内核、编译、根底服务、利用等畛域为云场景业务的典型负载定制最佳运行环境。 “利用减速”性能,为客户提供丰盛的多场景的开机即用最优性能的倚天实例目前曾经反对 Nginx、MySQL、Redis、PostgreSQL,后续 Spark、Kafka、Memcached 等也会陆续上线,继续基于倚天生态构建残缺的客户业务的全栈调优解决方案服务能力。 相比于某云厂商,Booster 为客户提供更便捷继续的调优服务 无需更换镜像,只需降级软件,客户即可享受最新的调优能力,继续享受阿里云各领域专家的最新调优技术。同时,应用 Booster 的实例,客户也能够很轻松的实现混布场景的调优,在业务切换的时候,动静设置最优环境。 KeenTune 介绍视频:龙蜥社区小龙 KeenTune(轻豚)是一款 AI 算法与专家知识库双轮驱动的操作系统全栈式智能优化产品,提供从硬件到软件的全栈动、动态协同调优的能力,让业务运行在最优环境中。 ...

February 23, 2023 · 1 min · jiezi

关于linux:通过11个示例掌握-linux-xargs-命令的使用

xargs 是 Unix 类零碎中的命令,该零碎从规范输出中读取我的项目,由空白(能够用双引号或单个引号或后斜线爱护)或新行界定,并执行命令(默认 /bin/echo)一次或屡次,规范输出上的空白行被疏忽。 xargs 命令与其余命令联合应用十分不便。默认状况下,它冀望来自 STDIN 的输出。xargs 次要用于加强初始命令的输入,并利用输入执行大量操作。 在这篇文章中,咱们将探讨 11 个 linux xargs 命令的理论示例 (1) 根本用法输出 xargs,它将冀望咱们输出,输出完一行,以 enter 完结,再输出下一行,而后执行 ctrl+d 查看输入,如下所示 linuxtechi@mail:~$ xargshellojohnthis is me ( ctrl+d)hello john this is melinuxtechi@mail:~$home/Downloads#(2) 应用分隔符 (-d)应用选项 -d 指定分隔符,并应用 \n 作为分隔符。当按下 ctrl+d 时,它将回显到屏幕上 [root@linuxtechi ~]# xargs -d\nHiWelcome hereNow press Ctrl+DHiWelcome hereNow press Ctrl+D[root@linuxtechi ~]#(3) 限度每行输入 (-n)能够在 xargs 命令中应用 -n 选项依据须要限度输入,例如每行只显示 2 项 linuxtechi@mail:~$ echo a1 b2 c3 d4 e45a1 b2 c3 d4 e5linuxtechi@mail:~$ echo a1 b2 c3 d4 e5 | xargs -n 2a1 b2c3 d4e5linuxtechi@mail:~$(4) 在执行前启用用户提醒 (-p)在 xargs 命令中应用选项 -p,执行前会提醒用户 y (是) 和 n (否) ...

February 23, 2023 · 2 min · jiezi

关于linux:通过12个实例掌握-linux-wget-命令的使用

Linux 下的 wget 命令用于通过 HTTP、HTTPS 和 FTP 协定从 web 上下载文件。换句话说,咱们能够说 wget 是 Linux 零碎的非交互式命令行下载工具。它还反对通过 HTTP 代理下载文件。 这里的非交互式意味着它能够在后盾工作,而用户没有登录。当咱们进行 Linux 发行版的最小装置时,并没有装置 wget 命令,运行如下命令装置: $ sudo yum install -y wget // CentOS 7 / RHEL 7$ sudo dnf install -y wget // CentOS 8/ RHEL 8/ Rocky Linux 8$ sudo apt install -y wget // Ubuntu / Debian$ sudo pacman -S wget // Arch Linux$ sudo zypper install wget // OpenSUSE在本教程中,咱们将介绍 12 个有用的 wget 命令示例,这些示例将帮忙您像业余人员一样应用 wget 命令。 ...

February 22, 2023 · 3 min · jiezi

关于linux:Linux批量更改文件后缀名

Linux批量更改文件后缀名centOSrename .mp4 60.mp4 *.mp4 阐明:找到*.mp4后缀的文件,把.mp4替换成60.mp4ubunturename 's/\.c/\.h/' ./*把当前目录下的后缀名为.c的文件更改为.h的文件加入链接: http://blog.chinaunix.net/uid...

February 21, 2023 · 1 min · jiezi

关于linux:Linux-中使用-Smartctl-监视和分析硬盘状况

Smartctl (Self-Monitoring, Analysis and Reporting Technology) 是 UNIX 和 Linux 等操作系统中的命令行工具,用于执行 SMART 工作,如打印 SMART 自检和谬误日志,启用和禁用 SMART 自动测试,设施自检。 Smartctl 在物理 Linux 服务器上很有用,能够查看智能磁盘的谬误和坏扇区,并提取无关硬件 RAID 前面应用的磁盘的信息。 装置 Smartctl对于 Ubuntu 零碎 $ sudo apt-get install smartmontools对于 Redhat / CentOS 零碎 # yum install smartmontools启动Smartctl 服务对于 Ubuntu 零碎 $ sudo /etc/init.d/smartmontools start对于 CentOS / RHEL 零碎 # service smartd start ; chkconfig smartd on(1) 查看硬盘是否开启 Smart Capability 性能root@linuxtechi:~# smartctl -i /dev/sdbsmartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-32-generic] (local build)Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org=== START OF INFORMATION SECTION ===Model Family: Seagate Momentus 5400.6Device Model: ST9320325ASSerial Number: 5VD2V59TLU WWN Device Id: 5 000c50 020a37ec4Firmware Version: 0002BSM1User Capacity: 320,072,933,376 bytes [320 GB]Sector Size: 512 bytes logical/physicalRotation Rate: 5400 rpmDevice is: In smartctl database [for details use: -P show]ATA Version is: ATA8-ACS T13/1699-D revision 4SATA Version is: SATA 2.6, 1.5 Gb/sLocal Time is: Sun Nov 16 12:32:09 2014 ISTSMART support is: Available - device has SMART capability.SMART support is: EnabledWhere ‘/dev/sdb’ is your hard disk. Last Two lines in above output shows that SMART capability is enable for the device. ...

February 21, 2023 · 5 min · jiezi

关于linux:谈谈Linux内核的噪声

Linux内核是广被应用的操作系统,从嵌入式家用设施,航空航天设施到超级计算机,到处都有Linux内核的身影,这归功于Linux内核丰盛的配置带来的微小灵活性。 网络虚拟化和软件定义网络的倒退,也从另外一个方面证实了在网络设备如此专用的畛域,Linux内核也能施展巨大作用,并且对网络设备畛域带来可编程性的微小便当,极大促成了网络设备畛域的倒退,5G网络堆栈建设在这个范式之上。随着无人驾驶和物联网等实时零碎的倒退,对提早要求越来越高。高性能计算(HPC)、实时工作和软件定义网络等需要须要Linux可能执行提早敏感的工作。 为了达成这些指标,软硬件都要为高性能计算和实时性做配置。硬件须要在吞吐和提早确定性之间做衡量,包含调整处理器的频率,省电模式和系统管理中断等。 对内核配置来说,就是要在零碎中隔离出一些看家(house keeping) CPU, 这些看家上跑的工作包含内核线程,如RCU回调线程,内核中一些提早工作线程,以及内核与用户态一些看管线程。一些中断也被放在看家CPU上。这样,在软件定义网络系统中,特定的隔离的CPU被用来执行非凡的网络性能虚拟化(NFV)。 尽管有须要确定性的工作被路由到这些特定的隔离的CPU上,依然有一些CPU由调度调配用来执行通用的个别工作,这些CPU对延时确定性要求不高,不被隔离。为了进步这类须要提早确定的零碎的实时性,经常须要内核配置PREEMPT_RT以缩小唤醒提早。 这些对提早敏感的零碎评估是一件非常复杂的工作,评估这些零碎的提早变异是一件十分艰辛但重要的工作。这在高性能计算畛域被称为零碎噪声,在实时操作系统畛域,被称为实时性。无论叫做什么,这件事的实质都是一样的,一个确定的工作是怎么被零碎内各种简单的软硬件组件烦扰,进而产生非常复杂的时间延迟散布的。 怎么评估一个内核的噪声呢?大略有两种办法:设置适合的负载和基于追踪的办法。前者是基于工作的一种宏观测试方法,测试各种不同工作的工夫散布,后者是一种宏观的办法,检测同一个工作在执行时产生这种工夫的散布的本源是什么。 这两种办法察看尺度不同,各有利弊,负载的办法可能就某个特定的工作给出工夫散布特色,并且能够剖析影响这个工作的工夫特色的宏观因素。而基于追踪的宏观办法,能剖析出各个软件或者硬件过程时间延迟,然而在整个零碎中如何还原出产生这些宏观提早的起源,是很难做到的。 因而很多时候,须要联合基于负载的办法和基于追踪的办法,才有可能靠近事实真相。内核中有osnoise同时联合了基于负载的办法和基于追踪的办法,来评估和归因内核中的噪声。 这个工具是为高性能计算开发的,用于对隔离的CPU零碎中,追踪奥妙级的噪声。通过一系列对内核实时基础设施,调度,追踪子系统等的批改, sosnoise最终在内核的5.14版本正式进入了Linux内核,在内核5.17中, 这个性能能够在用户态通过rtla (Real-Time Linux Analysis) 工具集应用被内核开发者和零碎管理者应用,这些人很容易通过这些工具测试它们的零碎的噪声,或者扩大这些工具的性能。 为了了解osnoise在做什么, 咱们先来看看噪声起源。 咱们介绍下Linux内能够被称为工作的几种上下文。个别程序有non-maskable interrupts (NMIs), maskable interrupts (IRQs), softirqs和线程四种执行上下文。在PREEMPT_RT开启时,softirqs线程化。咱们没必要辨别这些不同的执行流或者叫上下文,咱们能够把它们统称为工作。这几种工作在Linux中遵循以下规定: 每个CPU的NMI抢断IRQs,softirqs和线程每个CPU的NMI一旦发动,就必须执行实现才让出CPUIRQs抢断softirqs和线程一旦一个IRQ 开始解决, 它不会被另一个IRQ抢断Softirqs能够抢断线程softirq不能被另外一个软中断抢断线程不能抢断NMI, IRQs and sofirqs咱们接着介绍下Linux的调度器,Linux有5个分层的调度器,调度所有的线程,不论这些线程是内核线程还是用户态线程,对调度器来说,都厚此薄彼,并没有什么不同。这5个调度器以一个固定的程序作用来选出下一个要运行的线程。这些调度器依照执行程序顺次是: 第一个调度器为stop machine调度器,它在多CPU零碎中用来实现负载平衡和热插拔等内核性能。 第二个调度器是SCHED_DEADLINE,是一个基于Earliest Deadline First的deadline实时调度器。 第三个是一个POSIX兼容的固定优先级的实时调度器, 应用这个调度器的线程能够是SCHED_RR或者SCHED_FIFO类型的线程,SCHED_RR为工夫片轮转的线程,SCHED_FIFO线程只有在挂起,执行完结,或者被抢占时能力才会开释CPU的应用。 第四个调度器是通用调度器,即CFS调度器,这个调度器调度的线程标记为SCHED_OTHER。 第五个调度器为IDLE 调度器, 当后面四个调度器没有线程调度到时,就调度到idle thread线程。 Linux有一套丰盛的追踪性能。能够追踪例很多内核性能函数, 这些追踪性能的宽泛应用,他们并没有带来太大性能损耗,却给关怀内核运行的人提供了很好的察看内核如何运行的窗口。ftrace,ebpf和systemtap都是这些追踪零碎的杰出代表。 以HPC程序来阐明这个问题。失常HPC利用是一个程序在多份数据上运行的同一段代码(single-program multiple-data (SPMD) model), 如图所示, 下面是一个HPC的程序运行过程, A,B, C运行同一段代码,它们计算实现后把数据发送给D进行接下来的计算。失常计算只有蓝色局部的部分计算,橙色局部的线程间同步,以及绿色的线程间通信,这是每个CPU上的线程理论做的工作,然而,零碎中总是存在各种因素会打断程序在CPU上运行。因而,在上述蓝色部分计算的两头,总是会引入红色的局部,这些用户工作的运行总是被操作系统的一些零碎工作打断,这些零碎工作可能是NMIs, IRQs或者softirqs,也可能是其它用户线程或者内核线程。 这些跟程序执行无关由零碎引入的时间延迟的不确定性就是噪声,这些噪声让A,B,C三个雷同的程序经验的工夫也不同,对于HPC来说,就带来很大的提早和性能惩办,如果对于实时性很强的零碎,可能带来的不只是性能惩办,而是劫难。 从下面的探讨能够看出,不同的调度策略对部分CPU某个工作的执行提早影响很大,重大影响每个并行任务的响应工夫。这些被内核的系统活动引起的提早其实就是操作系统噪声。全世界的超级计算机应用Linux作为内核,起因之一在于Linux能够通过配置,把NMIs, IRQs或者softirqs,内核线程等系统活动局限在多数的几个外围上,而大部分其它外围用来跑真正的计算工作,这些跑计算工作的外围通过隔离和绑核,能够免受零碎噪声和其它用户程序产生噪声的烦扰,使其延时体现出好的多的确定性。 在软件定义网络实际中,倒退出DPDK这种通用框架进行相似的噪声隔离工作,而HPC和其它实时零碎中,也有相似的框架。尽管能够对CPU进行隔离,并且能够把所有IRQ, softirqs以及内核线程都挪动到少数几个CPU核上, 对提早特地敏感的工作进行精心配置却是一个十分有挑战的工作。因为还有很多每CPU的软件流动会烦扰程序运行,比方调度器用的时钟中断,虚拟内存统计,网络包的解决等。这些噪声起源能够被精心的配置去掉,比方在内核配置里使能NOHZ_FULL去除时钟中断的烦扰, 或者批改内核的代码或者算法去除相应的噪声烦扰。 Linux是个通用操作系统,它不是为延时敏感的利用而生的,然而HPC, 实时操作系统这类心愿利用Linux实现其刻薄指标的开发者们,不可能时刻去追踪Linux的批改对其延时烦扰的影响。 大家习惯用一些实时或者延时敏感的HPC负载去度量Linux内核噪声,两个好用的工具就是sysjitter和oslat。这些工具反复测量同一个工作的延时差别,比拟它们的延时差别是否超过某个门限值。 这些工具用一些计算工作去测量和发现噪声的存在,然而并不会寻找它们的起因。要发现这些噪声的起因,咱们须要内核的追踪零碎去察看整个内核零碎的运行。当然,追踪零碎也会引入噪声,这就须要统计去寻找噪声的根本原因以抓住主要矛盾。 ...

February 20, 2023 · 1 min · jiezi

关于linux:通过14个示例彻底掌握-Linux-ls-命令的使用

Linux / UNIX 中的 ls 命令用于列出目录内容。当咱们不带任何选项运行 ls 命令时,它显示当前目录下的无关文件信息,按字母顺序排列。 ls 命令语法$ ls <options> <file | directory> 在本教程中,咱们将通过 14 个有用的理论示例介绍 Linux 中的 ls 命令。 (1) 列出当前工作目录的内容当咱们运行不带任何选项的 ls 命令时,它将列出如下所示的文件和目录 $ lsDesktop Documents Downloads Music myscript.sh Pictures playbook.yaml Public snap Templates Videos$(2) 以长列表格局列出内容应用 ls 命令中的 -l 选项,以长列表格局列出目录内容。 如上所示,ls -l 还显示了文件和目录的权限、批改工夫和大小。 (3) 列出特定目录的内容要列出特定目录的内容,示例如下: $ ls -l /var/log/apt/ 如果你只心愿列出目录权限,那么应用-ld 选,示例如下: $ ls -ld /var/log/apt/drwxr-xr-x 2 root root 4096 Oct 14 06:58 /var/log/apt/$(4) 显示目录内容的文件类型 (ls -F)To list file types with ls command then use ‘-F’ option, in thefollowing example, we are listing the file types from present workingdirectory ...

February 20, 2023 · 2 min · jiezi

关于linux:通过10个实例掌握-linux系统-lsattr-和-chattr-命令

能够在文件或目录上设置某些管制属性,以容许追加数据,避免数据被更改或删除等。例如,您能够启用要害系统文件或目录上的属性,以便任何用户 (包含 root) 都不能删除或更改它,禁止备份实用程序 (如 dump 命令) 备份特定的文件或目录,等等。这些属性只能在 ext2、ext3 或 ext4 文件系统中的文件和目录上设置。 有 lsattr 和 chattr 两个命令用于属性治理,上面是罕用属性列表: 属性形容a (append)容许对文件进行追加操作A此属性不容许更新文件的拜访工夫c (compressed)当此属性启用时,文件将主动压缩到磁盘上d (dump)文件不能通过 dump 命令进行备份D当此属性启用时,更改将同步存储在磁盘上e (extent format)它显示文件正在应用区段映射磁盘上的块i (immutable)当该属性在文件上启用时,咱们不能批改,重命名和删除文件j (journaling)当设置此属性时,文件的数据先存储在日志中,而后再写入文件S (synchronous)设置此属性后,更改或批改将同步存储在磁盘上chattr 命令中可应用的不同选项: -R 递归地更改目录及其子目录的属性-f 禁止显示大多数谬误音讯-V 具体输入信息用于 chattr 命令中设置和勾销设置属性的操作符: + 用于设置文件和目录的属性- 用于删除或勾销设置属性= 使它们成为文件所领有的惟一属性chattr 命令语法:# chattr <options> <attributes> <file or Directory >lsattr 命令语法:# lsattr <File or Directory>(1) 使文件不可变[root@linuxtechi ~]# chattr +i dummy_data[root@linuxtechi ~]# lsattr dummy_data----i----------- dummy_data当初尝试删除和编辑文件 [root@linuxtechi ~]# rm -f dummy_datarm: cannot remove ‘dummy_data’: Operation not permitted[root@linuxtechi ~]# echo "test" >> dummy_data-bash: dummy_data: Permission denied(2)删除不可变属性[root@linuxtechi ~]# chattr -i dummy_data[root@linuxtechi ~]# lsattr dummy_data---------------- dummy_data(3) 只容许对文件进行追加操作[root@linuxtechi ~]# chattr +a dummy_data[root@linuxtechi ~]# lsattr dummy_data-----a---------- dummy_data尝试对文件追加内容 ...

February 17, 2023 · 2 min · jiezi

关于linux:麒麟操作系统-kylinos-从入门到精通-研发环境-第四十四篇-python开发环境搭建

0.根底环境类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)零碎:河汉麒麟操作系统 V10 SP1(2203) 关键词:信创,麒麟零碎,linux,c++,c,飞腾,arm,python,ai,chatgpt,anaconda,人工智能 1.环境筹备咱们也能够间接通过利用市场或者装置python3或者python2,但思考到python在版本治理层面容易起抵触,咱们应用anaconda3用于治理python的依赖和版本。 1.1 anconda3简介开源的python发型版本,外面蕴含了python、conda(一个python包管理器)和各种用于科学计算的包,能够齐全独立应用,不再额定下载Python。 应用anaconda有以下益处:屏蔽了零碎平台的差别,解决底层依赖。装置一个包之后依赖的货色全副解决好,省心。有一个虚拟环境的概念,每个环境之间是隔离的,都能够设定不同的python版本以及各种包,不和零碎的抵触,能够轻易切换,要删除也是整个一起清理。conda是一个新的python包和工具管理器,安装包的时候能够主动解决包的各种非python依赖,并且能够管理工具。pip是一个单纯的传统包管理器。应用anaconda咱们能够同时使用者两种包管理器,不过conda个别能做的更多些。 1.2 装置装置conda的一些依赖 apt-get install libgl1-mesa-glx libegl1-mesa libxrandr2 libxrandr2 libxss1 libxcursor1 libxcomposite1 libasound2 libxi6 libxtst6 -y通过利用市场装置或者通过命令行装置 sudo apt-get install anaconda3 -y 2.装置应用创立虚拟环境 conda create --name python310 python=3.10 #装置环境胜利后提醒,过程提示信息Preparing transaction: doneVerifying transaction: doneExecuting transaction: done## To activate this environment, use:# > source activate python310## To deactivate an active environment, use:# > source deactivate#激活环境 source activate python310勾销激活,回到默认 source deactivate其余用法参见anaconda3的官网文档 3.hello world关上命令行 输出 python关上python信息以及交互执行窗口 ...

February 16, 2023 · 1 min · jiezi

关于linux:通过10个示例掌握-Linux-ncat-命令

ncat / nc 是网络实用程序,性能相似于 cat 命令,但用于网络。它是一个通用的 CLI 工具,用于在网络上读取、写入和重定向数据。它被设计成一个牢靠的后端工具,能够与脚本或其余程序一起应用。它也是一个很棒的网络调试工具,因为它能够创立任何类型的连贯。 ncat / nc 能够是端口扫描工具、平安工具或监控工具,也是一个简略的 TCP 代理。因为它有这么多的性能,它被称为网络瑞士军刀。它是每个系统管理员都应该晓得和把握的工具之一。 在大多数 Debian 发行版中,nc 都能够应用,并且在装置过程中会主动装置。然而在 Minimal Centos 7 / RHEL 7 装置中,您须要应用以下命令装置。 [root@linuxtechi ~]# yum install nmap-ncat -y管理员能够应用它来审计他们的系统安全,能够应用它来找到被关上的端口并爱护它们。管理员也能够应用它作为审计 web 服务器,telnet 服务器,邮件服务器等客户端,应用它咱们能够管制每个字符的发送以及查看申请的响应。还能够让它捕捉客户端发送的数据,以理解他们在做什么。 在本教程中,咱们将通过 10 个示例学习如何应用 nc 命令。 (1) 监听入站连贯ncat 能够在监听模式下工作,咱们能够用选项 l 监听端口号上的入站连贯,示例如下: $ ncat -l 8080服务器当初将开始监听端口 8080 以获取入站连贯。 (2) 连贯到近程零碎要应用 nc 连贯到近程零碎,能够应用以下命令 $ ncat IP_address port_number 示例如下: $ ncat 192.168.1.100 80当初连贯到 IP 地址为 192.168.1.100 服务器的 80 端口,咱们当初能够向服务器发送指令了,就像咱们能够失去残缺的页面内容 ...

February 16, 2023 · 2 min · jiezi

关于linux:linux-强行踢出对应的用户并禁止ip登录

踢出指定的用户who #查看所用的连贯who -m # 查看以后的用户pkill -kill -t 对应的pts/$id限度ip拜访的两种形式应用hosts.allow和hosts.deny来设置ip白名单和黑名单,/etc/目录下.先级为先查看hosts.deny,再查看hosts.allow, 后者设定可越过前者限度, 例如: 1.限度所有的ssh, 除非从216.64.87.0 - 127上来。 hosts.deny: in.sshd:ALL hosts.allow: in.sshd:216.64.87.0/255.255.255.128 2.封掉216.64.87.0 - 127的telnet hosts.deny in.sshd:216.64.87.0/255.255.255.128 3.限度所有人的TCP连贯,除非从216.64.87.0 - 127拜访 hosts.deny ALL:ALL hosts.allow ALL:216.64.87.0/255.255.255.128 4.限度216.64.87.0 - 127对所有服务的拜访 hosts.deny ALL:216.64.87.0/255.255.255.128 其中冒号后面是TCP daemon的服务过程名称,通常零碎 过程在/etc/inetd.conf中指定,比方in.ftpd,in.telnetd,in.sshd 其中IP地址范畴的写法有若干中,次要的三种是: 1.网络地址--子网掩码形式: 216.64.87.0/255.255.255.0 2.网络地址形式(我本人这样叫,呵呵) 216.64.(即以216.64打头的IP地址) 3.缩略子网掩码形式,既首屈一指进制子网掩码后面有多少个“1”比方: 216.64.87.0/255.255.255.0 -- 216.64.87.0/24 设置好后,要重新启动 # /etc/rc.d/init.d/xinetd restart # /etc/rc.d/init.d/network restart应用iptables命令.单个IP的命令是 iptables -I INPUT -s 81.241.219.171 -j DROP 封IP段的命令是 iptables -I INPUT -s 97.47.225.0/16 -j DROP iptables -I INPUT -s 97.47.225.0/16 -j DROP iptables -I INPUT -s 97.47.225.0/16 -j DROP 封整个段的命令是 iptables -I INPUT -s 97.47.225.0/8 -j DROP 封几个段的命令是 iptables -I INPUT -s 97.47.225.0/24 -j DROP iptables -I INPUT -s 97.47.225.0/24 -j DROP 服务器启动自运行 有三个办法: 1、把它加到/etc/rc.local中 2、vi /etc/sysconfig/iptables能够把你以后的iptables规定放到/etc/sysconfig/iptables中,系统启动iptables时主动执行。 3、service iptables save 也能够把你以后的iptables规定放/etc/sysconfig/iptables中,系统启动iptables时主动执行。 后两种更好些,个别iptables服务会在network服务之前启来,更平安 解封: iptables -L INPUT iptables -L --line-numbers 而后iptables -D INPUT 序号 iptables 限度ip拜访 通过iptables限度9889端口的拜访(只容许192.168.1.100、192.168.1.101、192.168.1.102),其余ip都禁止拜访 iptables -I INPUT -p tcp --dport 9889 -j DROP iptables -I INPUT -s 192.168.1.100 -p tcp --dport 9889 -j ACCEPT iptables -I INPUT -s 192.168.1.101 -p tcp --dport 9889 -j ACCEPT iptables -I INPUT -s 192.168.1.102 -p tcp --dport 9889 -j ACCEPT优先级为先查看hosts.deny,再查看hosts.allow, 后者设定可越过前者限度, 例如: 1.限度所有的ssh, 除非从216.64.87.0 - 127上来。 hosts.deny: in.sshd:ALL hosts.allow: in.sshd:216.64.87.0/255.255.255.128 2.封掉216.64.87.0 - 127的telnet hosts.deny in.sshd:216.64.87.0/255.255.255.128 3.限度所有人的TCP连贯,除非从216.64.87.0 - 127拜访 hosts.deny ALL:ALL hosts.allow ALL:216.64.87.0/255.255.255.128 4.限度216.64.87.0 - 127对所有服务的拜访 hosts.deny ALL:216.64.87.0/255.255.255.128 其中冒号后面是TCP daemon的服务过程名称,通常零碎 过程在/etc/inetd.conf中指定,比方in.ftpd,in.telnetd,in.sshd 其中IP地址范畴的写法有若干中,次要的三种是: 1.网络地址--子网掩码形式: 216.64.87.0/255.255.255.0 2.网络地址形式(我本人这样叫,呵呵) 216.64.(即以216.64打头的IP地址) 3.缩略子网掩码形式,既首屈一指进制子网掩码后面有多少个“1”比方: 216.64.87.0/255.255.255.0 -- 216.64.87.0/24 设置好后,要重新启动 # /etc/rc.d/init.d/xinetd restart # /etc/rc.d/init.d/network restart

February 15, 2023 · 2 min · jiezi

关于linux:通过16个实例掌握-Linux-Cat-命令

cat (concatenate) 命令是 Linux 和 Unix 中的根本命令之一。它用于创立新文件、连贯文件,也用于在规范输入中查看文件的内容。 根本语法: # cat <options> <File>可用选项: (1) 应用 cat 命令创立文件假如咱们要创立一个名为 linux_world 的新文件,键入 cat 命令,后跟要插入到文件中的文本内容,确保在最初键入 Ctrl + D 保留文件。 [root@linuxtechi ~]# cat > linux_worldHi this is my first file in linux.Linux always rocksThanks[root@linuxtechi ~]#(2) 查看文件的内容要应用 cat 命令查看现有文件的内容,示例如下: [root@linuxtechi ~]# cat linux_worldHi this is my first file in linux.Linux always rocksThanksroot@linuxtechi ~]#(3) 查看多个文件的内容要应用 cat 命令查看多个文件的内容,请在 cat 前面输出文件名 ,示例如下: [root@linuxtechi ~]# cat linux_world linux_distributions /etc/fstab下面的命令将在终端上显示三个文件的内容输入。 ...

February 15, 2023 · 2 min · jiezi

关于linux:通过11个示例掌握-Linux-DF-磁盘信息命令

df (disk free) 命令用于查问文件系统磁盘应用状况。默认状况下,df 命令以 1K 块为单位显示文件系统的应用状况,如果您想以更敌对的格局显示 df 命令的输入,请应用 -h 选项。 根本语法: # df {options} {mount_point_of_filesystem}可用选项: 输入样例: [root@linux-world ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/mapper/vg00-root 17003304 804668 15311852 5% /devtmpfs 771876 0 771876 0% /devtmpfs 777928 0 777928 0% /dev/shmtmpfs 777928 8532 769396 2% /runtmpfs 777928 0 777928 0% /sys/fs/cgroup/dev/mapper/vg00-home 14987616 41000 14162232 1% /home/dev/sda1 487652 62593 395363 14% /boot/dev/mapper/vg00-var 9948012 48692 9370936 1% /var/dev/mapper/vg00-sap 14987656 37636 14165636 1% /sap[root@linux-world ~]#(1) 列出所有文件系统的磁盘应用状况当咱们在 df 命令中应用 -a 选项时,它将显示所有文件系统的磁盘应用状况。 ...

February 13, 2023 · 4 min · jiezi

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

顾名思义,passwd 命令在 linux 下用于批改零碎用户的明码。如果 passwd 命令是由非 root 用户执行的,那么它将提醒输出以后明码,而后容许为调用该命令的用户设置新密码。当超级用户或 root 用户执行此命令时,能够重置包含 root 用户在内的任何用户的明码,而不须要晓得以后明码。 当咱们运行 passwd 命令设置用户明码时,加密的明码字符串保留在 /etc /shadow 文件中。 根本语法如下 : # passwd {options} {user_name}命令选项如下: (1) 更改零碎用户的明码当用非 root 用户登录时,运行 passwd 命令,它会重置登录用户的明码。 [linuxtechi@linuxworld ~]$ passwdChanging password for user linuxtechi.Changing password for linuxtechi.(current) UNIX password:New password:Retype new password:passwd: all authentication tokens updated successfully.[linuxtechi@linuxworld ~]$当用 root 用户登录并运行 passwd 命令时,它将重置 root 用户的明码,如果在 passwd 命令后指定了 user-name,则它将更改该用户的明码。 [root@linuxworld ~]# passwd[root@linuxworld ~]# passwd linuxtechi 留神: 普通用户也能够批改 root 和用户的明码,前提是该用户具备 sudo 权限。假如 sysops 是 sudo 特权用户,要批改其余用户和 root 用户的明码,在 passwd 命令前输出 sudo,示例如下: ...

February 12, 2023 · 2 min · jiezi

关于linux:通过5个实例掌握-Linux-账户管理命令

用户治理是 Linux 系统管理员的重要工作之一。在 Linux 操作系统中,本地帐户或用户由 useradd、usermod、userdel、chage 和 passwd 命令治理。 useradd - 用于在 Linux 下创立新帐户usermod - 用于批改 Linux 零碎中已存在的帐户userdel - 用于删除 Linux 零碎的本地帐号passwd - 为本地帐户或用户调配明码的命令chage - 用于查看和批改用户明码过期信息useradd 命令语法# useradd <options> <username_or_login>命令选项: usermod 命令语法# usermod <options> <username_or_login>命令选项: userdel 命令语法# userdel <options> <username_or_login>命令选项: chage 命令语法# chage <options> <username_or_login>命令选项: passwd 命令语法# passwd <username_or_login>无关 passwd 命令的详细信息请参考: 10 passwd command examples in Linux (1) 创立本地帐户并指定明码应用上面的 useradd 和 passwd 命令创立一个用户并为其调配明码 # useradd <username> ; echo -e "<newpassword>\n<newpassword>" | passwd username让咱们创立一个用户 harry 并调配明码 ...

February 11, 2023 · 2 min · jiezi

关于linux:Linux用户管理添加删除修改密码

Linux零碎是一个多用户操作系统,本文次要介绍的是Linux用户账号管理工作中罕用到的应用命令行来实现用户的减少、删除、批改用户属性、批改明码等操作。 1、减少用户减少用户命令: #创立用户组名为tom,用户组ID为501$> groupadd -g 501 tom #创立用户名为tom、用户ID为501、用户备注为“Tom Lee”的用户,并把应该用户退出到用户组ID为501的用户组中$> useradd -g 501 -u 501 -c 'Tom Lee' tom #创立用户后,能够查看’/etc/passwd‘用户所对应的信息$> cat /etc/passwd | grep tom*tom:x:501:501:Tom Lee:/home/tom:/bin/bash留神:1)在减少用户之前,须要先减少用户组,而后再把新增的用户退出到该用户组中。2)倡议将用户组ID和用户ID设置成一样(本例为501),这样有助于办理清晰的对应关系。3)用户组ID和用户ID都要从500以上开始,防止与零碎自带的账号抵触(零碎自带账号ID是从0~500)。 2、删除用户删除用户命令: # 查找文件:从根目录开始查找、类型属于文件、属于用户ID为501的内容$> find / -type f --user 501# 删除用户名为tom的用户$> userdel -r tom# 查找属于用户ID为501的文件并删除找到的文件$> find / -type -f --user 501 -exec rm -f {} \;留神:1)删除用户前,倡议应用find程序查找以后零碎中有哪些属于该用户的文件,这样能够做到不会误删一些重要文件。 3、批改用户属性(锁定用户、扭转家目录)批改用户属性命令: # 锁定用户$> usermod -L tom# 解锁用户$> usermod -U tom# 扭转家目录# 参数-d指定了该用户的新的家目录,参数-m指定把用户名为tom的原家目录的文件挪动到新的家目录中$> usermode -d /home/tomNew -m tom#批改用户属性后,能够查看’/etc/passwd‘用户所对应的信息(即用户的家目录由原来的'/home/tom'扭转为’/home/lee‘)$> cat /etc/passwd | grep tom*tom:x:501:501:Tom Lee:/home/lee:/bin/bash4、批改用户明码批改用户明码命令: ...

February 11, 2023 · 1 min · jiezi

关于linux:云原生场景下如何缓减容器隔离漏洞监控内核关键路径

导读:OpenCloudOS 社区是由操作系统、软硬件厂商与集体独特倡导发动的操作系统社区我的项目,提供自主可控、绿色节能、安全可靠、高性能的下一代云原生操作系统,与生态搭档一起打造中立的操作系统开源生态。作为社区重要的技术方向,OpenCloudOS 社区的云原生操作系统自研了一系列的云原生个性,本文次要介绍 CgroupFS 和 SLI。一、CgroupFS 个性1、计划背景容器的隔离次要是依赖 Linux 操作系统的 Namespace 和 Cgroup,与依赖硬件辅助虚拟化的虚拟机隔离不同,前者存在不少隔离破绽。随着云原生场景的大规模应用,大量利用的容器化暴露出了容器隔离性问题。 特地是 /proc、/sys 文件系统中的一些资源统计信息,还没有齐全的容器化,导致在物理机/虚拟机中的一些常用命令(比方 free/top)在容器中运行时,不能精确展现容器视角的信息,而是展现零碎级别的全局信息。对于依赖这些零碎信息运行的容器化利用,可能导致谬误的运行后果甚至无奈运行。 2、计划摸索业界目前广泛采纳 lxcfs 的计划解决容器隔离破绽问题。然而 lxcfs 计划有其固有的缺点: 1)须要依赖额定的组件 lxcfs; 2)lxcfs 在用户态基于 FUSE 实现,开销相比内核更大; 3)lxcfs 稳定性比拟差,可能在容器的生命周期状态切换时触发 hang、信息获取不到等问题。 每个 container 都须要对应一个 lxcfs 服务过程 3、计划实现 CgroupFS 计划基于内核态实现,其外围设计为,设计一个新的虚构文件系统,其中蕴含须要实现的容器视角的 /proc、/sys 等 fs,其目录构造放弃与全局 procfs 和 sysfs 统一,以保障对于用户工具的兼容性。理论读取相干文件时,通过 CgroupFS 的读者过程的上下文来动静生成对应的容器信息视图。以下内容基于 OpenCloudOS LTS 分支: https://github.com/OpenCloudOS/OpenCloudOS-Kernel/commits/lts/5.4.119-20.00094、计划实现成果1)创立挂载点目录 /cgroupfs挂载 cgroupfs: mount -t cgroupfs cgroupfs /cgroupfs/2)容器启动命令如下: docker run -itd --cpus 2 --cpuset-cpus 2,4 --memory="512m" --memory-swap="1g" -v /cgroupfs/sys/devices/system/cpu/:/sys/devices/system/cpu -v /cgroupfs/proc/cpuinfo:/proc/cpuinfo -v /cgroupfs/proc/stat:/proc/stat -v /cgroupfs/proc/meminfo:/proc/meminfo image-id /bin/bash容器启动后,会将 cgroupfs 下的文件 bind mount 到容器中对应地位。 ...

February 10, 2023 · 2 min · jiezi

关于linux:通过-10-个示例掌握-Linux-删除命令

rm 是 remove 的缩写,顾名思义,rm 命令用于删除零碎中的文件和目录。如果你是 Linux 老手,那么在运行 rm 命令时肯定十分小心,因为一旦你删除了文件或目录,那么你就不能复原文件和目录的内容,尽管有一些工具和命令能够复原删除的文件,但你须要专业技能。 rm 命令的根本语法如下: # rm <options> {files}rm 命令选项: (1) 删除文件删除单个文件 [linuxtechi@cloud ~]$ rm linuxstufff.log[linuxtechi@cloud ~]$删除多个文件 [linuxtechi@cloud ~]$ rm file1.txt file2.txt file3.txt file4.txt[linuxtechi@cloud ~]$(2) 交互式删除文件rm 命令中的 -i 选项会在删除文件前提醒,示例如下 [linuxtechi@cloud ~]$ rm -i linuxstufff.log rm: remove regular file ‘linuxstufff.log’? y[linuxtechi@cloud ~]$(3) 删除空目录rm 命令中的 -d 选项删除空目录,示例如下 [linuxtechi@cloud ~]$ ls -R appdata/appdata/:[linuxtechi@cloud ~]$ rm -d appdata/[linuxtechi@cloud ~]$linux 下也能够应用 rmdir 命令删除空目录 [linuxtechi@cloud ~]$ ls -R appdata/appdata/:[linuxtechi@cloud ~]$ rmdir appdata[linuxtechi@cloud ~]$(4) 递归删除目录rm 命令中的 -r 选项将递归删除父目录下的所有文件和子目录。 ...

February 9, 2023 · 3 min · jiezi

关于linux:Linux

文件治理目录操作切换目录 cd查看目录 ls -l 里出文件详细信息 (ll)-a 列出当前目录下所有文件及目录,蕴含暗藏文件创立目录(文件夹)mkdir -p 创立目录,若无父目录,在创立p(parent)输入信息 echo打印命令行 cat批改文件所属用户 chown扭转文件所述组 chgrp下载文件 wget在文件中查找某个字符串 grep统计文本中行数、字数、字符数 wc局部显示 more/less查找文件 find/ -name 'auto.cnf'创立空文件 touch复制文件 cp挪动或者重命名 mv删除文件 rm -r 递归删除,删除文件下所有内容-f 强制删除删除空目录 rmdir树形展现目录 tree (须要装置)显示当前目录 pwd创立链接文件 ln分页显示文件内容 more、less显示文件头、尾内容 head、tail编辑操作进入编辑器 vim/vi,分为 命令模式、插入模式、编辑模式。切换模式 esc 或 i 进入编辑模式 i退出编辑模式 esc保留 :w退出 :q不保留退出 :q!显示行号 set number查找关键字/xxxx n 下一个 shift+n 上一个复制光标所在行,并粘贴 yyph 左 j 下 k 上 l 右 挪动光标打包压缩命令打包压缩 tar\gzip\bzip2 -c归档文件-x 压缩文件-z gzip压缩文件-j bzip2压缩文件-v 显示压缩或解压缩过程 v(view)-f 应用档名例:只打包,不压缩:tar -cvf /home/abc.tar /home/abc打包,并用gzip压缩:tar -zcvf /home/abc.tar.gz /home/abc打包,并用bzip2压缩:tar -jcvf /home/abc.tar.bz2 /home/abc如果想解压缩,就间接替换下面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 。 ...

February 8, 2023 · 1 min · jiezi

关于linux:12个让人开心一笑的-Linux-搞怪命令

Linux 不仅仅是为管理员和业余人员做庄重的工作,你还能够玩文字游戏,对着 Linux 终端谈话,或者创立丑陋的 ASCII 图片等等。是的,Linux 真的很乏味,如果你晓得正确的命令的话。让咱们来看看这些能让你立即微笑的命令,或者在一天忙碌的工作完结时应用这些命令来缓解压力,让你心情愉快地来到家。 (1) Fortune 命令在 fortune 命令的帮忙下,咱们能够失去随机的名言金句和乏味的预测。 在 Debian / Ubuntu 零碎上装置 linuxtechi@linuxarena:~$ sudo apt-get install fortune在 CentOS / RHEL / Fedora 零碎上装置 [root@linuxtechi ~]# yum install fortune (2) Rev 命令Rev 命令会反转提供给它的任何字符串,这是一个零碎默认装置的命令。 [root@linuxtechi ~]# revLinuxTechiihceTxuniLLinux RocksskcoR xuniLOpensource WorlddlroW ecruosnepOLinuxMint Ultimate DesktoppotkseD etamitlU tniMxuniL咱们甚至能够创立一个带有名称列表的文件,文件中的所有名称将被反转。 [root@linuxtechi ~]# rev rev.txtihceTxuniLskcoR syawla xuniLdlrow ecruosnepO fo enobkcab eht si xuniLihceTxuniL moob moob[root@linuxtechi ~]#3) Yes 命令Yes 命令将间断显示你的文本 n 次,直到你进行它 (CTRL + C) ...

February 8, 2023 · 2 min · jiezi

关于linux:深度剖析-Linux-伙伴系统的设计与实现

在上篇文章 《深刻了解 Linux 物理内存调配全链路实现》 中,笔者为大家具体介绍了 Linux 内存调配在内核中的整个链路实现: 然而当内核执行到 get_page_from_freelist 函数,筹备进入搭档零碎执行具体内存调配动作的相干逻辑,笔者思考到文章篇幅的起因,并没有过多的着墨,算是留下了一个小尾巴。 那么本文笔者就为大家残缺地介绍一下搭档零碎这部分的内容,咱们将基于内核 5.4 版本的源码来具体的讨论一下搭档零碎在内核中的设计与实现。 1. 搭档零碎的外围数据结构 如上图所示,内核会为 NUMA 节点中的每个物理内存区域 zone 调配一个搭档零碎用于治理该物理内存区域 zone 里的闲暇内存页。 而搭档零碎的外围数据结构就封装在 struct zone 里,对于 struct zone 构造体的具体介绍感兴趣的敌人能够回看下笔者之前的文章 《深刻了解 Linux 物理内存治理》中第五大节 “ 5. 内核如何治理 NUMA 节点中的物理内存区域 ” 的内容。 在本大节中,咱们聚焦于搭档零碎相干的数据结构介绍~~ struct zone { // 被搭档零碎所治理的物理内存页个数 atomic_long_t managed_pages; // 搭档零碎的外围数据结构 struct free_area free_area[MAX_ORDER];}struct zone 构造中的 managed_pages 用于示意该内存区域内被搭档零碎所治理的物理内存页数量。 而 managed_pages 的计算形式之前也介绍过了,它是通过 present_pages (不蕴含内存空洞)减去内核为应答紧急情况而预留的物理内存页 reserved_pages 失去的。 从这里能够看出搭档零碎所治理的闲暇物理内存页并不蕴含紧急预留内存搭档零碎的真正外围数据结构就是这个 struct free_area 类型的数组 free_area[MAX_ORDER] 。MAX_ORDER 就是笔者在《深刻了解 Linux 物理内存调配全链路实现》 “ 的第一大节 "1. 内核物理内存调配接口 ” 中介绍的调配阶 order 的最大值减 1。 ...

February 4, 2023 · 24 min · jiezi

关于linux:linux-实时查看一个-python-进程有几个线程

很简略,首先应用 ps 命令获取过程的 pid 而后应用 top 命令监控 top -p {pid}, 而后进去后,按 shift+h,就能看到了 实战 先用 ps 命令获取对应过程的 pid ╰─➤ ps jfax | grep glance2805339 2811314 2811314 2805339 pts/4 2811314 Sl+ 1001 0:55 | | \_ /usr/bin/python3 /home/pon/.local/bin/glances2811492 2813858 2813857 2811492 pts/0 2813857 S+ 1001 0:00 | \_ grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox glance该 top 命令表演了 ─➤ top -p 2811314进来只能看到一个 item 这个时候,按下 shift+h 就能看到所有线程了

February 3, 2023 · 1 min · jiezi

关于linux:通过11个案例掌握-Linux-Split-命令

split 命令在 Linux 和 UNIX 零碎中用于将文件拆分或分解成小块。当咱们应用 split 命令宰割一个大文件时,输入文件的默认大小是 1000 行,默认前缀为 x。 在本文中,咱们将分享11个有用的 split 命令示例。除此之外,咱们还将探讨如何将宰割的文件合并或从新组装成单个文件。 split 命令语法如下: # split {options} {file_name} {prefix}split 命令的一些重要选项如下所示: (1) 将文件拆分为多个局部将文件拆分为多个局部,示例如下: [root@linuxtechi ~]# split tuxlap.txt[root@linuxtechi ~]# lltotal 32-rw-------. 1 root root 980 Aug 12 00:11 anaconda-ks.cfg-rw-r--r--. 1 root root 9607 Nov 11 03:22 tuxlap.txt-rw-r--r--. 1 root root 8744 Nov 11 03:23 xaa-rw-r--r--. 1 root root 863 Nov 11 03:23 xab[root@linuxtechi ~]#正如咱们所看到的,tuxlab.txt 被分成了 xaa 和 xab两个局部。 ...

February 2, 2023 · 4 min · jiezi

关于linux:OpenMP-线程同步-Construct-实现原理以及源码分析下

OpenMP 线程同步 Construct 实现原理以及源码剖析(下)前言在下面文章当中咱们次要剖析了 flush, critical, master 这三个 construct 的实现原理。在本篇文章当中咱们将次要剖析另外两个 construct : barrier 和 single 。 Barrier Construct编译器角度剖析在本大节当中咱们次要介绍 #pragma omp barrier 的应用,事实上这个 construct 在编译器的解决上非常简单,只是将这条编译领导语句变成了一个函数调用。 void GOMP_barrier (void)每一条 #pragma omp barrier 都会变成调用函数 GOMP_barrier 。咱们来看一个示例程序: #include <stdio.h>#include <omp.h>int main(){#pragma omp parallel num_threads(4) default(none) { printf("tid = %d start\n", omp_get_thread_num());#pragma omp barrier printf("tid = %d end\n", omp_get_thread_num()); } return 0;}在后面的文章当中咱们曾经提到了编译器会将一个 parallel construct 编译成一个函数,下面的 parallel construct 被编译的之后的后果如下所示,能够看到的确编译成了调用函数 GOMP_barrier 。 000000000040118a <main._omp_fn.0>: 40118a: 55 push %rbp 40118b: 48 89 e5 mov %rsp,%rbp 40118e: 48 83 ec 10 sub $0x10,%rsp 401192: 48 89 7d f8 mov %rdi,-0x8(%rbp) 401196: e8 a5 fe ff ff callq 401040 <omp_get_thread_num@plt> 40119b: 89 c6 mov %eax,%esi 40119d: bf 10 20 40 00 mov $0x402010,%edi 4011a2: b8 00 00 00 00 mov $0x0,%eax 4011a7: e8 a4 fe ff ff callq 401050 <printf@plt> 4011ac: e8 7f fe ff ff callq 401030 <GOMP_barrier@plt> 4011b1: e8 8a fe ff ff callq 401040 <omp_get_thread_num@plt> 4011b6: 89 c6 mov %eax,%esi 4011b8: bf 20 20 40 00 mov $0x402020,%edi 4011bd: b8 00 00 00 00 mov $0x0,%eax 4011c2: e8 89 fe ff ff callq 401050 <printf@plt> 4011c7: c9 leaveq 4011c8: c3 retq 4011c9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)源码剖析voidGOMP_barrier (void){ // 失去以后线程的相干数据 struct gomp_thread *thr = gomp_thread (); // 失去以后线程的线程组 struct gomp_team *team = thr->ts.team; /* It is legal to have orphaned barriers. */ if (team == NULL) return; // 应用线程组外部的 barrier 只有所有的线程都达到这个同步点之后才可能持续往后执行 // 否则就须要进入内核挂起 gomp_team_barrier_wait (&team->barrier);}下面的代码就是应用以后线程线程组外部的 barrier ,让线程组当中的所有线程都达到同步点之后才持续往后执行,如果你应用过 pthread 中的线程同步工具路障 pthread_barrier_t 的话就很容易了解了。 ...

January 31, 2023 · 9 min · jiezi

关于linux:linux-用户组相关操作

查看所有用户/组cat /etc/passwdcat /etc/group增加用户useradd 选项 用户名 -d:自定义用户的家目录,即指定用户登录默认的家目录-e:指定帐号的有效期限-g:指定用户所属的主组-G:指定用户所属的附加群组-m:主动建设用户的登入目录,零碎默认会创立一个和用户名一样的家目录(默认选项)-M:不创立用户家目录-s:指定用户登入后所应用的shell是哪种shell-u:指定用户ID号,默认零碎会主动调配一个ID给用户-r:指定该用户为零碎账户# 简略的增加用户,会主动创立home目录useradd sqrtcat# 自定义 home 目录useradd -d /home/sqrtcat_home sqrtcat# 指定用户组 wheel 为 sudoer 用户组useradd -m -g wheel sqrtcat# 禁止所有登录的账户useradd -M -s /bin/false nginx# 禁止ssh登录但能够ftp/sftp的账户useradd -M -s /sbin/nologin ftp_user删除用户# 删除用户 但保留了home目录等相干信息userdel sqrtcat# 此命令执行后对应这些文件里与被删除用户相干信息也一并删除# /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/home、/var/spool/mailuserdel -r sqrtcat设置/更新用户明码# 更改以后用户明码passwd# 更改指定用户明码passwd sqrtcat更改用户属性usermod 选项 用户名 # 更改用户所属主组usermod -g wheel sqrtcat# 更改用户的附加组(留神会笼罩现有的附加组)usermod -G wheel sqrtcat# 为用户追加附加组(会在现有的附加组上持续追加)usermod -aG wheel sqrtcat为用户减少sudo权限root 查看 /etc/sudoers ## Allow root to run any commands anywhereroot ALL=(ALL) ALL## Allows members of the 'sys' group to run networking, software,## service management apps and more.# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS# 这里表明 wheel group 中的用户 能够应用明码获取 root 权限## Allows people in group wheel to run all commands%wheel ALL=(ALL) ALL # 这里表明 wheel group 中的用户 不应用明码就能够获取 root 权限## Same thing without a password# %wheel ALL=(ALL) NOPASSWD: ALL所以想要用户流动 sudo 权限,咱们只需将其退出对用的用户组即可 ...

January 30, 2023 · 2 min · jiezi

关于linux:linux下安装elasticsearch

一:装置JDK1:java装置地址最新版:https://www.oracle.com/java/t...历史版:https://www.oracle.com/java/t... 2:装置java(1):装置wgetyum install wget留神:装置wget提醒如下解决方案 解决方案: cd /etc/yum.repos.d/sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*yum makecacheyum update -y而后重新安装即可 (2):装置javawget https://download.oracle.com/java/19/latest/jdk-19_linux-x64_bin.rpmrpm -ivh jdk-19_linux-x64_bin.rpm(3):批改环境变量vim /etc/profile在文件中增加如下内容 export JAVA_HOME=/usr/local/jdk/jdk-19export CLASSPATH=.:$JAVA_HOME/lib/export PATH=$PATH:$JAVA_HOME/bin配置环境变量失效 source /etc/profile(4):判断java是否装置胜利java -version 二:装置elasticsearch1:增加elasticsearch用户useradd elasticsearchpasswd elasticsearch留神执行passwd时提醒未找到此命令 解决方案: yum search passwd yum install passwd.x86_64而后从新执行passwd命令即可 2:elasticsearch装置地址https://www.elastic.co/cn/dow... 3:elasticsearch装置wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.1-linux-x86_64.tar.gztar -zxvf elasticsearch-8.6.1-linux-x86_64.tar.gzmv elasticsearch-8.6.1 /usr/local/elasticsearchchown -R elasticsearch:elasticsearch /usr/local/elasticsearch4:开启9200端口或敞开防火墙#启动Firewallsystemctl start firewalld#设置开机自启动systemctl enable firewalld.service # 防火墙凋谢9200端口firewall-cmd --zone=public --add-port=9200/tcp --permanent# 刷新防火墙配置firewall-cmd --reload#敞开防火墙systemctl disable firewalld5:配置elasticsearch(1):批改elasticsearch默认调配vm空间vim /usr/local/elasticsearch/config/jvm.options默认为4g,依据理论状况批改vm空间大小将 批改成 2:配置elasticsearchvim /usr/local/elasticsearch/config/elasticsearch.yml罕用配置 path.data: /path/to/data #数据存储地位path.logs: /path/to/logs #日志存储地位cluster.name: my-application #集群名称(用于形容集群目标的名称)node.name: node-1 #节点名称network.host: 0.0.0.0 #绑定节点IP和端口(0.0.0.0 是不绑定)http.port:9200 #端口bootstrap.mlockall: true #这个参数的目标是当你无奈关闭系统的swap的时候,倡议把这个参数设为true。避免在内存不够用的时候,elasticsearch的内存被替换至替换区,导致性能骤降6:启动elasticsearchsu elasticsearchcd /usr/local/elasticsearch./bin/elasticsearch //启动 (./bin/elasticsearch –d//后盾启动)应用elasticsearch用户启动

January 30, 2023 · 1 min · jiezi

关于linux:如何使用-iostat-命令监控-linux-系统性能

iostat 命令用于监督 CPU 利用率和所有磁盘和文件系统的 I/O 统计息,nfsiostat 命令用于监督网络文件系统(NFS)的 I/O 统计信息。 Iostat 命令通过观察工夫,传输速率来监督 I/O 设施。此命令特地有用,能够用来生成报告,咱们能够用来优化零碎的输出和输入负载。 Iostat 命令通常会生成两个报告: CPU 利用率报告所有磁盘 I/O 统计报告为了生成报告,iostat 命令会读取以下系统文件: /proc/diskstats - 获取磁盘统计信息/proc/stat - 获取零碎统计/sys - 获取块设施统计信息/proc/devices - 获取永恒设施名称/proc/self/mountstats - 获取网络文件系统/proc/uptime - 获取零碎失常运行工夫信息在本教程中,咱们将学习如何在 Linux 零碎上装置 iostat 实用程序,而后咱们将探讨如何应用 iostat 命令生成报告 装置 ostat 程序ostat 是 sysstat 包的一部分,应用上面的命令装置 CentOS/RedHat [root@linuxtechi ~]# yum install sysstat -yUbuntu/Debian $ sudo apt-get install sysstat -yFedora [root@linuxtechi ~]# dnf install sysstat -y当初让咱们看一些例子来更好地了解 iostat 命令。 (1) 获取残缺的统计信息 (CPU & Devices)要取得零碎的残缺统计信息,关上终端并执行以下命令 ...

January 30, 2023 · 2 min · jiezi

关于linux:CentOS-8-中dnf管理器如何仅下载不安装软件

在某些状况下,咱们心愿从命令行下载特定或一组 RPM 包而不装置它。尽管咱们能够应用 wget 命令下载,但 wget 不会下载安装包的依赖项。在 CentOS 8 中DNF(或 yum)是一个命令行包管理工具。应用 DNF咱们能够装置、更新和删除 rpm 包。除此之外,它还能够用于下载软件包以及依赖项,而无需装置它们。下载指定的RPM安装包上面应用download子命令在当前目录下载指定安装包:[root@localhost package]# dnf download cifs-utils该命令在当前目录下载cifs-utils 包。它不会下载依赖项。上面查看一下是否下载实现:下载 RPM 和依赖项在 dnf 中应用--downloadonly选项,能够下载 rpm 包及其依赖项。咱们还能够应用--downloaddir选项指定下载的地位。上面在/root/package目录下载ansible相干的安装包:[root@localhost ~]# mkdir /root/package[root@localhost ~]# dnf install -y ansible --downloadonly --downloaddir=/root/package 能够验证一下,是否曾经下载了ansible和相干的依赖项:当初咱们就能够将这些安装包压缩起来,传入到没有连贯网络的服务器中装置。[root@localhost ~]# tar -zcvf ansible-installer.tar.gz /root/package 下载一组安装包假如咱们要下载Development Tools组下的所有软件包,能够应用上面命令来装置:[root@localhost ~]# dnf groupinstall -y "Development Tools" --downloadonly --downloaddir=/root/package 进入/root/package目录,验证一下是否下载相干软件包总结每当咱们应用 dnf 命令下载安装包时,如果没有应用 --downloadidr 标记,那么包将被下载到/var/cache/dnf/baseos-xxxx/packages,/var/cache/dnf/appstream-xxxx/packages,/var/cache/dnf/epel-xxxx/packages目录中。

January 29, 2023 · 1 min · jiezi

关于linux:麒麟操作系统kylinos从入门到精通故障排查第四十四篇-微信登录二维码无法刷新

OS平台:河汉麒麟桌面操作系统(飞腾版)V10 SP1操作系统镜像:Kylin-Desktop-V10-SP1-General-Release-2203-ARM64 一、问题形容登录微信时,微信二维码始终在转圈无奈刷新 起因剖析:1、网络环境异常,导致二维码无奈刷新;2、kylin系统安全设置导致微信软件应用异样;3、微信安装包起因,导致二维码无奈刷新应用。 二、解决方案1、网络环境异常:关上浏览器,输出任意网址,查看电脑网络是否失常;2、kylin系统安全设置:右键计算机属性-平安核心;将网络安全、利用平安、设施平安全副抉择敞开,具体如下图所示; 3、微信安装包起因:a、右键桌面关上终端,输出sudo apt update ,输出明码(开机明码且不显示)。 b、右键桌面关上终端输出sudo apt install --reinstall weixin;重启微信察看是否失常。 c、别离执行命令 sudo rm -rf ~/.cache/weixin sudo rm -rf ~/.config/weixin 重启微信察看是否失常应用。

January 28, 2023 · 1 min · jiezi

关于linux:设置服务为systemd系统服务

Linux之systemd服务配置及主动重启 在linux上开发时,往往须要将本人的程序做成服务,并且实现服务开机主动重启,以及服务解体后主动重启性能,本文就对该性能的实现做简略介绍,实现办法很简略,应用linux零碎的systemd即可实现配置文件编写vim /usr/lib/systemd/system/my.service [Unit]Description=ROT13 demo serviceAfter=network.targetStartLimitIntervalSec=0 [Service]Type=simpleRestart=alwaysRestartSec=1User=ltpcExecStart=/usr/bin/env php /path/to/server.php [Install]WantedBy=multi-user.target有几点须要留神,为了使服务可能主动有限次重启,须要减少以下几个配置 StartLimitIntervalSec=0 Restart=always RestartSec=1设置开机启动systemctl enable rot13示例 [Unit]Description=Stop kodi and start NPC 形容局部After=kodi.target 在kode.target后启动 [Service]Type=simple 表明只启动ExecStart为主过程ExecStart=/usr/bin/bash /storage/NPC_main.sh start 须要启动的命令、程序、脚本ExecReload=/usr/bin/bash /storage/NPC_main.sh restart 重新启动的命令、程序、脚本ExecStop=/usr/bin/kill -TERM $MAINPID 接管到 stop 命令时执行 Restart=always 遇到意外敞开、超时都重启RestartSec=2 重启距离,默认是100ms,只给数字则默认为秒StartLimitInterval=10 启动距离PrivateTmp=true 这个服务过程应用公有的tmp缓存 [Install]WantedBy=multi-user.target 被这个.target须要,意思是它启动本Unit也启动, 上面有具体介绍扩大浏览 Linux之systemd服务配置及主动重启Linux-增加systemd自启动服务 + 内网穿透模块NPC自启动(x96-coreelec固件批改)

January 28, 2023 · 1 min · jiezi

关于linux:LinuxLinux命令快速学习神器tldrcheat介绍和使用

引言本文介绍tldr和Cheat等实用工具的装置和应用,这些工具尽管自身不能代替man、info等命令,然而在很多时候想要疾速学习和把握命令然而遗记常见用法十分有帮忙。 集体认识:对于非运维人员几乎是神器。tldr:全称 too long, Don’t read,翻译成中文就是太长不想浏览,比–help或者man这些传统手册更便捷、更便于应用。cheat:舞弊。 这两个命令有什么用?这里简略举个例子就晓得了: ubuntu@VM-8-8-ubuntu:~$ sudo tldr ls ls List directory contents. More information: https://www.gnu.org/software/coreutils/ls. - List files one per line: ls -1 - List all files, including hidden files: ls -a - List all files, with trailing / added to directory names: ls -F - Long format list (permissions, ownership, size, and modification date) of all files: ls -la - Long format list with size displayed using human-readable units (KiB, MiB, GiB): ls -lh - Long format list sorted by size (descending): ls -lS - Long format list of all files, sorted by modification date (oldest first): ls -ltr - Only list directories: ls -d */内容概览Ubuntu和CenterOs介绍和装置tldr命令。 ...

January 28, 2023 · 7 min · jiezi

关于linux:通过16个实例掌握-linux-cp-命令

作为 Linux 用户,复制文件和目录是最常见的日常操作工作之一。cp 命令用于通过命令即将文件和目录从一个本地复制到另一个本地。cp 命令在简直所有 Unix 和 Linux 类操作系统中都可用。 在本文中,咱们将为 linux 初学者演示 16 个有用的 cp 命令示例。 上面是 cp 命令的根本语法: 将一个文件复制到另一个文件# cp {options} source_file target_file复制文件到另一个目录或文件夹# cp {options} source_file target_directory将目录复制到目录# cp {options} source_directory target_directory1) 将文件复制到目标目录假如咱们复制 /etc/passwd 文件到 /mnt/backup 目录 root@linuxtechi:~# cp /etc/passwd /mnt/backup/root@linuxtechi:~#应用以下命令验证是否已复制 root@linuxtechi:~# ls -l /mnt/backup/total 4-rw-r--r-- 1 root root 2410 Feb 3 17:10 passwdroot@linuxtechi:~#2) 同时复制多个文件假如咱们要复制多个文件 (/etc/passwd,/etc/group,/etc/shadow) 到目标目录 (/mnt/backup) root@linuxtechi:~# cp /etc/passwd /etc/group /etc/shadow /mnt/backup/root@linuxtechi:~#3) 交互地复制文件 (-i)应用 -i 选项,将文件交互地从一个中央复制到另一个中央,交互选项只在目标目录曾经有雷同的文件时才无效,示例如下所示 root@linuxtechi:~# cp -i /etc/passwd /mnt/backup/cp: overwrite '/mnt/backup/passwd'? yroot@linuxtechi:~#在下面的命令中,必须手动输出 y 以容许复制操作 ...

January 28, 2023 · 3 min · jiezi

关于linux:OpenMP-线程同步-Construct-实现原理以及源码分析上

OpenMP 线程同步 Construct 实现原理以及源码剖析(上)前言在本篇文章当中次要给大家介绍在 OpenMP 当中应用的一些同步的 construct 的实现原理,如 master, single, critical 等等!并且会联合对应的汇编程序进行认真的剖析。(本篇文章的汇编程序剖析基于 x86_86 平台) Flush Construct首先先理解一下 flush construct 的语法: #pragma omp flush(变量列表)这个结构比较简单,其实就是减少一个内存屏障,保障多线程环境上面的数据的可见性,简略来说一个线程对某个数据进行批改之后,批改之后的后果对其余线程来说是可见的。 #include <stdio.h>#include <omp.h>int main(){ int data = 100;#pragma omp parallel num_threads(4) default(none) shared(data) {#pragma omp flush(data) } return 0;}下面是一个非常简单的 OpenMP 的程序,依据后面的文章 OpenMp Parallel Construct 实现原理与源码剖析 咱们能够晓得会讲并行域编译成一个函数,咱们当初来看一下这个编译后的汇编程序是怎么样的! gcc-4 编译之后的后果 00000000004005f6 <main._omp_fn.0>: 4005f6: 55 push %rbp 4005f7: 48 89 e5 mov %rsp,%rbp 4005fa: 48 89 7d f8 mov %rdi,-0x8(%rbp) 4005fe: 0f ae f0 mfence 400601: 5d pop %rbp 400602: c3 retq 400603: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) 40060a: 00 00 00 40060d: 0f 1f 00 nopl (%rax)从下面的后果咱们能够看到最终的一条指令是 mfence 这是一条 full 的内存屏障,用于保障数据的可见性,次要是 cache line 中数据的可见性。 ...

January 28, 2023 · 7 min · jiezi

关于linux:通过18个实例掌握-lsof-命令

在本指南中,咱们将通过18个不同的理论示例学习 lsof 命令。 lsof 命令用于列出 Linux 等操作系统中关上的文件。名称 lsof 自身就是从这个性能派生进去的。 在哪里应用 lsof ?Lsof 命令次要用于检索各个过程关上的文件信息。零碎中关上的文件能够是磁盘文件、网络套接字、命名管道和设施。lsof 命令的这一独特个性,使人们可能更好地调试和了解 Linux 操作系统。 如何装置 lsof ?当咱们最小装置 RHEL / CentOS / AlmaLinux / Ubuntu / OpenSUSE 的时,lsof 不是默认装置的一部分,因而应用以下命令来装置 lsof 命令。 RHEL / CentOS / AlmaLinux / Fedora 零碎下装置 $ sudo yum install lsof -yor$ sudo dnf install lsof -yDebian 系列 (Ubuntu / Linux Mint) 零碎下装置 $ sudo apt install lsof -yOpenSUSE 零碎下装置 $ sudo zypper install lsof1) 列出所有关上的文件不带任何选项地运行 lsof 命令将列出零碎中所有流动过程关上的文件。 ...

January 27, 2023 · 4 min · jiezi

关于linux:10个关于-Linux-Sudo-命令的小贴士

sudo (superuser do) 它容许受权用户作为另一个用户执行命令。另一个用户能够是普通用户或超级用户,大多数时候咱们应用它来执行具备更高权限的命令。 sudo 命令与安全策略联合应用,默认安全策略是 sudoers,并且能够通过 /etc/sudoers 文件配置。它的平安政策是高度扩大的,能够制订和散发本人的策略作为插件。 和 su 命令有何不同?在 GNU / Linux 中,能够应用 su 或者 sudo 命令运行晋升特权的命令 su (switch user),应用 su 命令,咱们能够切换到 root 用户执行命令,然而这种办法有一些毛病。 咱们须要与另一个用户共享 root 明码因为根用户是超级用户,咱们无奈提供受控拜访咱们无奈审计用户正在做什么sudo 以独特的形式解决了这些问题 不须要泄露 root 用户的明码,普通用户应用本人的明码执行更高权限的命令。能够管制 sudo 用户的拜访权限,这意味着咱们能够限度用户只执行某些命令。记录了 sudo 用户的所有流动。容许 sudo 拜访让咱们将普通用户增加为 sudo 用户。在我的例子中,用户名是 linuxtechi 1) 编辑 /etc/sudoers 文件 $ sudo visudo2) 增加以下行以容许 linuxtechi 用户拜访 sudo linuxtechi ALL=(ALL) ALL在下面的命令中: linuxtechi 示意用户名第一个 ALL 示意运行从任何机器 / 终端拜访 sudo第二个 (ALL) 示意 sudo 命令容许以任何用户执行第三个 ALL 示意 sudo 命令能够用 root 身份执行应用晋升的权限执行命令要以更高的权限执行命令,只需在命令前加上 sudo 字,如下所示 ...

January 25, 2023 · 2 min · jiezi

关于linux:Linux-下读取硬件信息-dmidecode-命令介绍

dmidecode 是一个工具或命令,以人类可读的格局检索系统硬件的有用信息。dmidecode 可用于所有相似 Linux 的零碎 (RHEL, CentOS, Debian 和 SUSE)。dmidecode 代表 DMI (Desktop Management Interface) 它从 DMI 表中读取数据,并以人类可读的格局展现给咱们。DMI 表保留了零碎硬件的详细信息,如 BIOS,序列号,RAM 和 CPU 详细信息等,除此之外,dmidecode 还能够检索对于零碎反对的最大配置的详细信息。 在本文中,咱们将介绍 12 个Linux 零碎下 dmidecode 相干示例。 1) dmidecode 命令输入When we run the dmidecode command then it displays the output on thescreen, in the output we have the records, each record has 4 differentvalues. 当咱们运行 dmidecode 命令时,会在屏幕上输入记录,每个记录有 4 个不同的值。 Handle – 惟一标识符号Type – 它讲述的是硬件组成,在上面的示例中,DMI 类型 38 指的是 IPMI 设施Size – 记录大小Decoded value – 对于记录类型的信息,在上面的示例中,IPMI 设施的解码值是接口类型,规格版本,基址和寄存器间距让咱们运行 dmidecode 命令 ...

January 24, 2023 · 7 min · jiezi

关于linux:2022年流行的10大Linux服务器发行版

Linux 零碎在服务器畛域十分的风行,起因有很多。首先,它是开源和收费的 (除了一些商业发行版,如 RHEL 和 SUSE Linux Enterprise Server) 。开源意味着开发者能够查看它的源代码,批改它,并依据许可条款从新公布它。此外,Linux 通常被认为比 Windows 更稳固、更通用、更平安。此外,它能够轻松地部署在各种平台上,如裸金属、虚构和云环境。 在本文中,咱们重点介绍了用于服务器的前10个 Linux 发行版。 1) Red Hat Enterprise Linux (RHEL)Red Hat Enterprise Linux, 是专门为企业环境开发的商业 Linux 发行版。它是一个牢靠和平安的操作系统,提供加强的可用性和无缝部署,使其成为服务器环境的现实抉择。 RHEL 反对裸金属、虚构和云环境中的各种工作负载。事实上,它是世界领先的开源解决方案提供商,提供有数的产品,包含 Red Hat OpenShift、Ansible 自动化平台、Open 混合云、JBoss 企业应用平台和 SAP 等等。 2) Ubuntu ServerUbuntu 由 Canonical 开发和保护,是最风行和宽泛应用的 Linux 发行版之一。它是一个基于 debian 的 Linux 发行版,相对收费和开源,以其桌面版而闻名,它是直观的,用户敌对的,被认为是初学者的现实抉择。Ubuntu 有 3 个版本方向:Desktop, Ubuntu Server, Core。 尽管桌面版在寰球范畴内宽泛应用,但服务器版也为服务器环境提供了松软的平台。首先,它能够部署在任何环境中,无论是物理环境、虚拟环境还是具备宽泛向外扩大性能的云环境。这意味着您能够随时增加资源以满足一直变动的需要。 因为服务器版本齐全精简,没有任何图形用户界面,因而绝对较轻,资源开销较低。这意味着低 CPU 和内存使用率,大大提高了性能和稳定性。 除了装置在物理数据中心和虚构服务器上,Ubuntu 服务器还能够在 AWS 和 Azure 等公共云上应用。依据 Canonical 的说法,55% 的 Openstack Cloud 运行在 Ubuntu 上,您还能够付费领有本人的托管 Openstack Cloud。 ...

January 23, 2023 · 2 min · jiezi

关于linux:AWS-Lightsail-开启-Root-登陆权限

将上面代码中的第一句中的 Passwd 改为本人将要设置的明码,否则默认 root 明码为 Passwd 。 #!/bin/bashecho root:Passwd |sudo chpasswd rootsudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config;sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config;sudo reboot

January 22, 2023 · 1 min · jiezi

关于linux:9个超有用的-Linux-Touch-命令实例讲解

touch 命令用于创立空文件,也用于更改 Linux 零碎中现有文件的工夫戳。这里更改工夫戳意味着更新文件和目录的拜访和批改工夫。 命令语法 touch {options} {file} 语法选项 1) 创立一个空文件touch 命令创立一个空文件,输出 touch 后跟文件名,示例如下 [root@linuxtechi ~]# touch devops.txt[root@linuxtechi ~]# ls -l devops.txt-rw-r--r--. 1 root root 0 Mar 29 22:39 devops.txt[root@linuxtechi ~]#2) 批量创立空文件在某些状况下,咱们必须为一些测试创立大量的空文件,示例如下 [root@linuxtechi ~]# touch sysadm-{1..20}.txt在下面的例子中,咱们创立了 20 个空文件,名称为 sysadm-1.txt 到 sysadm-20.txt,您能够依据须要更改名称和编号。 3) 更改 /更新文件和目录的拜访工夫应用 -a 选项,能够更改 /更新文件和目录的拜访工夫 批改文件的拜访工夫 [root@linuxtechi ~]# touch -a devops.txt[root@linuxtechi ~]#应用 stat 命令验证文件的拜访工夫是否曾经更新 [root@linuxtechi ~]# stat devops.txt File: ‘devops.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fd00h/64768d Inode: 67324178 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Context: unconfined_u:object_r:admin_home_t:s0Access: 2018-03-29 23:03:10.902000000 -0400Modify: 2018-03-29 22:39:29.365000000 -0400Change: 2018-03-29 23:03:10.902000000 -0400 Birth: -[root@linuxtechi ~]#批改目录的拜访工夫 ...

January 21, 2023 · 3 min · jiezi

关于linux:Linux-中使用-SCP-命令安全复制文件

SCP 是 linux 发行版中的命令行工具,用于通过网络安全地跨零碎复制文件和目录。SCP 代表平安复制,因为它应用 ssh 协定复制文件。 拷贝时,scp 命令建设 ssh 连贯到近程零碎。换句话说,咱们能够说 scp 在后端应用雷同的 SSH 平安机制,它须要明码或密钥进行身份验证。 SCP 命令语法从本地零碎复制到近程主机 scp <options> <files_or_directories> user@target_host:/<folder>从近程主机复制到本地零碎 scp <options> user@target_host:/files <folder_local_system>上面列出了 scp 命令中应用最宽泛的一些选项 -C 启用压缩-i 身份文件或私钥-l 复制时限度带宽-P 指标主机 SSH 端口号-p 在复制时保留文件的权限、模式和拜访工夫-q 禁止显示 SSH 的正告音讯-r 递归复制文件和目录-v 具体输入1) 从本地复制文件到近程假如咱们要将 jdk rpm 包从本地 Linux 零碎复制到近程零碎 (172.20.10.8) /opt 目录下 $ scp jdk-linux-x64_bin.rpm root@172.20.10.8:/optroot@172.20.10.8's password:jdk-linux-x64_bin.rpm 100% 10MB 27.1MB/s 00:00$2) 从近程复制文件到本地Suppose we want to copy a file from remote system to our local system under the /tmp folder, execute the following, ...

January 19, 2023 · 2 min · jiezi

关于linux:TIL-二进制是如何被执行的

行文会比拟乱,因为 TIL 次要目标是组织本人的想法而非分享。如果凑巧能帮到他人就更好了,有感兴趣的部份感觉没讲清楚的,能够留言,我能够尝试进一步阐明。 要执行一个二进制,同时须要 CPU 和操作系统的配合。 CPU CPU 能够解读针对某种指令集的二进制指令(比方x86、amd64)有些 CPU 反对扩大指令集,即不蕴含在指令集标准中的额定的指令。在编译二进制时如果启用了这些扩大,就能够在反对扩大指令集的 CPU 中用上这些个性。能够在运行时查看 CPU 是否反对某种扩大,所以编译器通常会提供一条不反对的状况下用于降级的分支。OS 一个二进制可能会用到一些别的库,比方用了 windows api 的二进制就不能运行在 linux 上。Unix 兼容零碎中,要害的零碎 api 被标准化为 POSIX 规范。如果一个二进制只用了 POSIX api,它就能够在任何 Unix 零碎中运行,比方 Mac OS X 或 Solaris 等二进制格局 除此之外,二进制必须抉择恪守某种 OS 要求的二进制格局,能力被 OS 加载、执行。如 windows 中宽泛应用的 Portable Executable format(exe 文件),Linux 中宽泛应用的ELF format(Executable and Linkable Format)最终,如果两个零碎: 有同样的 System API、零碎库同样的指令集应用同样的二进制格局为一个零碎编写的二进制就能够在另一个零碎中运行。 x86 指令集的二进制能够运行在 AMD64 指令集中 二进制能够指定 CPU 用什么模式运行本人有一些二进制格局容许把多个程序放在同一个文件中,每个程序针对一种不同的指令集 苹果从 PowerPC 架构转移到 x86 架构时就用上了 “fat binaries”有一些程序会编译成两头模式,而非最终在 CPU 上执行的二进制 ...

January 17, 2023 · 2 min · jiezi

关于linux:eBPF-SIG年度动态-eBPF和Wasm深度融合参与7场活动及2023展望-龙蜥-SIG

eBPF技术摸索SIG致力于深入研究剖析BPF前沿技术和产学停顿,加强 Networking、Tracing、Observability、Security 四个纬度技术深度和落地成果,打造国内最有影响力的 BPF 我的项目和社区,率领大家开启 BPF 的神奇之旅。 01 SIG 成立和我的项目成绩2022 年 8 月,来自阿里、腾讯、深服气、谐云等 eBPF 技术专家和高校教师,历经几个月的缓和探讨和辛苦筹备,在龙蜥社区正式成立了由陈莉君传授领衔的首个产学研联合 eBPF 技术摸索 SIG。 eBPF 技术摸索 SIG 的使命是创立一个适宜业界和学术界深入研究 eBPF 前沿技术、理论落地演进成果的良好生态,SIG 的指标是引领 eBPF 技术浪潮,推动 eBPF 技术在国内的利用和倒退,做国内领先者社区,国内上协同和对标 eBPF 出名社区。 SIG 也带来了业界和学界两大开源我的项目 Coolbpf 和 LMP。Coolbpf 着重于晋升开发编译效率和齐备的根底性能框架,Coolbpf 提供的近程编译思维和低版本内核反对能力,在业界造成肯定的探讨和反应,收到很多合作意向和好的倡议;LMP 则是孵化于高校,通过构建机器学习模型等计划,从可视化平台的角度来进一步深刻调试内核。随后,又引入了一些优良的开源我的项目,如 Surftrace 和 Eunomia。 目前 eBPF 社区的我的项目次要有:Coolbpf、Surftrace、Eunomia、LMP。 其中,Coolbpf 在以下方向产出了如下成绩: 本地编译服务,根底库封装近程编译服务低版本内核实现 eBPF 性能全网最新内核版本爬虫和 BTF 的主动生成公布各内核版本功能测试自动化Python、Rust、Go、C 等高级语言反对Perf 性能加强eBPF 的工具示例Coolbpf 与 eunomia 的双剑合璧......02 影响力构建龙蜥社区 eBPF 技术摸索 SIG 的成立,依靠于龙蜥社区弱小的经营能力,逐步在国内的各大峰会和论坛展露头角,社区 Maintainer 和成员也一直在各个大会上分享和布道,让 eBPF 技术走进高校、影响每个企业和集体,推动了 eBPF 技术无门槛、高效率的利用遍及起来。 ...

January 17, 2023 · 2 min · jiezi

关于linux:cephadm-安装部署-ceph-集群

cephadm 装置部署 ceph 集群介绍手册:https://access.redhat.com/doc... http://docs.ceph.org.cn/ ceph能够实现的存储形式:块存储:提供像一般硬盘一样的存储,为使用者提供“硬盘” 文件系统存储:相似于NFS的共享形式,为使用者提供共享文件夹 对象存储:像百度云盘一样,须要应用独自的客户端 ceph还是一个分布式的存储系统,非常灵活。如果须要扩容,只有向ceph集中减少服务器即可。ceph存储数据时采纳多正本的形式进行存储,生产环境下,一个文件至多要存3份。ceph默认也是三正本存储。 ceph的形成Ceph OSD 守护过程: Ceph OSD 用于存储数据。此外,Ceph OSD 利用 Ceph 节点的 CPU、内存和网络来执行数据复制、纠删代码、从新均衡、复原、监控和报告性能。存储节点有几块硬盘用于存储,该节点就会有几个osd过程。 Ceph Mon监控器: Ceph Mon保护 Ceph 存储集群映射的主正本和 Ceph 存储群集的以后状态。监控器须要高度一致性,确保对Ceph 存储集群状态达成统一。保护着展现集群状态的各种图表,包含监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据。 RGW:对象存储网关。次要为拜访ceph的软件提供API接口。 装置配置IP地址# 配置IP地址ssh root@192.168.1.154 "nmcli con mod ens18 ipv4.addresses 192.168.1.25/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"ssh root@192.168.1.179 "nmcli con mod ens18 ipv4.addresses 192.168.1.26/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"ssh root@192.168.1.181 "nmcli con mod ens18 ipv4.addresses 192.168.1.27/24; nmcli con mod ens18 ipv4.gateway 192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"配置根底环境# 配置主机名hostnamectl set-hostname ceph-1hostnamectl set-hostname ceph-2hostnamectl set-hostname ceph-3# 更新到最新yum update -y# 敞开selinuxsetenforce 0sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config# 敞开防火墙systemctl disable --now firewalld# 配置免密ssh-keygen -f /root/.ssh/id_rsa -P ''ssh-copy-id -o StrictHostKeyChecking=no 192.168.1.25ssh-copy-id -o StrictHostKeyChecking=no 192.168.1.26ssh-copy-id -o StrictHostKeyChecking=no 192.168.1.27# 查看磁盘[root@ceph-1 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 100G 0 disk ├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 99G 0 part ├─cs-root 253:0 0 61.2G 0 lvm / ├─cs-swap 253:1 0 7.9G 0 lvm [SWAP] └─cs-home 253:2 0 29.9G 0 lvm /homesdb 8:16 0 100G 0 disk [root@ceph-1 ~]# # 配置hostscat > /etc/hosts <<EOF127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.25 ceph-1192.168.1.26 ceph-2192.168.1.27 ceph-3EOF安装时间同步和docker# 装置须要的包yum install epel* -y yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw# 服务端yum install chrony -ycat > /etc/chrony.conf << EOF pool ntp.aliyun.com iburstdriftfile /var/lib/chrony/driftmakestep 1.0 3rtcsyncallow 192.168.1.0/24local stratum 10keyfile /etc/chrony.keysleapsectz right/UTClogdir /var/log/chronyEOFsystemctl restart chronyd ; systemctl enable chronyd# 客户端yum install chrony -ycat > /etc/chrony.conf << EOF pool 192.168.1.25 iburstdriftfile /var/lib/chrony/driftmakestep 1.0 3rtcsynckeyfile /etc/chrony.keysleapsectz right/UTClogdir /var/log/chronyEOFsystemctl restart chronyd ; systemctl enable chronyd#应用客户端进行验证chronyc sources -v# 装置dockercurl -sSL https://get.daocloud.io/docker | sh装置集群# 装置集群yum install -y python3# 装置 cephadm 工具curl --silent --remote-name --location https://mirrors.chenby.cn/https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm# 创立源信息./cephadm add-repo --release 17.2.5sed -i 's#download.ceph.com#mirrors.ustc.edu.cn/ceph#' /etc/yum.repos.d/ceph.repo ./cephadm install# 疏导新的集群[root@ceph-1 ~]# cephadm bootstrap --mon-ip 192.168.1.25Verifying podman|docker is present...Verifying lvm2 is present...Verifying time synchronization is in place...Unit chronyd.service is enabled and runningRepeating the final host check...docker (/usr/bin/docker) is presentsystemctl is presentlvcreate is presentUnit chronyd.service is enabled and runningHost looks OKCluster fsid: 976e04fe-9315-11ed-a275-e29e49e9189cVerifying IP 192.168.1.25 port 3300 ...Verifying IP 192.168.1.25 port 6789 ...Mon IP `192.168.1.25` is in CIDR network `192.168.1.0/24`Mon IP `192.168.1.25` is in CIDR network `192.168.1.0/24`Internal network (--cluster-network) has not been provided, OSD replication will default to the public_networkPulling container image quay.io/ceph/ceph:v17...Ceph version: ceph version 17.2.5 (98318ae89f1a893a6ded3a640405cdbb33e08757) quincy (stable)Extracting ceph user uid/gid from container image...Creating initial keys...Creating initial monmap...Creating mon...Waiting for mon to start...Waiting for mon...mon is availableAssimilating anything we can from ceph.conf...Generating new minimal ceph.conf...Restarting the monitor...Setting mon public_network to 192.168.1.0/24Wrote config to /etc/ceph/ceph.confWrote keyring to /etc/ceph/ceph.client.admin.keyringCreating mgr...Verifying port 9283 ...Waiting for mgr to start...Waiting for mgr...mgr not available, waiting (1/15)...mgr not available, waiting (2/15)...mgr not available, waiting (3/15)...mgr not available, waiting (4/15)...mgr is availableEnabling cephadm module...Waiting for the mgr to restart...Waiting for mgr epoch 4...mgr epoch 4 is availableSetting orchestrator backend to cephadm...Generating ssh key...Wrote public SSH key to /etc/ceph/ceph.pubAdding key to root@localhost authorized_keys...Adding host ceph-1...Deploying mon service with default placement...Deploying mgr service with default placement...Deploying crash service with default placement...Deploying prometheus service with default placement...Deploying grafana service with default placement...Deploying node-exporter service with default placement...Deploying alertmanager service with default placement...Enabling the dashboard module...Waiting for the mgr to restart...Waiting for mgr epoch 8...mgr epoch 8 is availableGenerating a dashboard self-signed certificate...Creating initial admin user...Fetching dashboard port number...Ceph Dashboard is now available at: URL: https://ceph-1:8443/ User: admin Password: dsvi6yiat7Enabling client.admin keyring and conf on hosts with "admin" labelSaving cluster configuration to /var/lib/ceph/976e04fe-9315-11ed-a275-e29e49e9189c/config directoryEnabling autotune for osd_memory_targetYou can access the Ceph CLI as following in case of multi-cluster or non-default config: sudo /usr/sbin/cephadm shell --fsid 976e04fe-9315-11ed-a275-e29e49e9189c -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyringOr, if you are only running a single cluster on this host: sudo /usr/sbin/cephadm shell Please consider enabling telemetry to help improve Ceph: ceph telemetry onFor more information see: https://docs.ceph.com/docs/master/mgr/telemetry/Bootstrap complete.[root@ceph-1 ~]# 查看容器[root@ceph-1 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEquay.io/ceph/ceph v17 cc65afd6173a 2 months ago 1.36GBquay.io/ceph/ceph-grafana 8.3.5 dad864ee21e9 9 months ago 558MBquay.io/prometheus/prometheus v2.33.4 514e6a882f6e 10 months ago 204MBquay.io/prometheus/node-exporter v1.3.1 1dbe0e931976 13 months ago 20.9MBquay.io/prometheus/alertmanager v0.23.0 ba2b418f427c 16 months ago 57.5MB[root@ceph-1 ~]#[root@ceph-1 ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES41a980ad57b6 quay.io/ceph/ceph-grafana:8.3.5 "/bin/sh -c 'grafana…" 32 seconds ago Up 31 seconds ceph-976e04fe-9315-11ed-a275-e29e49e9189c-grafana-ceph-1c1d92377e2f2 quay.io/prometheus/alertmanager:v0.23.0 "/bin/alertmanager -…" 33 seconds ago Up 32 seconds ceph-976e04fe-9315-11ed-a275-e29e49e9189c-alertmanager-ceph-19262faff37be quay.io/prometheus/prometheus:v2.33.4 "/bin/prometheus --c…" 42 seconds ago Up 41 seconds ceph-976e04fe-9315-11ed-a275-e29e49e9189c-prometheus-ceph-12601411f95a6 quay.io/prometheus/node-exporter:v1.3.1 "/bin/node_exporter …" About a minute ago Up About a minute ceph-976e04fe-9315-11ed-a275-e29e49e9189c-node-exporter-ceph-1a6ca018a7620 quay.io/ceph/ceph "/usr/bin/ceph-crash…" 2 minutes ago Up 2 minutes ceph-976e04fe-9315-11ed-a275-e29e49e9189c-crash-ceph-1f9e9de110612 quay.io/ceph/ceph:v17 "/usr/bin/ceph-mgr -…" 3 minutes ago Up 3 minutes ceph-976e04fe-9315-11ed-a275-e29e49e9189c-mgr-ceph-1-svfnsmcac707c88b83 quay.io/ceph/ceph:v17 "/usr/bin/ceph-mon -…" 3 minutes ago Up 3 minutes ceph-976e04fe-9315-11ed-a275-e29e49e9189c-mon-ceph-1[root@ceph-1 ~]# 应用shell命令[root@ceph-1 ~]# cephadm shell #切换模式Inferring fsid 976e04fe-9315-11ed-a275-e29e49e9189cInferring config /var/lib/ceph/976e04fe-9315-11ed-a275-e29e49e9189c/mon.ceph-1/configUsing ceph image with id 'cc65afd6173a' and tag 'v17' created on 2022-10-18 07:41:41 +0800 CSTquay.io/ceph/ceph@sha256:0560b16bec6e84345f29fb6693cd2430884e6efff16a95d5bdd0bb06d7661c45[ceph: root@ceph-1 /]# [ceph: root@ceph-1 /]# [ceph: root@ceph-1 /]# [ceph: root@ceph-1 /]# ceph -s cluster: id: 976e04fe-9315-11ed-a275-e29e49e9189c health: HEALTH_WARN OSD count 0 < osd_pool_default_size 3 services: mon: 1 daemons, quorum ceph-1 (age 4m) mgr: ceph-1.svfnsm(active, since 2m) osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs: [ceph: root@ceph-1 /]# [ceph: root@ceph-1 /]# ceph orch ps #查看目前集群内运行的组件(包含其余节点)NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID alertmanager.ceph-1 ceph-1 *:9093,9094 running (2m) 2m ago 4m 15.1M - ba2b418f427c c1d92377e2f2 crash.ceph-1 ceph-1 running (4m) 2m ago 4m 6676k - 17.2.5 cc65afd6173a a6ca018a7620 grafana.ceph-1 ceph-1 *:3000 running (2m) 2m ago 3m 39.1M - 8.3.5 dad864ee21e9 41a980ad57b6 mgr.ceph-1.svfnsm ceph-1 *:9283 running (5m) 2m ago 5m 426M - 17.2.5 cc65afd6173a f9e9de110612 mon.ceph-1 ceph-1 running (5m) 2m ago 5m 29.0M 2048M 17.2.5 cc65afd6173a cac707c88b83 node-exporter.ceph-1 ceph-1 *:9100 running (3m) 2m ago 3m 13.2M - 1dbe0e931976 2601411f95a6 prometheus.ceph-1 ceph-1 *:9095 running (3m) 2m ago 3m 34.4M - 514e6a882f6e 9262faff37be [ceph: root@ceph-1 /]# [ceph: root@ceph-1 /]# [ceph: root@ceph-1 /]# ceph orch ps --daemon-type mon #查看某一组件的状态NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID mon.ceph-1 ceph-1 running (5m) 2m ago 5m 29.0M 2048M 17.2.5 cc65afd6173a cac707c88b83 [ceph: root@ceph-1 /]# [ceph: root@ceph-1 /]# exit #退出命令模式 exit[root@ceph-1 ~]## ceph命令的第二种利用[root@ceph-1 ~]# cephadm shell -- ceph -sInferring fsid 976e04fe-9315-11ed-a275-e29e49e9189cInferring config /var/lib/ceph/976e04fe-9315-11ed-a275-e29e49e9189c/mon.ceph-1/configUsing ceph image with id 'cc65afd6173a' and tag 'v17' created on 2022-10-18 07:41:41 +0800 CSTquay.io/ceph/ceph@sha256:0560b16bec6e84345f29fb6693cd2430884e6efff16a95d5bdd0bb06d7661c45 cluster: id: 976e04fe-9315-11ed-a275-e29e49e9189c health: HEALTH_WARN OSD count 0 < osd_pool_default_size 3 services: mon: 1 daemons, quorum ceph-1 (age 6m) mgr: ceph-1.svfnsm(active, since 4m) osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs: [root@ceph-1 ~]# 装置ceph-common包# 装置ceph-common包[root@ceph-1 ~]# cephadm install ceph-commonInstalling packages ['ceph-common']...[root@ceph-1 ~]# [root@ceph-1 ~]# ceph -v ceph version 17.2.5 (98318ae89f1a893a6ded3a640405cdbb33e08757) quincy (stable)[root@ceph-1 ~]## 启用ceph组件ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-2ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-3创立mon和mgr# 创立mon和mgrceph orch host add ceph-2ceph orch host add ceph-3#查看目前集群纳管的节点[root@ceph-1 ~]# ceph orch host ls HOST ADDR LABELS STATUS ceph-1 192.168.1.25 _admin ceph-2 192.168.1.26 ceph-3 192.168.1.27 3 hosts in cluster[root@ceph-1 ~]##ceph集群个别默认会容许存在5个mon和2个mgr;能够应用ceph orch apply mon --placement="3 node1 node2 node3"进行手动批改[root@ceph-1 ~]# ceph orch apply mon --placement="3 ceph-1 ceph-2 ceph-3"Scheduled mon update...[root@ceph-1 ~]# [root@ceph-1 ~]# ceph orch apply mgr --placement="3 ceph-1 ceph-2 ceph-3"Scheduled mgr update...[root@ceph-1 ~]# [root@ceph-1 ~]# ceph orch ls NAME PORTS RUNNING REFRESHED AGE PLACEMENT alertmanager ?:9093,9094 1/1 30s ago 17m count:1 crash 3/3 4m ago 17m * grafana ?:3000 1/1 30s ago 17m count:1 mgr 3/3 4m ago 46s ceph-1;ceph-2;ceph-3;count:3 mon 3/3 4m ago 118s ceph-1;ceph-2;ceph-3;count:3 node-exporter ?:9100 3/3 4m ago 17m * prometheus ?:9095 1/1 30s ago 17m count:1 [root@ceph-1 ~]# 创立osd# 创立osd[root@ceph-1 ~]# ceph orch daemon add osd ceph-1:/dev/sdbCreated osd(s) 0 on host 'ceph-1'[root@ceph-1 ~]# ceph orch daemon add osd ceph-2:/dev/sdbCreated osd(s) 1 on host 'ceph-2'[root@ceph-1 ~]# ceph orch daemon add osd ceph-3:/dev/sdbCreated osd(s) 2 on host 'ceph-3'[root@ceph-1 ~]# 创立mds# 创立mds#首先创立cephfs,不指定pg的话,默认主动调整[root@ceph-1 ~]# ceph osd pool create cephfs_datapool 'cephfs_data' created[root@ceph-1 ~]# ceph osd pool create cephfs_metadatapool 'cephfs_metadata' created[root@ceph-1 ~]# ceph fs new cephfs cephfs_metadata cephfs_datanew fs with metadata pool 3 and data pool 2[root@ceph-1 ~]# #开启mds组件,cephfs:文件系统名称;–placement:指定集群内须要几个mds,前面跟主机名[root@ceph-1 ~]# ceph orch apply mds cephfs --placement="3 ceph-1 ceph-2 ceph-3"Scheduled mds.cephfs update...[root@ceph-1 ~]# #查看各节点是否已启动mds容器;还能够应用ceph orch ps 查看某一节点运行的容器[root@ceph-1 ~]# ceph orch ps --daemon-type mdsNAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID mds.cephfs.ceph-1.zgcgrw ceph-1 running (52s) 44s ago 52s 17.0M - 17.2.5 cc65afd6173a aba28ef97b9a mds.cephfs.ceph-2.vvpuyk ceph-2 running (51s) 45s ago 51s 14.1M - 17.2.5 cc65afd6173a 940a019d4c75 mds.cephfs.ceph-3.afnozf ceph-3 running (54s) 45s ago 54s 14.2M - 17.2.5 cc65afd6173a bd17d6414aa9 [root@ceph-1 ~]# [root@ceph-1 ~]# 创立rgw# 创立rgw#首先创立一个畛域[root@ceph-1 ~]# radosgw-admin realm create --rgw-realm=myorg --default{ "id": "a6607d08-ac44-45f0-95b0-5435acddfba2", "name": "myorg", "current_period": "16769237-0ed5-4fad-8822-abc444292d0b", "epoch": 1}[root@ceph-1 ~]# #创立区域组[root@ceph-1 ~]# radosgw-admin zonegroup create --rgw-zonegroup=default --master --default{ "id": "4d978fe1-b158-4b3a-93f7-87fbb31f6e7a", "name": "default", "api_name": "default", "is_master": "true", "endpoints": [], "hostnames": [], "hostnames_s3website": [], "master_zone": "", "zones": [], "placement_targets": [], "default_placement": "", "realm_id": "a6607d08-ac44-45f0-95b0-5435acddfba2", "sync_policy": { "groups": [] }}[root@ceph-1 ~]# #创立区域[root@ceph-1 ~]# radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=cn-east-1 --master --default{ "id": "5ac7f118-a69c-4dec-b174-f8432e7115b7", "name": "cn-east-1", "domain_root": "cn-east-1.rgw.meta:root", "control_pool": "cn-east-1.rgw.control", "gc_pool": "cn-east-1.rgw.log:gc", "lc_pool": "cn-east-1.rgw.log:lc", "log_pool": "cn-east-1.rgw.log", "intent_log_pool": "cn-east-1.rgw.log:intent", "usage_log_pool": "cn-east-1.rgw.log:usage", "roles_pool": "cn-east-1.rgw.meta:roles", "reshard_pool": "cn-east-1.rgw.log:reshard", "user_keys_pool": "cn-east-1.rgw.meta:users.keys", "user_email_pool": "cn-east-1.rgw.meta:users.email", "user_swift_pool": "cn-east-1.rgw.meta:users.swift", "user_uid_pool": "cn-east-1.rgw.meta:users.uid", "otp_pool": "cn-east-1.rgw.otp", "system_key": { "access_key": "", "secret_key": "" }, "placement_pools": [ { "key": "default-placement", "val": { "index_pool": "cn-east-1.rgw.buckets.index", "storage_classes": { "STANDARD": { "data_pool": "cn-east-1.rgw.buckets.data" } }, "data_extra_pool": "cn-east-1.rgw.buckets.non-ec", "index_type": 0 } } ], "realm_id": "a6607d08-ac44-45f0-95b0-5435acddfba2", "notif_pool": "cn-east-1.rgw.log:notif"}[root@ceph-1 ~]# #为特定畛域和区域部署radosgw守护程序[root@ceph-1 ~]# ceph orch apply rgw myorg cn-east-1 --placement="3 ceph-1 ceph-2 ceph-3"Scheduled rgw.myorg update...[root@ceph-1 ~]# #验证各节点是否启动rgw容器[root@ceph-1 ~]# ceph orch ps --daemon-type rgwNAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID rgw.myorg.ceph-1.tzzauo ceph-1 *:80 running (60s) 50s ago 60s 18.6M - 17.2.5 cc65afd6173a 2ce31e5c9d35 rgw.myorg.ceph-2.zxwpfj ceph-2 *:80 running (61s) 51s ago 61s 20.0M - 17.2.5 cc65afd6173a a334e346ae5c rgw.myorg.ceph-3.bvsydw ceph-3 *:80 running (58s) 51s ago 58s 18.6M - 17.2.5 cc65afd6173a 97b09ba01821 [root@ceph-1 ~]# 为所有节点装置ceph-common包# 为所有节点装置ceph-common包scp /etc/yum.repos.d/ceph.repo ceph-2:/etc/yum.repos.d/ #将主节点的ceph源同步至其余节点scp /etc/yum.repos.d/ceph.repo ceph-3:/etc/yum.repos.d/ #将主节点的ceph源同步至其余节点yum -y install ceph-common #在节点装置ceph-common,ceph-common包会提供ceph命令并在etc下创立ceph目录scp /etc/ceph/ceph.conf ceph-2:/etc/ceph/ #将ceph.conf文件传输至对应节点scp /etc/ceph/ceph.conf ceph-3:/etc/ceph/ #将ceph.conf文件传输至对应节点scp /etc/ceph/ceph.client.admin.keyring ceph-2:/etc/ceph/ #将密钥文件传输至对应节点scp /etc/ceph/ceph.client.admin.keyring ceph-3:/etc/ceph/ #将密钥文件传输至对应节点测试# 测试[root@ceph-3 ~]# ceph -s cluster: id: 976e04fe-9315-11ed-a275-e29e49e9189c health: HEALTH_OK services: mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3 (age 17m) mgr: ceph-1.svfnsm(active, since 27m), standbys: ceph-2.zuetkd, ceph-3.vntnlf mds: 1/1 daemons up, 2 standby osd: 3 osds: 3 up (since 8m), 3 in (since 8m) rgw: 3 daemons active (3 hosts, 1 zones) data: volumes: 1/1 healthy pools: 7 pools, 177 pgs objects: 226 objects, 585 KiB usage: 108 MiB used, 300 GiB / 300 GiB avail pgs: 177 active+clean [root@ceph-3 ~]# 拜访界面# 页面拜访https://192.168.1.25:8443http://192.168.1.25:9095/https://192.168.1.25:3000/User: adminPassword: dsvi6yiat7常用命令ceph orch ls #列出集群内运行的组件ceph orch host ls #列出集群内的主机ceph orch ps #列出集群内容器的详细信息ceph orch apply mon --placement="3 node1 node2 node3" #调整组件的数量ceph orch ps --daemon-type rgw #--daemon-type:指定查看的组件ceph orch host label add node1 mon #给某个主机指定标签ceph orch apply mon label:mon #通知cephadm依据标签部署mon,批改后只有蕴含mon的主机才会成为mon,不过原来启动的mon当初临时不会敞开ceph orch device ls #列出集群内的存储设备例如,要在newhost1IP地址10.1.2.123上部署第二台监视器,并newhost2在网络10.1.2.0/24中部署第三台monitorceph orch apply mon --unmanaged #禁用mon主动部署ceph orch daemon add mon newhost1:10.1.2.123ceph orch daemon add mon newhost2:10.1.2.0/24对于 ...

January 13, 2023 · 9 min · jiezi

关于linux:麒麟操作系统-kylinos-从入门到精通-办公环境-第四十三篇-视频的分割与合并处理

0.根底环境类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)零碎:河汉麒麟操作系统 V10 SP1(2203) 关键词:信创,麒麟零碎,linux,c++,c,飞腾,arm,boilsoft videosplit,shotcut,avidemux,视频解决 1.需要背景在网上下的视频,须要进行宰割,不便上传到网盘分享给别人。在windows 下,我用到的是BoilSoft VideoSplitter,对于视频宰割这一项性能来讲,相当好用,简单明了。于是心愿在麒麟零碎下也能找到相似的产品。很遗憾举荐的都是shotcut,我间接在利用市场装了一下,很不好用,界面简单,也呈现各类谬误。于是通过搜索引擎间接找替代品,举荐最高的是avidemux,官网能够下载appimage的版本,然而只有x86_64平台的,没有飞腾这一类arm平台的,通过重复一直的尝试,终于为大家把arm版本编译好了。 2. avidemux宰割软件的arm64版本编译2.1 avidemux根底信息官网http://fixounet.free.fr/avide...源码信息source codehttps://www.fosshub.com/Avide...https://download.fosshub.com/...;badurl=aHR0cHM6Ly93d3cuZm9zc2h1Yi5jb20vQXZpZGVtdXguaHRtbA==/73fb263bae02028d7d1740f3daca5267fed530b96f3019387f85e86fb5599807/5b92987559eee027c3d78f03/6325d1cea6ea567e2da04399/avidemux_2.8.1.tar.gz构建指南build guidehttp://avidemux.org/admWiki/d... 2.2 编译环境筹备2.2.1 装置根底编译环境sudo apt-get install gcc g++ make cmake pkg-config libpng12-dev fakeroot yasm libsqlite3-dev build-essential -y #装置根底构建环境sudo apt-get install libaften-dev libmp3lame-dev libx264-dev libfaad-dev libfaac-dev -y #For common plugins2.2.2 装置残缺的QT环境sudo apt-get install qtcreator qt5-default qt5-doc qt5-doc-html qtbase5-doc-html qtbase5-examples -y #装置qt 及creator ide,文档,示例sudo apt-get install qttools5-dev-tools qtbase5-dev -ysudo apt-get install libqt4-dev -y2.2.3 设置QT_HOME设置QT_HOME变量,次要是makeAppImage时,须要用到,否则生成不了AppImage文件sudo vim /etc/profile #也能够用其余编辑器 最初追加一行,并保留export QT_HOME=/usr/lib/aarch64-linux-gnu/qt5保留后sudo -s source /etc/profile #使变量立刻失效 ...

January 11, 2023 · 1 min · jiezi

关于linux:助力-100-家企业实现-CentOS-平滑迁移OpenCloudOS千百双扶计划重磅上线

CentOS 能够说是适宜每个用户的最佳 Linux 发行版之一 但当 CentOS 全系行将迎来生命起点之际 企业该如何抉择其余的开源代替计划? 在技术选型时,你是否难以抉择? 市面上的开源和发行版林林总总, 又该如何评估代替计划与本身的技术架构、产品足够匹配? 为了向企业提供更疾速、业余的服务反对 助力其顺利实现 CentOS 平滑迁徙 1 月,OpenCloudOS 社区 联结 500+ 家企业搭档和国内优质的联盟、孵化器单位 面向千百家中小企业独特推出「千百双扶」打算 从迁徙服务反对 到生态资源搀扶、联盟共赢体系 再到投资孵化加持 OpenCloudOS 社区将通过政策疏导、迁徙、标杆推广、企业赋能等 真正让企业找到适合企业倒退的代替计划 固本提效的同时 实现生态圈层内的资源单干与交换。 具体内容请查看 ⬇️ 填写申请问卷https://wj.qq.com/s2/11487722...,即可 领先取得前 100 家企业收费退出名额

January 11, 2023 · 1 min · jiezi

关于linux:在云原生场景中nettrace-如何快速进行网络故障诊断

在开源 Linux 操作系统 OpenCloudOS 8.6 中,减少了内核对网络工具 nettrace 的反对,容许开发者通过 bpf 进行网络丢包起因跟踪,内核也同时回合相干的丢包跟踪点。明天,就以 nettrace 为典型,介绍如何在 OpenCloudOS 中利用 nettrace 进行网络故障诊断。一、工具简介1. 背景在一些场景下(特地是云原生场景),Linux 零碎中的网络部署变得越来越简单。一个 TCP 连贯,从客户端到服务端,两头可能要通过简单的 NAT、GRE、IPVS 等过程,网络报文在节点(主机)上的解决门路也变得越来越长。在产生网络故障(比方网络丢包)时,如何疾速、无效地定位出网络问题成为了一个难题。目前惯例的网络故障定位伎俩,如 tcpdump、dropwatch、ftrace、kprobe 等存在肯定的短板: tcpdump:只能在链路层抓包,无奈定位内核协定栈中的问题,比方惯例的内核丢包问题ftrace:只能跟踪内核函数,无奈进行报文过滤,且动手较难,须要对内核协定栈有肯定理解kprobe:长期编写内核模块,效率和安全性低BCC:性能繁多,长期编写 BCC 程序跟踪效率低,须要对内核有肯定理解,动手难dropwatch:性能繁多,只能查看网络丢包问题,且无奈失去丢包起因和解决方案在此背景下,笔者联合多年的 Kernel 网络协议栈故障定位教训,基于 eBPF 开发了 Linux 环境下网络故障定位工具集——nettrace。 2. 性能介绍nettrace 是一款基于 eBPF 的集网络报文跟踪(故障定位)、网络故障诊断、网络异样监控于一体的网络工具集,旨在可能提供一种更加高效、易用的办法来解决简单场景下的网络问题。目前,其实现的性能包含: 网络报文跟踪:跟踪网络报文从进入到内核协定栈到开释/抛弃的过程中在内核中所走过的门路,实现报文整个生命周期的监控,并采集生命周期各个阶段的事件、信息。通过观察报文在内核中的门路,对于有肯定内核协定栈教训的人来说能够疾速、无效地发现网络问题。网络故障诊断:将以往的教训集成到工具的知识库,通过常识匹配的形式来被动诊断以后网络故障,给出诊断后果以及修复倡议。该性能动手简略、易用性强,无需过多的网络教训即可进行网络问题定位。网络异样监控:常态化地部署到生产环境中,被动地发现、上报环境上的网络异样。droptrace:用于跟踪、监控零碎中的丢包事件的工具,在文末链接中查看详情介绍。该性能已被遗弃,能够应用 nettrace --drop 实现雷同的性能。二、装置办法nettrace 是采纳 C 语言编写的基于 eBPF(libbpf)的命令行工具,在应用和装置时能够用编译好的 RPM 包和二进制程序。留神:本工具目前仅在 4.14 及以上的内核版本上进行过兼容性测试,因而请确保以后的零碎所应用的的内核版本在 4.14 以上。对于默认继承 yum 的 OpenCloudOS,本工具曾经上线到对应的软件仓库,能够方便快捷地间接应用 yum 命令来进行在线装置: sudo yum install nettrace也能够间接从 OpenCloudOS releases 页面中下载对应的 RPM/DEB 安装包,手动进行装置。 三、应用办法nettrace 是用来跟踪内核报文和诊断网络故障的,在进行报文跟踪时能够应用肯定的过滤条件来跟踪特定的报文。其根本命令行参数为: $ nettrace -hnettrace: a tool to trace skb in kernel and diagnose network problemUsage:    -s, --saddr      filter source ip address    --saddr6         filter source ip v6 address    -d, --daddr      filter dest ip address    --daddr6         filter dest ip v6 address    --addr           filter source or dest ip address    --addr6          filter source or dest ip v6 address    -S, --sport      filter source TCP/UDP port    -D, --dport      filter dest TCP/UDP port    -P, --port       filter source or dest TCP/UDP port    -p, --proto      filter L3/L4 protocol, such as 'tcp', 'arp'    --pid            filter by current process id(pid)    -t, --trace      enable trace group or trace    --ret            show function return value    --detail         show extern packet info, such as pid, ifname, etc    --date           print timestamp in date-time format    --basic          use 'basic' trace mode, don't trace skb's life    --diag           enable 'diagnose' mode    --diag-quiet     only print abnormal packet    --diag-keep      don't quit when abnormal packet found    --hooks          print netfilter hooks if dropping by netfilter    --drop           skb drop monitor mode, for replace of 'droptrace'    --drop-stack     print the kernel function call stack of kfree_skb    -v               show log information    --debug          show debug information    -h, --help       show help information其中,参数 s/d/addr/S/D/port/p/pid 用于进行报文的过滤,能够通过 IP 地址、端口、协定等属性进行过滤。其余参数的用处包含: ...

January 10, 2023 · 2 min · jiezi

关于linux:从Linux零拷贝深入了解LinuxIO

导言 | 本文邀请到腾讯CSIG后盾开发工程师kevineluo从文件传输场景以及零拷贝技术深究Linux I/O的倒退过程、优化伎俩以及理论利用。I/O相干的各类优化曾经深刻到了日常开发者接触到的语言、中间件以及数据库的方方面面。通过理解和学习相干技术和思维,开发者能对日后本人的程序设计以及性能优化上有所启发。 前言存储器是计算机的核心部件之一,在齐全现实的状态下,存储器应该要同时具备以下三种个性:第一,速度足够快:存储器的存取速度该当快于CPU执行一条指令,这样CPU的效率才不会受限于存储器;第二,容量足够大:容量可能存储计算机所需的全副数据;第三,价格足够便宜:价格低廉,所有类型的计算机都能装备。 然而事实往往是残暴的,咱们目前的计算机技术无奈同时满足上述的三个条件,于是古代计算机的存储器设计采纳了一种分档次的构造: 从顶至底,古代计算机里的存储器类型别离有:寄存器、高速缓存、主存和磁盘,这些存储器的速度逐级递加而容量逐级递增。 存取速度最快的是寄存器,因为寄存器的制作资料和CPU是雷同的,所以速度和CPU一样快,CPU拜访寄存器是没有时延的,然而因为价格昂贵,因而容量也极小,个别32位的CPU装备的寄存器容量是32✖️32Bit,64位的 CPU则是64✖️64Bit,不论是32位还是64位,寄存器容量都小于1KB,且寄存器也必须通过软件自行治理。 第二层是高速缓存,也即咱们平时理解的CPU高速缓存L1、L2、L3,个别 L1是每个CPU独享,L3是全副CPU共享,而L2则依据不同的架构设计会被设计成独享或者共享两种模式之一,比方Intel的多核芯片采纳的是共享L2模式而AMD的多核芯片则采纳的是独享L2模式。 第三层则是主存,也即主内存,通常称作随机拜访存储器(Random Access Memory,RAM)。是与CPU间接替换数据的外部存储器。它能够随时读写(刷新时除外),而且速度很快,通常作为操作系统或其余正在运行中的程序的长期材料存储介质。 至于磁盘则是图中离用户最远的一层了,读写速度相差内存上百倍;另一方面天然针对磁盘操作的优化也十分多,如零拷贝、direct I/O、异步I/O等等,这些优化的目标都是为了进步零碎的吞吐量;另外操作系统内核中也有磁盘高速缓存区、PageCache、TLB等,能够无效的缩小磁盘的拜访次数。 现实情况中,大部分零碎在由小变大的过程中,最先呈现瓶颈的就是I/O,尤其是在古代网络应用从CPU密集型转向了I/O密集型的大背景下,I/O越发成为大多数利用的性能瓶颈。 传统的Linux操作系统的规范I/O接口是基于数据拷贝操作的,即I/O操作会导致数据在操作系统内核地址空间的缓冲区和用户过程地址空间定义的缓冲区之间进行传输。设置缓冲区最大的益处是能够缩小磁盘I/O的操作,如果所申请的数据曾经寄存在操作系统的高速缓冲存储器中,那么就不须要再进行理论的物理磁盘I/O操作;然而传统的Linux I/O在数据传输过程中的数据拷贝操作深度依赖CPU,也就是说I/O过程须要CPU去执行数据拷贝的操作,因而导致了极大的零碎开销,限度了操作系统无效进行数据传输操作的能力。 这篇文章就从文件传输场景,以及零拷贝技术深究Linux I/O的倒退过程、优化伎俩以及理论利用。 须要理解的词DMA:DMA,全称Direct Memory Access,即间接存储器拜访,是为了防止CPU在磁盘操作时承当过多的中断负载而设计的;在磁盘操作中,CPU可将总线控制权交给DMA控制器,由DMA输入读写命令,间接管制RAM与I/O接口进行DMA传输,无需CPU间接控制传输,也没有中断解决形式那样保留现场和复原现场过程,使得CPU的效率大大提高。 MMU:Memory Management Unit—内存治理单元,次要实现: 竞争拜访爱护治理需要:须要严格的拜访爱护,动静治理哪些内存页/段或区,为哪些应用程序所用。这属于资源的竞争拜访治理需要; 高效的翻译转换治理需要:须要实现疾速高效的映射翻译转换,否则零碎的运行效率将会低下; 高效的虚实内存替换需要:须要在理论的虚拟内存与物理内存进行内存页/段替换过程中疾速高效。 Page Cache:为了防止每次读写文件时,都须要对硬盘进行读写操作,Linux 内核应用页缓存(Page Cache)机制来对文件中的数据进行缓存。 此外,因为读取磁盘数据的时候,须要找到数据所在的地位,然而对于机械磁盘来说,就是通过磁头旋转到数据所在的扇区,再开始「程序」读取数据,然而旋转磁头这个物理动作是十分耗时的,为了升高它的影响,PageCache 应用了「预读性能」。 比方,假如read办法每次只会读32KB的字节,尽管read刚开始只会读0~32KB的字节,但内核会把其前面的32~64KB也读取到PageCache,这样前面读取32~64KB的老本就很低,如果在32~64KB淘汰出PageCache 前,有过程读取到它了,收益就十分大。 虚拟内存:在计算机领域有一句如同摩西十诫般神圣的哲言:"计算机科学畛域的任何问题都能够通过减少一个间接的中间层来解决",从内存治理、网络模型、并发调度甚至是硬件架构,都能看到这句哲言在闪烁着光辉,而虚拟内存则是这一哲言的完满实际之一。 虚拟内存为每个过程提供了一个统一的、公有且间断残缺的内存空间;所有古代操作系统都应用虚拟内存,应用虚拟地址取代物理地址,次要有以下几点益处: 第一点,利用上述的第一条个性能够优化,能够把内核空间和用户空间的虚构地址映射到同一个物理地址,这样在I/O操作时就不须要来回复制了。 第二点,多个虚拟内存能够指向同一个物理地址;第三点,虚拟内存空间能够远远大于物理内存空间;第四点,利用层面可治理间断的内存空间,缩小出错。 NFS文件系统:网络文件系统是FreeBSD反对的文件系统中的一种,也被称为NFS;NFS容许一个零碎在网络上与它人共享目录和文件,通过应用 NFS,用户和程序能够象拜访本地文件一样拜访远端零碎上的文件。 Copy-on-write写入时复制(Copy-on-write,COW)是一种计算机程序设计畛域的优化策略。其核心思想是,如果有多个调用者(callers)同时申请雷同资源(如内存或磁盘上的数据存储),他们会独特获取雷同的指针指向雷同的资源,直到某个调用者试图批改资源的内容时,零碎才会真正复制一份专用正本(private copy)给该调用者,而其余调用者所见到的最后的资源依然放弃不变。这过程对其余的调用者都是通明的。此作法次要的长处是如果调用者没有批改该资源,就不会有正本(private copy)被创立,因而多个调用者只是读取操作时能够共享同一份资源。 为什么要有DMA在没有DMA技术前,I/O的过程是这样的:首先,CPU收回对应的指令给磁盘控制器,而后返回;其次,磁盘控制器收到指令后,于是就开始筹备数据,会把数据放入到磁盘控制器的外部缓冲区中,而后产生一个中断;最初,CPU收到中断信号后,停下手头的工作,接着把磁盘控制器的缓冲区的数据一次一个字节地读进本人的寄存器,而后再把寄存器里的数据写入到内存,而在数据传输的期间CPU是被阻塞的状态,无奈执行其余工作。 整个数据的传输过程,都要须要CPU亲自参加拷贝数据,而且这时CPU是被阻塞的;简略的搬运几个字符数据那没问题,然而如果咱们用千兆网卡或者硬盘传输大量数据的时候,都用CPU来搬运的话,必定忙不过来。 计算机科学家们发现了事件的严重性后,于是就创造了DMA技术,也就是间接内存拜访(Direct Memory Access)技术。简略了解就是,在进行I/O 设施和内存的数据传输的时候,数据搬运的工作全副交给DMA控制器,而 CPU不再参加任何与数据搬运相干的事件,这样CPU就能够去解决别的事务。 具体流程如下图: 首先,用户过程调用read办法,向操作系统收回I/O申请,申请读取数据到本人的内存缓冲区中,过程进入阻塞状态;其次,操作系统收到申请后,进一步将I/O申请发送DMA,开释CPU;再次,DMA进一步将I/O申请发送给磁盘;从次,磁盘收到DMA的I/O申请,把数据从磁盘读取到磁盘控制器的缓冲区中,当磁盘控制器的缓冲区被读满后,向DMA发动中断信号,告知本人缓冲区已满;最初,DMA收到磁盘的信号,将磁盘控制器缓冲区中的数据拷贝到内核缓冲区中,此时不占用CPU,CPU仍然能够执行其它事务;另外,当DMA读取了足够多的数据,就会发送中断信号给CPU;除此之外,CPU收到中断信号,将数据从内核拷贝到用户空间,零碎调用返回。 在有了DMA后,整个数据传输的过程,CPU不再参加与磁盘交互的数据搬运工作,而是全程由DMA实现,然而CPU在这个过程中也是必不可少的,因为传输什么数据,从哪里传输到哪里,都须要CPU来通知DMA控制器。 晚期DMA只存在在主板上,现在因为I/O设施越来越多,数据传输的需要也不尽相同,所以每个I/O设施外面都有本人的DMA控制器。 传统文件传输的缺点有了DMA后,咱们的磁盘I/O就一劳永逸了吗?并不是的;拿咱们比拟相熟的下载文件举例,服务端要提供此性能,比拟直观的形式就是:将磁盘中的文件读出到内存,再通过网络协议发送给客户端。 ...

January 10, 2023 · 3 min · jiezi

关于linux:Linux同步服务器时间

Linux同步服务器工夫CentOS装置ntp工夫同步服务 形式一 crontab同步工夫命令:执行同步命令,服务端先须要启动ntpd服务,客户端不须要ntpdate 192.168.1.100(ntp服务器的ip)下面命令执行没有问题后配置定时工作同步服务器工夫crontab -e增加如下命令,而后保留即可* 2 * * * * ntpdate 192.168.1.100 #每天2点执行形式二 ntpd服务应用ntpdate同步一次工夫,查看是否有正确回显ntpdate 192.168.1.100设置ntpd服务vim /etc/ntp.conf#配置和下面相似,但留神将设置的下级ntp server 设置为服务器的地址。server 192.168.1.100 prefer#设置开启服务后主动同步下级ntp server工夫设置ntp为开机启动systemctl enable ntpd查看ntp开机启动状态 enabled:开启, disabled:敞开systemctl is-enabled ntpdntpd启动命令systemctl start ntpdntpd敞开命令systemctl stop ntpdntpd状态命令systemctl status ntpd

January 9, 2023 · 1 min · jiezi

关于linux:Linux中Sl命令的使用

咱们在输出命令时候,有时候难免会输出谬误,比方在Linux 下,有时候会把ls误输出成了sl,那么会呈现怎么的成果呢?输出sl后会看到“一个火车咔咔的从桌面上走过!!!”。上面谈谈sl 的应用。 在这里插入代码片一、环境这里应用的是Ubuntu14.04(实质上只有是Linux操作系统即可) 二、装置1.先输出sl看下,如果提醒没有这个命令,阐明没有装置2.输出以下命令进行移除sudo apt-get remove sl 3.输出以下命令装置sudo apt-get install sl装置完后间接在命令行输出sl,即可: 三、命令阐明在命令行间接输出man sl查看sl的应用: man sl sl #这个命令次要是揭示程序员输出的命令是sl,而不是lssl -a #能够看到火车上有一个“求救”的人sl -l #显示一个比间接输出sl更小的一个火车sl -F #火车会从右下角向左上角飞走了sl -e #能够应用Ctrl+C中断以后会话

January 9, 2023 · 1 min · jiezi

关于linux:如何用-Glances-命令监控-Linux-系统

过来,咱们曾经介绍了 Linux 中相当多的命令行监督工具。这些包含 vmstat,htop,top 等。其中 top 是应用最宽泛的命令,因为它是预装置的,除了显示正在运行的过程外,还提供零碎的实时性能。在本指南中,咱们将更多地关注一个直观且用户敌对的命令行工具 glances。 基于Python, Glances 是一个开源收费的跨平台命令行监督工具,可提供无关零碎性能的大量信息。您能够监视系统指标,例如内存和 CPU 利用率,网络带宽,磁盘 I/O,文件系统和运行过程等。 Glances 以直观且具备视觉吸引力的格局显示指标,包含以下内容: System uptime & IP address ( Private & public )Memory utilization ( Main memory , swap , available memory ).CPU utilization.Disk mount points.Disk I/O & read and write speeds.CPU load average , date and timeRunning processes including active and sleeping processes.Network bandwidth ( Including upload and download rates ).如何在 Linux 发行版上装置 Glances默认状况下不装置 Glances。让咱们看看如何在次要的 Linux 发行版中装置 Glances。 ...

January 9, 2023 · 2 min · jiezi

关于linux:使用人性化的Linux防火墙CFW阻止DDOS攻击

CFW (Cyber Firewall) 是一个人性化的 Linux 防火墙。它旨在帮助阻止拒绝服务攻打 (DDOS),同时能管制 Linux 零碎端口的开关。因为基于 Linux 原生运行,CFW 领有良好的软件兼容性。 该软件基于 iptables 和 ipset,应用 Python 开发,应用时倡议敞开发行版自带的防火墙 (如 firewalld、ufw) 防止抵触。 通过 CFW,您将可能: 通过自定义的规定主动封禁互联网中的歹意 ip,以避免拒绝服务攻打爱护 Linux 的所有端口蒙受 DDOS 攻打,而不仅仅是 Web 利用取得良好的软件兼容性,原生反对 Nginx、Caddy 等服务器反对配合 CDN 应用,应用 CDN 时请将 CDN 的 ip 段设置为 CFW 白名单管制开启或敞开 Linux 零碎的 TCP/UDP 端口取得敌对的命令行交互式体验背景Web 利用程序运行在简单的互联网中,随时可能面临歹意攻打,导致拒绝服务景象。封禁这些不敌对的 ip,CFW 正是为此而诞生。 CFW 的灵感最后来自宝塔面板的 Nginx 防火墙。然而,应用 Nginx 防火墙的过程中遇到诸多不顺。该防火墙仅针对 Web 利用 (通常是 80 和 443 端口) 进攻 CC 攻打,无奈爱护 Linux 服务器的其余端口。同时,该防火墙须要按月付费,并始终捆绑宝塔生态 (最新的宝塔面板甚至须要登录绑定手机实名制的账号),从而限度了软件自由度。咱们想在污浊的 Linux 中运行防火墙,并对所有端口失效,于是本人开发了一个。 ...

December 29, 2022 · 2 min · jiezi

关于linux:说透IO多路复用模型

作者:京东批发 石向阳在说IO多路复用模型之前,咱们先来大抵理解下Linux文件系统。在Linux零碎中,不论是你的鼠标,键盘,还是打印机,甚至于连贯到本机的socket client端,都是以文件描述符的模式存在于零碎中,诸如此类,等等等等,所以能够这么说,所有皆文件。来看一下零碎定义的文件描述符阐明: 从下面的列表能够看到,文件描述符0,1,2都曾经被零碎占用了,当系统启动的时候,这三个描述符就存在了。其中0代表规范输出,1代表规范输入,2代表谬误输入。当咱们创立新的文件描述符的时候,就会在2的根底上进行递增。能够这么说,文件描述符是为了治理被关上的文件而创立的零碎索引,他代表了文件的身份ID。对标windows的话,你能够认为和句柄相似,这样就更容易了解一些。 因为网上对linux文件这块的原理形容的文章曾经十分多了,所以这里我不再做过多的赘述,感兴趣的同学能够从Wikipedia翻阅一下。因为这块内容比较复杂,不属于本文遍及的内容,倡议读者另行自研,这里我十分举荐马士兵老师将linux文件系统这块,解说的真的十分好。 select模型此模型是IO多路复用的最晚期应用的模型之一,距今曾经几十年了,然而当初仍旧有不少利用还在采纳此种形式,可见其长生不老。首先来看下其具体的定义(来源于man二类文档): int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout);这里解释下其具体参数: 参数一:nfds,也即maxfd,最大的文件描述符递增一。这里之所以传最大描述符,为的就是在遍历fd_set的时候,限定遍历范畴。 参数二:readfds,可读文件描述符汇合。 参数三:writefds,可写文件描述符汇合。 参数四:errorfds,异样文件描述符汇合。 参数五:timeout,超时工夫。在这段时间内没有检测到描述符被触发,则返回。 上面的宏解决,能够对fd_set汇合(精确的说是bitmap,一个描述符有变更,则会在描述符对应的索引处理1)进行操作: FD_CLR(inr fd,fd_set* set) 用来革除形容词组set中相干fd 的位,即bitmap构造中索引值为fd的值置为0。 FD_ISSET(int fd,fd_set *set) 用来测试形容词组set中相干fd 的位是否为真,即bitmap构造中某一位是否为1。 FD_SET(int fd,fd_set*set) 用来设置形容词组set中相干fd的位,行将bitmap构造中某一位设置为1,索引值为fd。 FD_ZERO(fd_set *set) 用来革除形容词组set的全副位,行将bitmap构造全副清零。 首先来看一段服务端采纳了select模型的示例代码: //创立server端套接字,获取文件描述符 int listenfd = socket(PF_INET,SOCK_STREAM,0); if(listenfd < 0) return -1; //绑定服务器 bind(listenfd,(struct sockaddr*)&address,sizeof(address)); //监听服务器 listen(listenfd,5); struct sockaddr_in client; socklen_t addr_len = sizeof(client); //接管客户端连贯 int connfd = accept(listenfd,(struct sockaddr*)&client,&addr_len); //读缓冲区 char buff[1024]; //读文件操作符 fd_set read_fds; while(1) { memset(buff,0,sizeof(buff)); //留神:每次调用select之前都要从新设置文件描述符connfd,因为文件描述符表会在内核中被批改 FD_ZERO(&read_fds); FD_SET(connfd,&read_fds); //留神:select会将用户态中的文件描述符表放到内核中进行批改,内核批改结束后再返回给用户态,开销较大 ret = select(connfd+1,&read_fds,NULL,NULL,NULL); if(ret < 0) { printf("Fail to select!\n"); return -1; } //检测文件描述符表中相干申请是否可读 if(FD_ISSET(connfd, &read_fds)) { ret = recv(connfd,buff,sizeof(buff)-1,0); printf("receive %d bytes from client: %s \n",ret,buff); } }下面的代码我加了比拟具体的正文了,大家应该很容易看明确,说白了大略流程其实如下: ...

December 29, 2022 · 2 min · jiezi

关于linux:如何在Linux下使用密钥设置SSH无密码登录

SSH (Secure Shell) 密钥为咱们提供了登录 Linux 和 UNIX 的平安办法。当咱们应用 SSH 密钥拜访 Linux 零碎时,它也被称为无明码 SSH 身份验证。 在这篇文章中,咱们将学习如何在 Linux 中应用密钥设置无明码 SSH 身份验证。 试验筹备客户主机 (Rocky Linux) — SSH Client — 192.168.1.135近程主机 (Ubuntu 20.04) — 192.168.1.130(1) 应用 SSH -keygen 命令在客户主机上生成 SSH 密钥登录跳转主机,执行 ssh-keyen 命令,应用 rsa 算法生成公私钥对 $ ssh-keygen -t rsa此命令将提醒您输出公钥和私钥的门路,如果您想放弃默认门路,则按 enter 键,并在提醒设置明码短语时按 enter 键 ssh-keygen 命令的输入如下所示 留神: ssh-keygen 命令默认生成的密钥大小为 2048 位。如果你想扭转键的大小,那么应用-b 选项前面跟着 size (以位为单位),示例如下所示 $ ssh-keygen -t rsa -b 4096(2) 复制用户 Public Key 到近程 Linux 零碎应用 ssh-copy-id 命令将用户公钥拷贝到近程 linux 零碎用户受权密钥文件中。 ...

December 28, 2022 · 1 min · jiezi

关于linux:LinuxLinux-CenterOs-79中搭建Nacos-2x

引言这里依照官网介绍进行Linux 中的Nacos疾速搭建。整个装置次要依赖上面几个环境: 64 bit OS,反对 Linux/Unix/Mac/Windows,举荐选用 Linux/Unix/Mac。64 bit JDK 1.8+;下载 & 配置。Maven 3.2.x+;下载 & 配置。装置JDKSelect the appropriate JDK version and click Download.依据本人的操作系统进行相干的环境下载,因为集体应用的是Window宿主机+ 虚拟机装置Linux CetnerOs的经典搭配,所以下载的版本为最上面的版本: 勾选而后下载: 之后Oracle官网会提醒登录之后能力下载: 这个登录比拟让人厌恶,有时候会因为外网下载十分迟缓要等很久。集体从网上找到一个“帖子”,外面有国外网友分享了不登录Oracle下载JDK8相干包的镜像。 Java SE Development Kit 8 Downloads:https://www.oracle.com/java/technologies/downloads/#java8-windows原帖:download java from oracle without login (github.com) https://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/windows-i586/jdk-8u331-docs-all.ziphttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/linux-i586/jdk-8u331-linux-aarch64.rpmhttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/linux-i586/jdk-8u331-linux-aarch64.tar.gzhttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/linux-i586/jdk-8u331-linux-arm32-vfp-hflt.tar.gzhttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/linux-i586/jdk-8u331-linux-i586.rpmhttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/linux-i586/jdk-8u331-linux-i586.tar.gzhttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/linux-i586/jdk-8u331-linux-x64.rpmhttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/linux-i586/jdk-8u331-linux-x64.tar.gzhttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/unix-i586/jdk-8u331-macosx-x64.dmghttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/solaris-i586/jdk-8u331-solaris-sparcv9.tar.Zhttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/solaris-i586/jdk-8u331-solaris-sparcv9.tar.gzhttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/solaris-i586/jdk-8u331-solaris-x64.tar.Zhttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/solaris-i586/jdk-8u331-solaris-x64.tar.gzhttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/windows-i586/jdk-8u331-windows-i586.exehttps://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/windows-i586/jdk-8u331-windows-x64.exe相干依赖包下载之后,能够抉择Xftp等工具将包上传到Linux零碎,有了网友分享的源之后,咱们也能够在Linux中拉取相干镜像包即可: [zxd@localhost ~]$ wget https://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/linux-i586/jdk-8u331-linux-x64.tar.gz --2022-12-23 14:40:07-- https://javadl.oracle.com/webapps/download/GetFile/1.8.0_331-b09/165374ff4ea84ef0bbd821706e29b123/linux-i586/jdk-8u331-linux-x64.tar.gzResolving javadl.oracle.com (javadl.oracle.com)... 223.119.233.65, 2600:140e:6:9b9::3311, 2600:140e:6:987::3311Connecting to javadl.oracle.com (javadl.oracle.com)|223.119.233.65|:443... connected.HTTP request sent, awaiting response... 302 Moved TemporarilyLocation: https://sdlc-esd.oracle.com/ESD6/JSCDL/jdk/8u331-b09/165374ff4ea84ef0bbd821706e29b123/jdk-8u331-linux-x64.tar.gz?GroupName=JSC&FilePath=/ESD6/JSCDL/jdk/8u331-b09/165374ff4ea84ef0bbd821706e29b123/jdk-8u331-linux-x64.tar.gz&BHost=javadl.sun.com&File=jdk-8u331-linux-x64.tar.gz&AuthParam=1671750069_f11ee1690781cd0db9f8308ea2097081&ext=.gz [following]--2022-12-23 14:40:07-- https://sdlc-esd.oracle.com/ESD6/JSCDL/jdk/8u331-b09/165374ff4ea84ef0bbd821706e29b123/jdk-8u331-linux-x64.tar.gz?GroupName=JSC&FilePath=/ESD6/JSCDL/jdk/8u331-b09/165374ff4ea84ef0bbd821706e29b123/jdk-8u331-linux-x64.tar.gz&BHost=javadl.sun.com&File=jdk-8u331-linux-x64.tar.gz&AuthParam=1671750069_f11ee1690781cd0db9f8308ea2097081&ext=.gzResolving sdlc-esd.oracle.com (sdlc-esd.oracle.com)... 223.119.245.111, 2402:4f00:4001:1b6::b3b, 2402:4f00:4001:1a5::b3bConnecting to sdlc-esd.oracle.com (sdlc-esd.oracle.com)|223.119.245.111|:443... connected.HTTP request sent, awaiting response... 200 OKLength: 148003999 (141M) [application/x-gzip]Saving to: ‘jdk-8u331-linux-x64.tar.gz’100%[==============================================================================================================================================================================================================================================>] 148,003,999 1.15MB/s in 1m 57s 2022-12-23 14:42:05 (1.21 MB/s) - ‘jdk-8u331-linux-x64.tar.gz’ saved [148003999/148003999]下载实现之后,咱们进行解压缩,而后把JDK文件放到相干地位。 ...

December 25, 2022 · 5 min · jiezi

关于linux:windows的WSL2环境下安装Linux发行版debian

装置wsl2# cmd环境下查看wsl版本wsl -i -v 装置Linux发行版链接:https://pan.baidu.com/s/1VMcwgZ-yYhgY8dyfiDun_A?pwd=1234 提取码:1234 将下载后的文件后缀.appx改为.zip,而后解压间接执行debian.exe输出用户名guonan,明码guonan装置胜利!!!

December 23, 2022 · 1 min · jiezi