Linux Kernel

Linux中的文件和目录结构详解

怎甘沉沦 提交于 2020-08-17 19:23:23
    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux目录结构的相关知识。   当在使用Linux的时候,如果您通过ls –l / 就会发现,在/下包涵很多的目录,比如etc、usr、var、bin ... ... 等目录,而在这些目录中,我们进去看看,发现也有很多的目录或文件。文件系统在Linux下看上去就象树形结构,所以我们可以把文件系统的结构形象的称为 树形结构。   文件系统的是用来组织和排列文件存取的,所以它是可见的,在Linux中,我们可以通过ls等工具来查看其结构,在Linux系统中,我们见到的都是树形结构;比如操作系统安装在一个文件系统中,它表现为由/ 起始的树形结构。linux文件系统的最顶端是/,我们称/为Linux的root,也就是 Linux操作系统的文件系统。Linux的文件系统的入口就是/,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。   由于linux是开放源代码,各大公司和团体根据linux的核心代码做各自的操作,编程。这样就造成在根下的目录的不同。这样就造成个人不能使用他人的linux系统的PC。因为你根本不知道一些基本的配置

一行代码隐藏Linux进程

左心房为你撑大大i 提交于 2020-08-17 16:00:41
总有朋友问隐藏Linux进程的方法,我说你想隐藏到什么程度,是大隐于内核,还是小隐于用户。 网上通篇论述的无外乎hook掉procfs或者类似的用户态方案,也都难免长篇大论,我说,这些场面都太大了,太复杂了。对于希望马上看到效果的而言,看到这么一堆复杂的东西,大概率望而却步。 本文介绍一种将Linux进程小隐于用户的非常规方法,仅仅一行代码: 修改掉进程的pid即可。 注意是小隐,所以,不值得反制,逗一下高级会议工程师搞个恶作剧玩玩得了。 target -> pid = 0x7fffffff ; 完整的脚本如下: #!/usr/bin/stap -g # hide.stp global pid ; function hide ( who:long ) % { struct task_struct *target ; target = pid_task ( find_vpid ( STAP_ARG_who ) , PIDTYPE_PID ) ; target- > pid = 0x7fffffff ; % } probe begin { pid = $1 hide ( pid ) ; exit ( ) ; } 来来来,试一下: [ root@localhost system ] # ./tohide & [ 1 ] 403 [ root@localhost system ] # .

ARM64 Linux Kernel 5.7无法GDB调试问题

℡╲_俬逩灬. 提交于 2020-08-17 02:48:38
Linux主线Kernel刚发布了5.7,同步上去后,我的gdb调试功能异常了,加载内核一堆错误: FD: warning: vmlinux: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0000000 BFD: warning: vmlinux: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0000000 BFD: warning: vmlinux: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0000000 BFD: warning: vmlinux: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0000000 BFD: warning: vmlinux: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0000000 BFD: warning: vmlinux: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0000000 BFD: warning: vmlinux: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0000000 BFD: warning: vmlinux:

Linus Torvalds:Linux 内核、社区多元化和开发者的未来

放肆的年华 提交于 2020-08-16 17:45:13
根据外媒 ZDNet 的报道,在刚刚举行的 Linux 基金会开源峰会上,VMware 的首席开源官 Dirk Hohndel 与 Linux 的创造者 Linus Torvalds 展开了内容广泛的对话。 Hohndel 从 Linux kernel 5.8 的版本大小聊起,他想知道这个大版本是否与疫情期间开发人员都在家工作有关。长期远程办公的 Torvalds 认为这只是一个巧合,恰好几组功能同时完成罢了。他还表示这次疫情对 Linux 发展的影响不大,“Linux 社区非常有趣的一件事是,它一直是基于电子邮件和远程的,我们聚在一起的机会很少。” 前段时间我们曾报道过,Linus Torvalds 为自己的设备切换到了 AMD 处理器,现在这台机器上正运行着 Linux kernel 5.8 的第一个候选发行版。Torvalds 表示一度担心风扇噪音问题,但实际上运行效果还不错。在这台自己新配置的计算机上,他的 “’allmodconfig’ 测试版本比以前快三倍”。这对 Torvalds 来说很重要,因为他每天要完成 20 至 30 项 pull requests,计算机也需要相当的能力。 近期关于种族和多元化的大讨论也出现在了此次谈话中。Hohndel 说自己发现 VMware 社区和 CNCF 中的黑人贡献者和领导者数量都有大幅增长,但他没在 Linux 中看到这种情况

