• [openEuler] OpenEuler的UKUI的图形界面安装
    UKUI是麒麟软件团队历经多年打造的一款Linux 桌面,主要基于 GTK 和 QT开发。与其它UI界面相比,UKUI更加注重易用性和敏捷度,各元件相依性小,可以不依赖其它套件而独自运行,给用户带来亲切和高效的使用体验。UKUI支持x86_64和aarch64两种架构1、UKUI的安装目前UKUI可以在终端上总结输入yum install ukui直接安装输出如下内容,一直根据提示按y,回车就好根据提示回车显示complete即安装完成2、然后安装字体库输入yum groupinstall fonts 进行字体库安装输出如下内容显示如下complete即安装成功3、设置开机默认使用图形界面在终端输入systemctl set-default graphical.target输出如下4、重启使用UKUI输入reboot重新启动
  • [知识分享] 4步教你学会使用Linux-Audit工具
    摘要:简单来讲audit是Linux上的审计工具,可以用来记录和监控对文件、目录、系统资源的更改;Audit无法直接增强系统的安全性,但是它可以用于发现违反系统安全政策的行为。本文分享自华为云社区《Linux-Audit工具使用简介》,作者: 云存储开发者支持团队。简单来讲audit是Linux上的审计工具,可以用来记录和监控对文件、目录、系统资源的更改;Audit无法直接增强系统的安全性,但是它可以用于发现违反系统安全政策的行为。1.    查看audit服务是否起来查看状态:systemctl status auditd.service开启auditd服务:service auditd start重启服务:service auditd restart / service auditd reload2.    配置需要监控的目录auditctl -w /var/crash/coredump-w path : 指定要监控的路径,上面的命令指定了监控的文件路径 var/crash/coredump-p : 指定触发审计的文件/目录的访问权限rwxa : 指定的触发条件,r 读取权限,w 写入权限,x 执行权限,a 属性(attr)配置方法A配置方法B (A方法失败)上述回显异常,需在audit规则内配置监控项。查看规则:auditctl –l(若查询不到,请重启节点-reboot)3.    查看日志到/var/log/audit目录下面。 敲这个命令行就可以:grep -rn 搜索的字符串*grep -rn core*4.    日志解析/var/crash/coredump 目录下创建了 test 文件。时间:2021-01-16 17:10:44/var/crash/coredump 目录下删除了 test 文件。时间:2021-01-16 17:12:23audit已经提供了一个更好的事件查看工具——ausearch,使用auserach -h查看下该命令的用法。日志参数解读参考:cid:link_1附录查看auditctl命令使用规则:auditctl –h查看定义的规则:auditctl –l清空定义的规则:auditctl -DCWD类型:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sec-audit_record_types时间戳转换工具:http://tool.chinaz.com/Tools/unixtime.aspx
  • [技术干货] Linux stat命令Blocks字段与IO Block字段的理解-转载
    Linux stat命令Blocks字段与IO Block字段的理解原因在之前了解文件系统的时候,为理解块与扇区的概念,用到了stat命令。关于这个命令输出的信息的文章有很多,其他字段是没有争议的,但是在一些文章中对Blocks与IO Block理解有错误。结论先说结论Blocks字段指的是512字节构成的块的个数,IO Block是指文件系统的块的大小一般为4096字节。它们关系如下I O   B l o c k = B l o c k s × 512 B IO\space Block = Blocks\times 512BIO Block=Blocks×512B网上有很多文章说Blocks字段指的是文件系统中块的个数,这个是错误的。实践是检验真理的唯一标准,下面我们就直接查看Linux的stat命令的源码验证一下。验证首先终端执行以下命令,搜索stat所在目录which stat1得到如下结果然后再搜索软件所在包dpkg -S /usr/bin/stat1发现是在coreutils包下去GNU的网站下载这个包然后解压缩,于src文件夹下和lib文件夹下分别查看stat.c这个源文件发现并没有与这两个字段相关的类型定义,这看似我们寻找失败了。但是经过一段时间摸索,在lib下的stat.c中包含了sys/stat.h头文件,我们想要找的答案很可能就在这里面利用清华大学镜像源加速,获取glibc,解压后在usr/include目录下终于找到了stat.h头文件查看内容,果然有一个名为stat的结构体,代码片段如下struct stat  {    unsigned int st_dev;        /* Device.  */    unsigned int st_ino;        /* File serial number.    */    unsigned int st_mode;        /* File mode.  */    unsigned int st_nlink;        /* Link count.  */    unsigned int st_uid;        /* User ID of the file's owner.    */    unsigned int st_gid;        /* Group ID of the file's group.*/    unsigned int st_rdev;        /* Device number, if device.  */    long int st_size;            /* Size of file, in bytes.  */    unsigned long int st_atime;        /* Time of last access.  */    unsigned long int st_mtime;        /* Time of last modification.  */    unsigned long int st_ctime;        /* Time of last status change.  */    unsigned int st_blksize;        /* Optimal block size for I/O.  */#define    _STATBUF_ST_BLKSIZE        /* Tell code we have this member.  */    int st_blocks;            /* Nr. of 512-byte blocks allocated.  */    unsigned int st_flags;    unsigned int st_gen;  };找到名st_blocks的结构体成员,左边的注释写着“512-byte blocks”,这显然说明stat命令的Blocks字段含义就是以512字节为单位的个数。为什么是512?因为早期的机械硬盘扇区大小为512字节,但现在无论SSD还是机械,存储单位都是4096字节的了,正好是512的整数倍。而IO Block是指文件系统中的块的大小,对应st_blksize成员,相当于8个512字节块(对于512字节扇区的磁盘来讲,在物理上表现为8个连续的扇区),即4096字节。而这个512字节的块究竟是物理块还是逻辑块?由于现在存储设备的发展,以及不同文档中有不同定义,这些东西的概念十分模糊,所以我并不建议把它理解成一个实际存在的块,而是作为一个基本单位。笔者认为在学习文件系统的时候只需要知道,文件系统中的块相当于8个这样的连续的基本单位组成就足够了。其他通过阅读代码可以发现在Linux中,stat命令所说的Size字段指的是文本大小,而不是文件实际占用大小。Size字段对应stat结构体st_size成员,该字段数值并不等于IO Block*Blocks(而Windows中是这样)。文件的实际占用空间应该为 文件系统的块大小*文件文件系统块的个数即T r u e S i z e = F i l e B l o c k × F i l e B l o c k N u m TrueSize = FileBlock \times FileBlockNumTrueSize=FileBlock×FileBlockNum————————————————版权声明:本文为CSDN博主「CairBin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_42759112/article/details/126249990
  • [技术干货] 【GDE】【OP环境】微服务后台日志查看指导
    前言:有一些小伙伴在客户现场布置了一套ADC的OP环境。在前端页面显示的报错也许会不全,这个时候就需要登录到后台去看日志,才能分析出是什么问题。以下为一些术语,帮助了解:OC:On Cloud,从字面上理解是要把应用构建和运行在云上。OP:On Premises,指部署在客户服务器上的环境,一般是在客户内部的局域网FS:FusionStage,华为的GDE微服务容器管理平台。也是俗称的“管理面”准备工作需要知道以下信息,才能进行后续操作:FS的登录地址FS登录账号密码登录虚拟机的密码虚拟机root权限的密码需要知道自己要看那个微服务的日志,如我有RPA管理中心的报错,那我就要去看adc-rpa的日志(可以看“模块与服务对照表”)以上信息如果不知道,要找给你装环境的人提供模块与服务对照表领域服务名模块错误码前缀描述编排adc-model编排引擎ADC.RT.MODELADC模型adc-trigger网络业务编排ADC.RT.TRIGGER表数据变更触发器(ADC2ModelBatch中的模型数据同步依赖此微服务)adc-model-batch编排引擎ADC.RT.MODBAT模型数据集中处理(模型数据归档、模型数据同步)adc-service资产服务组ADC.RT.SERVICE运行态逻辑流 (模型服务业务处理:模型服务、模型规则、脚本,翻译器)adc-app-mgt资产服务组ADC.RT.APPMGTapp运行态管理adc-app-mgt-web资产服务组 app管理运行态前端adc-batch资产服务组ADC.RT.BATCHExcel导入导出/文件服务adc-ui用户体验ADC.RT.UI运行态UI(页面、卡片)adc-ui-web用户体验-运行态前台adc-static(微服务名重复)用户体验ADC.RT.STC静态资源adc-intg编排引擎ADC.RT.INTG运行态集成服务adc-mobile终端服务ADC.RT.UI终端SPL引擎运行态微服务adc-mobile-web终端服务-终端SPL引擎运行态静态资源RPAadc-rpaRPAADC_RT_RPARPA运行态管理中心adc-rpa-webRPA-RPA运行态页面日志查看方法下面用查看adc-intg的日志作为例子。1、 找到intg的虚拟机节点1.1、 登录FS管理面管理面信息:访问链接:https://xx.xx.xx.xx:xxxx(如果不知道,要找装环境的人要访问地址)账号:xxxxxx密码:xxxxxx登录页面如下1.2、查看K8S应用部署1.3、搜索找到intg得知adc-intg在这两个节点:(每个环境都不一样,按照实际情况获取)10.151.37.1610.151.37.142.登录虚拟机节点2.1、下载MobaXterm需要下载一个MobaXterm去访问linux虚拟机(也可以去使用其他的工具,方法自定)MobaXterm官网下载地址:https://mobaxterm.mobatek.net/download.html2.2、安装完后,双击点开,新增Session配置完后,双击进入Linux虚拟机,输入密码:xxxxxx。输入密码时,屏幕不会显示密码,继续输入,完成enter即可当显示“Authorized users only, All activities may be monitored and reported”,则说明登录成功2.3、切换root用户控制台输入su root填入密码 xxxxx2.4、 找到intg的PID控制台输入:docker ps | grep intg以上图为例,52396c1bbe02 为pid2.5、进入docker容器控制台输入:docker exec -it 52396c1bbe02 bash2.6、查看日志tailf -n 200 /opt/mateinfo/logs/app/adc-intg.log某些linux镜像没有tailf 可以尝试tailtail -f -n 200 /opt/mateinfo/logs/app/adc-intg.log或者使用less, vi 命令都可以上图为日志,可以拿着这个日志去找华为工程师注意:intg在两个虚拟机节点上,因为系统是负载均衡,所以需要同时登录到两个节点查看。只登录一个节点,如果日志报在另外一个节点,就会miss掉。想要查看其他的微服务也是同样的操作。
  • [问题求助] Hyper-tuner_2.5.RC1_linux 任务采集失败
    【功能模块】在鲲鹏openlab , openEuler 20.03 (LTS-SP1)上安装Hyper-tuner_2.5.RC1【操作步骤&问题现象】1、新建任务-进程/线程性能分析, 采样类型:系统性能,进程性能,2、任务状态:任务采集失败,pidstat命令执行失败,请确认pidstat命令能否正常执行。3、后台可执行pidstat【截图信息】【日志信息】(可选,上传日志内容或者附件)2022-08-06 04:17:57 Sat|509023:281460682279808|process_sampling.py:137|sampling_task|CRITICAL|start the collect task2022-08-06 04:18:57 Sat|509023:281460682279808|process_sampling.py:147|sampling_task|WARNING|[ERROR] SysPerf.SysProcess.Collect.SampleStartError
  • [问题求助] Hyper-tuner_2.5.RC1_linux 安装失败
    卸载过旧版本才重新安装,安装报错:Create malluma user useradd: group malluma exists - if you want to add this user to that group, use -g.userdel: user 'malluma' does not exist  create_malluma:add user failed! 请问该如何解决
  • [问题求助] Hyper-tuner_2.5.RC1_linux 安装失败
    卸载过旧版本才重新安装,安装报错:Create malluma user useradd: group malluma exists - if you want to add this user to that group, use -g.userdel: user 'malluma' does not exist  create_malluma:add user failed! 请问该如何解决
  • [技术干货] 【故障注入第二十期】Linux OS相关故障-文件系统(下期)
    大家好,我突然发现有段时间没有更新帖子了,继续我们DemonCAT工具的使用介绍,这一期是我们关于注入文件系统故障方法的最后一期,一起来学习下吧!文件系统分区满持久化文件系统只读文件/设备丢失文件/设备忙文件系统inode资源耗尽硬链接数满loWait高OK,文件系统的故障注入方法,我们分三期为大家介绍到这,通过以上的学习,希望大家能有所收获,下一期我们向大家介绍系统管理方面的故障注入方法,敬请期待~
  • [交流吐槽] 第一章-环境配置
    # OpenHarmony 开发环境搭建 ## WSL + VSCode + DevEco 我并没有使用华为官方推荐的 Windows + Ubuntu 虚拟机开发的方式,因为我觉得过于繁琐,索性我就直接用微软的 WSL2 直接安装了 DevEco Device Tool,配合 Windows Terminal 使用,还是很舒服的,但是我不知道为什么华为默认只支持了 Bash,还不能修改默认安装位置?作为有文件洁癖的我的解压了官方安装包,修改了里面的安装脚本,还把默认支持的 Shell 从 `/bin/sh` 改为了 `/usr/bin/zsh`,这样就很舒服了。 然后就是初始化、编译一把梭了,结果出现了以下问题。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/17/1658035367799215219.png) Google 之后发现,原来是缺少了 [gn](https://github.com/timniederhausen/gn)(GN 是一个用来生成 Ninja 构建文件的工具),没啥好说的,再下载编译一下 gn 就行了。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/17/1658035387591629965.png) 结果还是报错: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/17/1658035413732213275.png) 这个问题我就没那么多时间陪你慢慢解决了,索性我直接换用了 Docker。希望华为自己也能优化一下这些工具的配置,简化繁琐的流程,同时也要给予开发者足够的个性化(只支持 Bash 这合适吗?)。 ## Docker 先搜索一下有没有官方镜像,看来是有的,就是可能有点老了。另外需要注意的是它的 tag 不是 `latest`,而是 `0.0.3`。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/17/1658035428419253135.png) 那就直接 pull 下来就好了,然后直接 run 一下容器就行了,另外还在里面配置了 ssh。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/17/1658035445682324873.png) 初始化、编译一个项目试试。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/17/1658035457066710484.png) OK,看来是没问题了,算是搭建好了吧。
  • [技术干货] sqlserver linux 2019设置端口【转载】
    sql server 2019 for linux 的默认端口为1433,今天突然想改端口.在ubuntu下用以前的老命令 sudo /opt/mssql/bin/mssql-conf set tcpport 1435 报错设置“tcpport”不受支持(The setting 'tcpport' is not supported.)。若要更改端口,按方法步骤运行命令即可:1.使用“network.tcpport”的“set”命令以根用户身份运行 mssql-conf 脚本:sudo /opt/mssql/bin/mssql-conf set network.tcpport <new_tcp_port>2.重启 SQL Server 服务:sudo systemctl restart mssql-server假如将tcp端口设置为1435,则终端运行sudo /opt/mssql/bin/mssql-conf set network.tcpport 1435.结果如图:以上就是【sqlserver linux 2019设置端口】的全部内容了转载https://www.home1024.com/article/sqlserver-linux-2019-change-port.html
  • [技术干货] Linux下使用vsftp搭建FTP服务器(附参数说明)【转载】
    本章主要介绍在Linux中搭建FTP服务器的过程,需要掌握的要点是配置文件的合理配置,需要的朋友可以参考下介绍本章主要介绍在Linux中搭建FTP服务器的过程,需要掌握的要点是配置文件的合理配置。知识点在linux中使用的FTP是vsftpFTP可以有三种登入方式分别是:• 匿名登录方式:不需要用户密码• 本地用户登入:使用本地用户和密码登入• 虚拟用户方式:也是使用用户和密码登入,但是该用户不是linux中创建的用户安装FTP使用YUM安装yum -y install vsftpd文件配置安装完之后在/etc/vsftpd/路径下会存在三个配置文件。vsftpd.conf: 主配置文件ftpusers: 指定哪些用户不能访问FTP服务器,这里的用户包括root在内的一些重要用户。user_list: 指定的用户是否可以访问ftp服务器,通过vsftpd.conf文件中的userlist_deny的配置来决定配置中的用户是否可以访问,userlist_enable=YES ,userlist_deny=YES ,userlist_file=/etc/vsftpd/user_list 这三个配置允许文件中的用户访问FTP。查看主配置文件的默认配置cat /etc/vsftpd/vsftpd.conf |grep -v '^#';anonymous_enable=YES #允许匿名用户local_enable=YES #允许使用本地用户账号登陆write_enable=YES #允许ftp用户写数据connect_from_port_20=YES #通过20端口传输数据anonymous_enable=YESlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=YESpam_service_name=vsftpdtcp_wrappers=YESchroot_local_user=yes其它的一些参数说明包括:ftpd_banner=welcome to ftp service :设置连接服务器后的欢迎信息idle_session_timeout=60 :限制远程的客户机连接后,所建立的控制连接,在多长时间没有做任何的操作就会中断(秒)data_connection_timeout=120 :设置客户机在进行数据传输时,设置空闲的数据中断时间accept_timeout=60 设置在多长时间后自动建立连接connect_timeout=60 设置数据连接的最大激活时间,多长时间断开,为别人所使用;max_clients=200 指明服务器总的客户并发连接数为200max_per_ip=3 指明每个客户机的最大连接数为3local_max_rate=50000(50kbytes/sec) 本地用户最大传输速率限制anon_max_rate=30000匿名用户的最大传输速率限制pasv_min_port=端口pasv-max-prot=端口号 定义最大与最小端口,为0表示任意端口;为客户端连接指明端口;listen_address=IP地址 设置ftp服务来监听的地址,客户端可以用哪个地址来连接;listen_port=端口号 设置FTP工作的端口号,默认的为21local_root=path 无论哪个用户都能登录的用户,定义登录帐号的主目录, 若没有指定,则每一个用户则进入到个人用户主目录;chroot_local_user=yes/no 是否锁定本地系统帐号用户主目录(所有);锁定后,用户只能访问用户的主目录/home/user;chroot_list_enable=yes/no 启用不锁定用户在主目录的名单chroot_list_file=/etc/vsftpd/chroot_list指定列表文件userlist_enable=YES/NO 是否加载用户列表文件;userlist_deny=YES 表示上面所加载的用户允许登录;userlist_file=/etc/vsftpd/user_list 指定列表文件创建FTP连接用户创建用户ftpuseruseradd ftpusr设置用户只能ftp不能登入usermod -s /sbin/nologin ftpuser设置用户密码passwd ftpusr用户的默认的家目录在/home下,当前用户就只能访问家目录。修改用户的家目录位/mntusermod -d /mnt ftpuser启动FTP服务service vsftpd start测试在/mnt目录下创建一个测试文件touch /mnt/test连接ftp解决普通的FTP无法登入问题linux默认是带安全机制,使用普通的ftp 21端口无法连接到ftp服务器,使用sftp就可以。这个时候需要关闭selinux,修改配置文件需要重启服务器。vim /etc/sysconfig/selinux改成selinux=disabled不重启服务器的方法:setenforce 0setenforce 1 :设置SELinux 成为enforcing模式setenforce 0 :设置SELinux 成为permissive模式查看SELinux状态/usr/sbin/sestatus -v转载自https://www.jb51.net/article/159200.htm
  • [技术干货] 中国第一个桌面操作系统openKylin根社区诞生
    6月24日,openKylin社区正式发布,这也是中国首个桌面操作系统根社区。openKylin社区旨在以“共创”为核心,在开源、自愿、平等、协作的基础上,通过开源、开放的社区合作,构建桌面操作系统顶级开源社区。openKylin社区基于麒麟软件数十年的操作系统研发成果、十多年的开源社区开发和建设经验,联合国家工信安全中心、普华基础软件、中科方德、麒麟信安、凝思软件、一铭软件、中兴新支点、元心科技、中国电科32所、技德系统、北京麟卓、先进操作系统创新中心等产业同行,共同建设。中国工程院沈昌祥院士、倪光南院士、桂卫华院士、郑纬民院士、王耀南院士、廖湘科院士,中国科学院王怀民院士等科学巨匠,均受邀出席发布会并致辞,都高度肯定了openKylin社区对于中国发展开源技术的战略意义,呼吁更多的行业伙伴加入,携手打造“产业主导、平台自主、技术先进、生态丰富”的桌面操作系统根社区。发布会上,openKylin社区为麒麟软件有限公司等首批13家理事会成员单位颁发了证书。openKylin社区理事长朱晨表示,建设openKylin的初心,就是打破瓶颈、推动我国Linux开源技术及其软硬件生态繁荣发展,希望有更多的企业和开发者加入进来,一起将openKylin打造成世界顶级的开源社区。所谓根社区,是指基于Linux内核和其他开源组件而构建,不依赖上游发行版的社区。受国际形势的影响,开源生态现在也开始有了国界,SUSE、RedHat、Ubuntu就纷纷对俄罗斯企业停止支持和提供专业服务。越来越多的事实证明,开源不等于无国界,也不等于绝对安全。麒麟操作系统一般指银河麒麟。银河麒麟(KylinOS)原是在“863计划”和国家核高基科技重大专项支持下,国防科技大学研发的操作系统,后由国防科技大学将品牌授权给天津麒麟,后者在2019年与中标软件合并为麒麟软件有限公司,继续研制的Linux操作系统。2002年,银河麒麟作为863计划的项目启动,由国防科技大学研发;2006年银河麒麟初版完成。整合了mach、FreeBSD、Linux、Windows四种系统的优势。2009年,国家“核高基”重大专项启动,银河麒麟继续迭代,银河麒麟3.0开始使用Linux作为内核。图片中标麒麟的前身COSIX Linux(中软Linux)由中国计算机软件与技术服务总公司开发(注意与1989年同为中软开发的独立类UNIX操作系统COSIX系统不同)。最初发布于1999年[11] 。2004年2月,中标普华Linux 1.0(NeoShine)发布。2010年12月16日中标普华Linux和国防科技大学的银河麒麟合并为中标麒麟。2014年12月,天津麒麟成立,继承银河麒麟品牌。2020年4月8日,中标软件和天津麒麟合并,共同开发银河麒麟和中标麒麟。文章来源:https://www.cnbeta.com/articles/tech/1284807.htm
  • [技术干货] Linus Torvalds:最庆幸的是 30 年后,Linux 不是一个“死”项目[转载]
    在从事 Linux 工作30年后,Linus Torvalds 仍然对他创造的开源操作系统及其未来的创新前景充满热情。今天,Linux 操作系统是云计算、边缘计算、嵌入式和物联网(IoT)技术的基础,使数十亿设备的运行成为可能。Linux 是一个由众多贡献者参与的开源社区开发的,每 6-10 周发布更新一次核心的版本,称为 Linux 内核。每个新的主要内核更新都是由 Torvalds 本人发布的。不久前,Torvalds 与他的老朋友 Dirk Hohndel(目前是 Cardano 基金会的首席开源官)进行了关于 Linux 现状的谈话。谈话内容包括开源安全状况、新技术和疫情对 Linux 发展的影响。在2022年开源峰会活动上发言Torvalds 指出,毫无疑问,新冠疫情对 Linux 社区的许多人产生了负面影响。然而,这种消极影响并没有影响 Linux 的开发。“在各种封锁的头几个月,我们的生产力实际上还提升了,因为我们可以通过通过电子邮件工作,而且大多数人都在居家办公”,Torvalds 说道。枯燥的 Linux 内核开发过程是如何进行的据 Torvalds 说,至少在过去 15 年里,Linux 内核的开发过程一直保持着相对不变的状态。2005 年,Torvalds 创建了开源的 Git 版本控制系统,以帮助实现更快、更优化的开发方法。今天,Git 是所有开源开发背后的主要技术之一,为 GitHub 代码服务等提供动力。“我们有相同的流程和相同的发布时间表,从这点上来说,内核开发一直是按部就班的,看起来并不令人兴奋,而这正是我认为大家所想要的”,Torvalds 说道,“大家希望有一个稳定的开发过程,这样人们就不会对所有基础设施的变化感到不安。”虽然开发过程是枯燥和可预测的,但 Torvalds 说,在从事 Linux 工作 30 多年后,他仍然感到惊讶和高兴,因为有许多新东西进入了 Linux 内核,使其完成了许多创新。Torvalds 说:“我个人最庆幸的事情之一就是 Linux 没有变成一个死项目。”Rust 即将进入 Linux在物理世界中,当金属上出现锈迹时,通常是年龄和腐烂的标志,但“Rust”(中文直译为铁锈)被纳入 Linux 的情况却并非如此。在即将到来的 Linux 的变化中,包括了用开源的 Rust 编程语言编写的代码。Torvalds 说,Rust 可能会被纳入下一个 Linux 内核版本。此前,Linux 大多是用 C 编程语言编写的。Rust 与 C 语言不同,它能更好地利用和保护计算内存资源。但 Torvalds 也表示,Linux 内核打算尝试 Rust 的方式比较有限。他表示,25 年前,Linux 内核也曾反对过使用 C++ 编程语言的想法,这一努力最终以失败告终。Torvalds 表示,技术人员希望做一些新的和有趣的事情,而他认为有时在技术上“少折腾”也有很大的意义。开源安全永远不会是 100%安全是最近开源社区经常讨论的话题,特别是在各种开源峰会活动中。Linux 基金会的 OpenSSF(开源安全基金会)最近透露,它将花费 1.5 亿美元来保护开源软件的安全。之前也有相关的开源报告指出,人们对开源安全总体上缺乏信心。Torvalds 并不指望包括 Linux 内核在内的开源软件能够 100% 安全和没有漏洞。Torvalds 说:“错误会发生,如果它们不发生在硬件上,就会发生在软件上,如果它们不发生在你的软件上,就会发生在别人的软件上。试图做好安全工作的唯一方法是构建多层安全防御措施。”Torvalds 还强调,Linux 内核只是整个应用堆栈中的一层。他解释说,在内核内部,已经有多个安全层,用于程序的不同部分。对于正在构建整个应用堆栈的开发者来说,堆栈中的每一层都需要有一些安全概念,仔细想想,如果有安全漏洞该怎么办,如果开发者正在开发的应用代码的上一层或下一层有漏洞该怎么办。“任何认为能做到 100% 安全的人,或许都活在理想世界里,而这并不现实。”Torvalds 说道。————————————————版权声明:本文为CSDN博主「开源头条」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/csdnopensource/article/details/125440047
  • [技术干货] 【Linux】之【内存】相关的命令&amp;&amp;解析以及内存相关的问题[free......[转载]
    一、内存相关命令1、free – 显示系统内存使用量情况free命令的功能是显示系统内存使用量情况,包含物理和交换内存的总量、使用量和空闲量情况。语法格式free [参数]1常用参数参数    解析-b    以Byte显示内存使用情况-k    以kb为单位显示内存使用情况-m    以mb为单位显示内存使用情况-g    以gb为单位显示内存使用情况-s    持续显示内存-t    显示内存使用总合-h    以易读的单位方式显示内存使用情况参考实例以默认的容量单位显示内存使用量信息:[root@root ~]# free              total        used        free      shared  buff/cache   availableMem:       65353144     8354168    53956676       39716     3042300    56522796Swap:             0           0           0以MB位单位显示内存使用量信息:[root@root ~]# free -m              total        used        free      shared  buff/cache   availableMem:          63821        8154       52696          38        2971       55202Swap:             0           0           0以易读的单位显示内存使用量信息:[root@root ~]# free -h              total        used        free      shared  buff/cache   availableMem:            62G        8.0G         51G         38M        2.9G         53GSwap:            0B          0B          0B以易读的单位显示内存使用量信息,每个10秒刷新一次:[root@root ~]# free -hs 10              total        used        free      shared  buff/cache   availableMem:            62G        8.0G         51G         38M        2.9G         53GSwap:            0B          0B          0B              total        used        free      shared  buff/cache   availableMem:            62G        8.0G         51G         38M        2.9G         53GSwap:            0B          0B          0B字段解析#total:物理内存大小,就是机器实际的内存#used:已使用的内存大小,这个值包括了cached和应用程序实际使用的内存#free:未被使用的内存大小(俗称:空闲内存)#shared:共享内存大小,是进程间通信的一种方式#buffers:被缓冲区占用的内存大小#cached:被缓存占用的内存大小2、cat /proc/meminfomeminfo中包含所有的内存相关信息。[root@root ~]# cat /proc/meminfo MemTotal:       65353144 kBMemFree:        53956672 kBMemAvailable:   56523144 kBBuffers:           49180 kBCached:          2889216 kBSwapCached:            0 kBActive:          7603092 kBInactive:        2691064 kBActive(anon):    7356648 kBInactive(anon):    38800 kBActive(file):     246444 kBInactive(file):  2652264 kBUnevictable:           0 kBMlocked:               0 kBSwapTotal:             0 kBSwapFree:              0 kBDirty:                36 kBWriteback:             0 kBAnonPages:       7360372 kBMapped:           764500 kBShmem:             39684 kBSlab:             306384 kBSReclaimable:     104216 kBSUnreclaim:       202168 kBKernelStack:       22464 kBPageTables:        30644 kBNFS_Unstable:          0 kBBounce:                0 kBWritebackTmp:          0 kBCommitLimit:    32676572 kB #系统中可以申请的虚拟内存最大值Committed_AS:   27883644 kB #系统已经申请的虚拟内存VmallocTotal:   34359738367 kBVmallocUsed:      525916 kBVmallocChunk:   34325372924 kBHardwareCorrupted:     0 kBAnonHugePages:   4573184 kBCmaTotal:              0 kBCmaFree:               0 kBHugePages_Total:       0HugePages_Free:        0HugePages_Rsvd:        0HugePages_Surp:        0Hugepagesize:       2048 kBDirectMap4k:      771124 kBDirectMap2M:    11393024 kBDirectMap1G:    56623104 kB二、内存相关问题1、内存泄漏解析:如果程序运行过程中不能正常回收不用的内存,那么一段时间就会导致内存增长很高,最终导致系统不可以用,这种情况称为内存泄漏。内存泄漏可以使用内存分享工具valgrind进行内存分析。[root@root ~]# yum -y install valgrind[root@root ~]# valgrind --tool=memcheck  ./mem_leak -t==1738== Memcheck, a memory error detector==1738== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.==1738== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info==1738== Command: ./mem_leak -t==1738== ==1738== ==1738== HEAP SUMMARY:==1738==     in use at exit: 4 bytes in 1 blocks==1738==   total heap usage: 1 allocs, 0 frees, 4 bytes allocated==1738== ==1738== LEAK SUMMARY:==1738==    definitely lost: 4 bytes in 1 blocks==1738==    indirectly lost: 0 bytes in 0 blocks==1738==      possibly lost: 0 bytes in 0 blocks==1738==    still reachable: 0 bytes in 0 blocks==1738==         suppressed: 0 bytes in 0 blocks==1738== Rerun with --leak-check=full to see details of leaked memory==1738== ==1738== For counts of detected and suppressed errors, rerun with: -v==1738== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)2、虚拟内存、物理内存内存的最小单位为页(paging),默认情况一页是4K。虚拟内存与物理内存  当进程向操作系统申请10G内存时,操作系统收到请求后先进行自我检查,经过分析后决定给予进程10G内存空间,但是系统此时并没有真正给进程10G,系统会判断进程运行实际需要的内存大小,比如该进程需要300M就够用了,所以系统只划分300M内存给进程运行,这种实际分配的内存称为物理内存。[root@root ~]# ps aux|head -1USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND#VSZ 虚拟内存#RSS 物理内存3、内存溢出内存溢出(out of memory,OOM),当进程运行向系统申请内存时,系统没有更多的进程分配给该进程了,就会出现内存溢出。内存溢出后系统会杀掉系统中的一些进程来释放内存,通常OOM Killer杀死的都是占用内存较多的服务,直到内存够用为止,所以内存溢出的直观现象通常是某些服务异常或宕机。当发生内存溢出后可以通过dmesg命令或者通过/var/log/messages来快速确定。[root@root ~]# dmesg |tail -5[ 3613.796390] [ 1277]     0  1277    28983        1      16      217             0 bash[ 3613.796393] [ 1446]     0  1446    29003        0      16      221             0 bash[ 3613.796395] [ 1546]     0  1546   774216   213712    1439   513149             0 python[ 3613.796396] Out of memory: Kill process 1546 (python) score 912 or sacrifice child[ 3613.796422] Killed process 1546 (python) total-vm:3096864kB, anon-rss:854848kB, file-rss:0kB, shmem-rss:0kB[root@root ~]# cat /proc/sys/vm/panic_on_oom [root@root ~]# echo 1 > /proc/sys/vm/panic_on_oompanic_on_oom该参数的值共有三个选项:0是触发oom killer进行杀进程处理(/proc/sys/vm/oom_kill_allocating_task默认值为0,结束占用内存多的进程;如果设置为1,就杀死当前申请内存的进程)2是直接触发kernel panic(类似于Windows的蓝屏),此时系统开发人员可以连接进行debug,但是对其他人并没有什么用。更多希望系统快速重启(/proc/sys/kernel/panic设置多少秒后重启)1是根据不同情况会有不同处理;4、Overcommit一般情况下,进程并不会一次用光申请的内存,所以操作系统为了提高内存使用率,会向进程“超卖”内存,以便能响应更多的进程内存申请。但是为了保证程序的稳定运行,系统并不会无限制响应内存申请,这样可以防止内存申请过多,导致系统本身内存空间不足而无法正常运行。Linux系统中使用OverCommit的方式控制内存的申请。内核参数overcommit_memory 内存分配策略可选值:0、1、2。0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,引发OOM。1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。2, 表示内核不允许进程申请超过系统设置大小的内存空间。在这种模式下,系统设置的可申请内存空间大小为:Swap+RAM*(“/proc/sys/vm/overcommit_ratio”/100)说明:/proc/sys/vm/overcommit_ratio就是系统最大可以分配内存的百分比,默认是50.总结 相关文章【Linux】之【CPU】相关的命令及解析[lscpu、mpstat]【Linux】之【内存】相关的命令&&解析以及内存相关的问题[free、meminfo、内存泄漏、内存溢出、Overcommit]【Linux】之【磁盘】相关的命令及解析[df、du、iostat、iotop]【Linux】之【网络】相关的命令及解析[ethtool、nload、nethogs、iftop、iptraf、ifstat]【Linux】综合性命令及解析【top、htop、vmstat、dstat、glances、sar】【Linux】系统如何查看服务器带宽及网络使用情况原文链接:https://blog.csdn.net/liu_chen_yang/article/details/125146057
  • [技术干货] 在 Linux 中调试程序执行的 Strace 示例[转载]
    链接:https://bbs.huaweicloud.com/blogs/354287Strace 是一个调试工具,可以帮助您解决问题。Strace 监控特定程序的系统调用和信号。当您没有源代码并想调试程序的执行时,它会很有帮助。strace 为您提供二进制文件从头到尾的执行顺序。本文解释了 7 个 strace 示例以帮助您入门。1. 跟踪可执行文件的执行您可以使用 strace 命令来跟踪任何可执行文件的执行。以下示例显示了 Linux ls 命令的 strace 输出。$ strace ls execve("/bin/ls", ["ls"], [/* 21 vars */]) = 0 brk(0) = 0x8c31000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap2(NULL, 8192, PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78c7000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=65354, ...}) = 0 ... ... ...2. 使用选项 -e 跟踪可执行文件中的特定系统调用默认情况下,strace 显示给定可执行文件的所有系统调用。要仅显示特定的系统调用,请使用 strace -e 选项,如下所示。$ strace -e open ls open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib/libselinux.so.1", O_RDONLY) = 3 open("/lib/librt.so.1", O_RDONLY) = 3 open("/lib/libacl.so.1", O_RDONLY) = 3 open("/lib/libc.so.6", O_RDONLY) = 3 open("/lib/libdl.so.2", O_RDONLY) = 3 open("/lib/libpthread.so.0", O_RDONLY) = 3 open("/lib/libattr.so.1", O_RDONLY) = 3 open("/proc/filesystems", O_RDONLY|O_LARGEFILE) = 3 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3 Desktop Documents Downloads examples.desktop libflashplayer.so Music Pictures Public Templates Ubuntu_OS Videos上面的输出只显示了 ls 命令的 open 系统调用。在 strace 输出的末尾,它还显示 ls 命令的输出。如果要跟踪多个系统调用,请使用“-e trace=”选项。以下示例显示了 open 和 read 系统调用。$ strace -e trace=open,read ls /home open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib/libselinux.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\3\3\1\260G004"..., 512) = 512 open("/lib/librt.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\3\3\1\300\30004"..., 512) = 512 .. open("/lib/libattr.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\3\3\1\360\r004"..., 512) = 512 open("/proc/filesystems", O_RDONLY|O_LARGEFILE) = 3 read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 1024) = 315 read(3, "", 1024) = 0 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 open("/home", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3 bala3. 使用选项 -o 将跟踪执行保存到文件以下示例将 strace 输出存储到 output.txt 文件。$ strace -o output.txt ls Desktop Documents Downloads examples.desktop libflashplayer.so Music output.txt Pictures Public Templates Ubuntu_OS Videos $ cat output.txt execve("/bin/ls", ["ls"], [/* 37 vars */]) = 0 brk(0) = 0x8637000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap2(NULL, 8192, PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7860000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=67188, ...}) = 0 ... ...4. 使用选项 -p 在正在运行的 Linux 进程上执行 Strace您可以使用进程 ID 在已经运行的程序上执行 strace。首先,使用ps 命令识别程序的 PID 。例如,如果要对当前正在运行的 firefox 程序执行 strace,请确定 firefox 程序的 PID。$ ps -C firefox-bin PID TTY TIME CMD 1725 ? 00:40:50 firefox-bin使用如下所示的 strace -p 选项来显示给定进程 ID 的 strace。$ sudo strace -p 1725 -o firefox_trace.txt $ tail -f firefox_trace.txt现在 firefox 进程的执行跟踪将被记录到 firefox_trace.txt 文本文件中。您可以跟踪此文本文件以查看 firefox 可执行文件的实时跟踪。当您的用户 ID 与给定进程的用户 ID 不匹配时,Strace 将显示以下错误。$ strace -p 1725 -o output.txt attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted Could not attach to process. If your uid matches the uid of the target process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf5. 使用选项 -t 打印每个跟踪输出行的时间戳要打印每个 strace 输出行的时间戳,请使用选项 -t,如下所示。$ strace -t -e open ls /home 20:42:37 open("/etc/ld.so.cache", O_RDONLY) = 3 20:42:37 open("/lib/libselinux.so.1", O_RDONLY) = 3 20:42:37 open("/lib/librt.so.1", O_RDONLY) = 3 20:42:37 open("/lib/libacl.so.1", O_RDONLY) = 3 20:42:37 open("/lib/libc.so.6", O_RDONLY) = 3 20:42:37 open("/lib/libdl.so.2", O_RDONLY) = 3 20:42:37 open("/lib/libpthread.so.0", O_RDONLY) = 3 20:42:37 open("/lib/libattr.so.1", O_RDONLY) = 3 20:42:37 open("/proc/filesystems", O_RDONLY|O_LARGEFILE) = 3 20:42:37 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3 20:42:37 open("/home", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3 bala6. 使用选项 -r 打印系统调用的相对时间Strace 还可以选择打印每个系统调用的执行时间,如下所示。$ strace -r ls 0.000000 execve("/bin/ls", ["ls"], [/* 37 vars */]) = 0 0.000846 brk(0) = 0x8418000 0.000143 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 0.000163 mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb787b000 0.000119 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) 0.000123 open("/etc/ld.so.cache", O_RDONLY) = 3 0.000099 fstat64(3, {st_mode=S_IFREG|0644, st_size=67188, ...}) = 0 0.000155 mmap2(NULL, 67188, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb786a000 ... ...7.使用选项-c生成系统调用的统计报告使用选项 -c,strace 为执行跟踪提供有用的统计报告。以下输出中的“调用”列指示了该特定系统调用执行了多少次。$ strace -c ls /home bala % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- -nan 0.000000 0 9 read -nan 0.000000 0 1 write -nan 0.000000 0 11 open -nan 0.000000 0 13 close -nan 0.000000 0 1 execve -nan 0.000000 0 9 9 access -nan 0.000000 0 3 brk -nan 0.000000 0 2 ioctl -nan 0.000000 0 3 munmap -nan 0.000000 0 1 uname -nan 0.000000 0 11 mprotect -nan 0.000000 0 2 rt_sigaction -nan 0.000000 0 1 rt_sigprocmask -nan 0.000000 0 1 getrlimit -nan 0.000000 0 25 mmap2 -nan 0.000000 0 1 stat64 -nan 0.000000 0 11 fstat64 -nan 0.000000 0 2 getdents64 -nan 0.000000 0 1 fcntl64 -nan 0.000000 0 2 1 futex -nan 0.000000 0 1 set_thread_area -nan 0.000000 0 1 set_tid_address -nan 0.000000 0 1 statfs64 -nan 0.000000 0 1 set_robust_list ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000000 114 10 total
总条数:1204 到第 页
上滑加载中