Linux学习
Linux相关
kaikai_sk
我的个人主页:https://kaikai-sk.github.io/
爱生活/爱技术
Public:
(1) https://past.date-conference.com/proceedings-archive/2022/html/0878.html
【证书】
软件设计师(软考中级)
展开
-
Linux内核模块
文章目录1 什么是模块(module)2 编译一个模块1 什么是模块(module)本质上module是一段内核代码,它运行在cpu的特权层(Ring 0 on X86),与内核代码具有相同的功能。它是kernel的动态扩展,在需要时被加载,在不需要时被移除,可减少内核的footprint。便于驱动、文件系统等的二次开发。2 编译一个模块依赖于当前运行的内核的编译环境,例如,.config、module info,include.h等等...原创 2020-05-13 11:01:24 · 188 阅读 · 0 评论 -
linux之简单网络命令
linux之简单网络命令原创 2016-10-05 11:17:27 · 228 阅读 · 0 评论 -
linux之cat和tac
一个有趣的命令原创 2016-10-05 11:49:25 · 452 阅读 · 0 评论 -
linux 面试笔试常用命令
查找大于100M的所有文件 find -type f -size +1000000k 命令写错退不出来 ctrl+z创建软硬链接 ln -s aaa.txt linkaaa原创 2016-10-05 12:01:56 · 269 阅读 · 0 评论 -
Linux之常用命令1
grep 搜索内容 未完待续。。。。。。原创 2016-10-05 16:57:00 · 156 阅读 · 0 评论 -
linux之一个简单的shell程序
linux之一个简单的shell程序原创 2016-10-05 18:08:22 · 416 阅读 · 0 评论 -
linux之shell变量
举个栗子[root@skLinux rootCodeFiles]# vi specialvar.sh#!/bin/sh#usage sh specialvar.sh file1 file2 file3echo '$# is :' $#echo '$* is :' $*echo '$? is :' $?echo '$$ is :' $$echo '$0 is :' $0echo '$1原创 2016-10-05 20:53:16 · 194 阅读 · 0 评论 -
linux之read命令
案例:[root@skLinux rootCodeFiles]# vi readparm.sh#!/bin/sh#read命令测试read first second thirdecho "第一个参数是$first"echo "第二个参数是$second"echo "第三个参数是$third"[root@skLinux rootCodeFiles]# sh readparm.sh 100原创 2016-10-05 21:05:55 · 556 阅读 · 0 评论 -
linux之expr命令
[root@skLinux rootCodeFiles]# clear[root@skLinux rootCodeFiles]# expr 3+53+5[root@skLinux rootCodeFiles]# expr 3 + 58[root@skLinux rootCodeFiles]# expr 3 - 5-2[root@skLinux rootCodeFiles]# expr原创 2016-10-05 21:30:21 · 1324 阅读 · 0 评论 -
linux之变量测试语句与流控语句
案例:[root@localhost rootCodeFiles]# cat if_else_test.sh #!/bin/shecho "请输入一个文件名"stty erase ^Hread file_nameif [ -d $file_name ] then echo "$file_name 是文件夹"elif [ -f $file_name ]原创 2016-10-06 11:51:20 · 632 阅读 · 0 评论 -
linux之for循环
[root@localhost rootCodeFiles]# cat kill_user.sh #!/bin/sh#the script to kill logine userusername=$1/bin/ps -aux | /bin/grep $username | /bin/awk '{print $2}' > /tmp/temp.pidkillid=`cat /tmp/temp.pid原创 2016-10-06 21:14:43 · 4595 阅读 · 0 评论 -
linux之while循环
[root@localhost rootCodeFiles]# cat while_test.sh #!/bin/shnum=1while [ $num -le 10 ]do SUM=`expr $num \* $num` echo $SUM num=`expr $num + 1`done[root@localhost rootCodeFile原创 2016-10-08 20:23:22 · 8159 阅读 · 0 评论 -
linux之普通用户具有什么样的权限才能执行shell脚本???
linux之普通用户具有什么样的权限才能执行shell脚本???原创 2016-10-08 21:04:29 · 6068 阅读 · 0 评论 -
linux之vi编辑器的常用实例
^P是 ctrl+V ctrl+P或者 ctrl+V+P取消快捷键 unmap 取消ab:unab原创 2016-10-09 16:27:17 · 506 阅读 · 0 评论 -
linux之系统运行级别和引导流程
linux之系统运行级别和引导流程原创 2016-10-11 11:30:38 · 319 阅读 · 0 评论 -
linux之输出重定向
linux之输出重定向原创 2016-10-16 12:12:01 · 258 阅读 · 0 评论 -
linux之文件系统
linux之文件系统原创 2016-10-27 11:47:20 · 221 阅读 · 0 评论 -
Linux之编写运行第一个c语言程序
v(V):选中文字 %:在{}[]间跳转 (常用,重要)整齐的代码缩进 配置文件:/etc/vimrcC语言的智能缩进set cindent shiftwidth=4tab键缩进4个字符set tabstop=4设置智能缩进set smartindent[root@localhost shankai]# cd myCode/[root@localhost myCode]# lsa.out原创 2016-11-13 21:43:13 · 522 阅读 · 0 评论 -
Linux之虚拟机的网络配置
nat方式 修改网卡的配置文件 DEVICE="eth2"BOOTPROTO="static"HWADDR="00:0C:29:13:A0:69"IPADDR="192.168.1.13"NETMASK="255.255.255.0"GATEWAY="192.168.1.1"NM_CONTROLLED="yes"ONBOOT="yes"TYPE="Ethernet"UUID原创 2016-11-15 17:42:55 · 280 阅读 · 0 评论 -
Linux之Makefile
源码管理利器——简单Makefile编写(一)all:first //目标first.o:first.c //目标文件:源文件,目标文件依赖于原文件 gcc -c first.c//编译生成目标文件first:first.o gcc first.o -o firstclean: rm *.o first -ffirst.c#include <stdio.h>int原创 2016-11-15 20:42:22 · 247 阅读 · 0 评论 -
一个makefile的例子
CC = g++CFLAGS = WallpythonVersion=python2.7main.o:main.cpp $(CC) -c main.cpp -I/usr/include/python2.7 -L/usr/lib/python2.7 -l python2.7mymain:main.o $(CC) -o mymain main.oclean:rm原创 2017-03-15 10:45:25 · 199 阅读 · 0 评论 -
Linux 内核编译
一、编译一个内核1.下载Linux2.6.*的内核源代码 2.tar解压到目录dd后,在dd内操作: 1)从/boot里拷贝一份config文件命名为.config; 并make menuconfig 保存 2)make -j 8 3)make modules_install 4)make install (如果缺包,http://archives.f...原创 2017-10-06 20:42:14 · 525 阅读 · 0 评论 -
编写一个简单的内核模块
写源码//hello world driver for linux 2.6 #include <linux/kernel.h>#include <linux/init.h>#include <linux/module.h>static int __init hello_init(void){ printk(KERN_ALERT "Hello, world! from kerne原创 2017-10-25 20:03:45 · 561 阅读 · 0 评论 -
通过模块参数进程PID打印进程的虚存区
编写模块#include <linux/module.h>#include <linux/init.h>#include <linux/interrupt.h>#include <linux/sched.h>static int pid;module_param(pid,int,0644);static int __init memtest_init(void){ struct ta原创 2017-10-26 11:10:19 · 1342 阅读 · 0 评论 -
利用mmap()写一个拷贝文件的程序
#include <unistd.h>#include <assert.h>#include <sys/mman.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <string.h>#include <stdio.h>#include <stdlib.h>void mmapcopy(int src原创 2017-10-26 14:15:31 · 1122 阅读 · 0 评论 -
Linux下安装Disksim4.0+SSDModel
一、DiskSim 以及 SSD扩展插件简介 DiskSim is a low-level storage simulation tool, which can generate timing-accurate simulation result. It is developed by Greg Ganger. Current version is 4.0 and it is out in Ju转载 2018-01-26 21:05:47 · 967 阅读 · 1 评论 -
page cache 替换策略
现有的page cache替换策略Linux内核中文件Cache替换的具体过程如图3-1所示:刚刚分配的Cache项链入到inactive_list头部,并将其状态设置为active,当内存不够需要回收Cache时,系统首先从尾部开始反向扫描 active_list并将状态不是referenced的项链入到inactive_list的头部,然后系统反向扫描inactive_list,如果所原创 2018-01-26 21:34:53 · 1488 阅读 · 0 评论 -
Linux的缓存内存(cache memory)
PS:为什么Linux系统没运行多少程序,显示的可用内存这么少?其实Linux与Win的内存管理不同,会尽量缓存内存以提高读写性能,通常叫做Cache Memory。为什么Linux系统没运行多少程序,显示的可用内存这么少?其实Linux与Win的内存管理不同,会尽量缓存内存以提高读写性能,通常叫做Cache Memory。有时候你会发现没有什么程序在运行,但是使用top或free命令看到转载 2018-01-27 14:55:37 · 17017 阅读 · 0 评论 -
用radix tree简单实现java.util.Map的功能
代码地址:https://github.com/kaikai-sk/MyRadixTreeRadixTreeNode.javapackage com.sk.radixtree;import java.io.Serializable;import java.util.Collection;import java.util.Iterator;import java.util.Tr原创 2018-01-28 21:09:30 · 814 阅读 · 0 评论 -
Linux内核task_struct获取进程Task的名称
在内核中,如果你已经获取到相关Task(进程)的task_struct结构,你可以通过task_struct结构中的 char comm[TASK_COMM_LEN];成员可以获取到进程的名称。//注意 TASK_COMM_LEN 的长度是16字节 sprintf(buffer,"%s",pTaskStruct->comm);附上task_struct的基本信息struct ta转载 2018-02-01 11:12:30 · 3940 阅读 · 0 评论 -
Linux之make常用操作集锦
patsubst函数不起作用参数之间不能有空格把make的warning和error信息输出到文件里由于make会把warning和error信息输出到标准错误上,所以想把这些信息重定位到文件里,需要先把标准错误重定向到标准输出上下面的命令是有效的做法: make >a.txt 2>&1注意, make 2>&1 >a.tx...原创 2018-03-17 13:10:15 · 239 阅读 · 0 评论 -
UML(User Mode Linux)
一.搭建UML实验环境1.下载Linux Kernel源码 访问https://www.kernel.org/网站,看到现在(2014-3-10)最新的版本为3.13.6,那么就下载它了:cd ~/uml/wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.13.6.tar.xz2.编译UM配置的Kernel 解...原创 2018-03-19 17:34:00 · 1769 阅读 · 0 评论 -
linux内核启动参数解析及添加
1.环境:ubuntu16.04Linux jello 4.4.0-89-generic #112-Ubuntu SMP Mon Jul 31 19:38:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux2.查看当前linux内核的启动参数:cat /proc/cmdline笔者的输出内容如下:BOOT_IMAGE=/boot...转载 2018-03-26 16:14:23 · 6133 阅读 · 0 评论 -
Linux内核开发的特点
概述不能访问c库也不能访问标准的c头文件必须使用GNU C内核编程时缺乏像用户空间那样的内存保护机制内核编程时难以执行浮点运算内核给每个进程只有一个很小的定长堆栈由于内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发要考虑可移植性的重要性无libc库抑或无标准头文件对内核来说,完整的c库——哪怕是它的一个子集,都太大而且太低效了。 内核源代码文件不能包含外部头...原创 2018-03-27 21:19:55 · 516 阅读 · 0 评论 -
Linux中的骚宏
container_of/* 用于从包含在某个结构中的指针获得结构本身的指针。(也就是通过结构体变量中某个成员的首地址 进而获得整个结构体变量的首地址) @ptr:表示结构体重member的地址 @type:表示结构体的类型 @member:表示结构体中的成员 其实现: 1. 定义一个临时的数据类型与ptr相同(通过typeof( ((...原创 2018-03-31 14:00:30 · 173 阅读 · 0 评论 -
gdb的一些骚报错
“No symbol table is loaded. Use the “file” command.”gcc编译的时候要带一个-g的参数。例如gcc -g main.c -o main原创 2018-03-31 16:21:11 · 413 阅读 · 0 评论 -
控制page cache的大小
控制Cache Memory/Page Cache Size1 怎么样观察当前的cache memory的使用情况?[root@gurkullinux ~]# free -mtotal used free shared buffers cachedMem: 15976 15195 781 0 167 9153-/+ buffers/cache: 5874 101...原创 2018-04-01 21:09:33 · 9343 阅读 · 4 评论 -
Dell Inspiron 3442关机不断电的情况解决
Ubuntu的系统就类似这个样子,会卡死在关机的界面上。windows系统就是关机了但是风扇什么的都没有关。解决方法:刷一个最新的BIOS原创 2018-04-05 17:54:27 · 2343 阅读 · 0 评论