Linux内核 TCP/IP、Socket参数调优

偶尔善良 提交于 2020-08-16 11:42:19
/proc/sys/net目录    所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),例如下面这些重要的参数: 参数(路径 + 文件) 描述 默认值 优化值 /proc/sys/net/core/rmem_default 默认的TCP数据接收窗口大小(字节)。 229376 256960 /proc/sys/net/core/rmem_max 最大的TCP数据接收窗口(字节)。 131071 513920 /proc/sys/net/core/wmem_default 默认的TCP数据发送窗口大小(字节)。 229376 256960 /proc/sys/net/core/wmem_max 最大的TCP数据发送窗口(字节)。 131071 513920 /proc/sys/net/core/netdev_max_backlog 在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。 1000 2000 /proc/sys/net/core/somaxconn 定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。 128 2048 /proc/sys/net/core/optmem_max 表示每个套接字所允许的最大缓冲区的大小。

Hacker News 简讯 2020-08-14

℡╲_俬逩灬. 提交于 2020-08-14 04:23:04
最后更新时间: 2020-08-14 04:01 Epic Games has filed legal papers in response to Apple [pdf] - (unrealengine.com) Epic Games已提交法律文件回应苹果[pdf] 得分:152 | 评论:76 Parents are 5X as Worried about Infection and School than Work and Paying Bills - (interest.com) 父母对感染和上学的担忧是工作和支付账单的5倍 得分:81 | 评论:51 Google Update Tanks Traffic - (painscience.com) 谷歌更新坦克流量 得分:112 | 评论:62 Apple just kicked Fortnite off the App Store - (theverge.com) 苹果刚刚把Fortnite踢出了应用商店 得分:114 | 评论:3 YC Startup School: Build Sprint and Equity-Free Grants - (ycombinator.com) YC创业学校:建立Sprint和无股权资助 得分:98 | 评论:17 Why is there only one Snap Store? -

程序员真香定律:源码即设计

a 夏天 提交于 2020-08-13 10:34:34
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 我们经常谈论架构,讨论设计,却甚少关注实现和代码本身,架构和设计固然重要,但要说代码本身不重要,我不同意,Robert C.Martin大叔也不同意,Martin认为“源码即设计”。 在讨论具体的实施细则之前,我们不妨讨论一下什么是好代码?萝卜特 C.Martin认为:衡量代码质量的唯一标准是:WTF/min,也就是review代码的时候每分钟说“握草”的次数。这个定义虽有辱斯文,但粗野中不失奔放,调皮中又蕴含哲理。 好的代码如同文笔优美的散文,行云流水,赏心悦目,阅读的时候,如沐春风,带给人愉悦与启迪。 好的代码犹如构思精巧的小说,它或许不够平铺直述,却足够引人入胜,读到最后,你会豁然开朗,卧槽,原来是这样的啊,那一刻,你会觉得过程中的曲折和探索都是值得的。 好的代码,透过一个个函数,你仿佛可以窥视到作者有趣的灵魂;透过一行行代码,你仿佛在与一个充满智慧的朋友聊天,她总是条理清晰,逻辑严谨,有条不紊,娓娓道来。 而坏的代码,犹如病毒,它不仅瘫痪你的程序,还有很强的传播效应,等到它扩散开来,神仙难治。 坏的代码,像一个泥团,又或者像一座屎山,阅读的时候,你仿佛被困于黑暗的迷宫,又仿佛在跟一个絮絮叨叨的人交谈,她的脑回路经常短路,说话含混不清,主次不分,叨逼半天

iTOP4412开发板Linux下多核处理器相关知识

耗尽温柔 提交于 2020-08-12 03:38:41
多核处理器是指在一枚处理器中集成两个或多个完整的计算引擎(内核)。多核技术的 开发源于工程师们认识到,仅仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善,先前的处理器产品就是如此。他们认识到,在先前产品中以那种速率,处理器产生的热量很快会超过太阳表面。即便是没有热量问题,其性价比也令人难以接受,速度稍快的处理器价格要高很多。 基于以上事实,工程师们开发了多核芯片,使之满足‘横向扩展’(而非‘纵向扩 充’)的方法,从而提高性能。 1. 在 Linux 下,如何确认是多核或多 CPU: #cat /proc/cpuinfo 如果有多个类似以下的项目,则为多核或多 CPU: processor : 0 ...... processor : 1 2. Linux 下,如何看每个 CPU 的使用率: #top -d 1 之后按下 1. 则显示多个 CPU Cpu0 : 1.0%us, 3.0%sy, 0.0%ni, 96.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 3. 如何察看某个进程在哪个 CPU 上运行: #top -d 1 之后按下 f.进入 top Current Fields 设置页面: 选中:j:

[转]做为一个初学者,对linux一无所知,到底有没有一个公式化的方法可以一步一步进入高手的行列呢?

≯℡__Kan透↙ 提交于 2020-08-11 19:22:34
做为一个过来人,我谈谈我自己的看法,欢迎大家补充: 首先肯定的一点是:不要一上来就看内核代码,基本上你会很快被挫败感打败。内核正在变得越来越庞大,学习曲线越来越陡峭,当你一无所知的时候冒然进入linux kernel,你会发现处处都是障碍,处处都是大坑,你根本走不下去。最好的方法是把对内核源代码的热情先放在心里,从基本功开始。 我认为的基本功包括两个方面: 1、linux的基本操作。内核中的很多设计都是源于应用,你不理解用户空间的操作,也就不会知道内核空间在干什么。这时候,你需要做的就是在自己的计算机上安装一个GNU/linux操作系统,Debian、Ubuntu什么的都OK,最好去掉其他的OS,这可以强迫你在linux下进行学习,工作,生活。在这个过程中,你可能需要google检索一些信息,安装一些软件,学习使用这些软件,理解一些基本的linux的背景知识......如果你想要从事底层的软件开发,那么尽量在终端下工作,这样会让你和linux kernel更接近一些,从而提供更多关于内核的基础知识。 2、第二个方面是软件相关的基础知识。你最好学习一些软件的逻辑思维,学习掌握一门语言,当然最好是c语言。掌握其基本的语法和语义,然后在linux环境下进行实际训练。这里不得不隆重推出一本经典之作《Unix高级环境编程》,仔细阅读这本书,然后动手实践,编写linux下的小程序

挂载 Ceph RBD 磁盘

感情迁移 提交于 2020-08-11 13:23:19
一、安装ceph 客户端安装ceph-common包 # dnf install ceph-common 注意:安装ceph-common软件包与Ceph集群软件版本要一致 二、创建池与块设备 创建一个新的存储池作为磁盘使用 [root@ceph01 ~]# ceph osd pool create k8s_rbd 32 32 # 两个 32 指定的 pg 和 pgp 的数量 [root@ceph01 ~]# ceph osd pool application enable k8s_rbd rbd 下面的命令创建了一个 2G 大小的磁盘,image-feature 参数指定的是 RBD 镜像的功能特性,很多功能特性只有高版本的 Linux kernel 才支持,甚至有些都没有 kernel 版本支持,所以只打开最基本的 layering 即可 [root@ceph01 ~]# rbd create k8s_rbd/k8s_dev --size 2G --image-feature=layering 创建并授权一个用户可访问rbd存储池ks8_rbd [root@ceph01 ~]# ceph auth add client.k8s_user mon "allow r" osd "allow * pool=k8s_rbd" 创建用户client.k8s_user,对OSD有所有的权限