Linux和Mac
文章平均质量分 90
Linux和Mac等Unix操作系统的使用和开发相关技术
良少
资深挨踢人士,精通Python,C,Java,JavaScript,Linux内核,网络协议,虚拟化,云计算,分布式存储,kubernetes,数据仓库等技术。擅长微服务架构设计,DevOps。目前致力于以Fintech助力普惠金融。
展开
-
Mac上清理硬盘空间的神器
Mac电脑的硬盘空间不大,一般就是128GB,最多也就512GB。这个月刚发布的新Mac才支持2TB硬盘,而且价格非常昂贵。Mac电脑使用一段时间后,常常会发生硬盘不够用的情况。本文将介绍一种为Mac电脑瘦身的神器。原创 2020-11-13 16:04:26 · 594 阅读 · 0 评论 -
不翻墙在Mac上安装brew的方法
brew软件是MacOs上的一个包管理软件。可以通过命令行方式安装软件。然而,目前,使用传统的方法,已经无法在Mac上安装brew软件了。原因是brew软件的服务器:https://raw.githubusercontent.com/被墙掉了。不翻墙是无法访问了。本文给出了一种不翻墙也能在Mas上安装brew的方法。原创 2020-10-26 09:41:00 · 1917 阅读 · 0 评论 -
使用call_usermodehelper在Linux内核中直接运行用户空间程序
有时,我们的内核模块或者内核线程希望能够调用用户空间的进程,如,一个内核线程想神不知鬼不觉地偷偷运行个有特权的后门程序。call_usermodehelper函数可以让我们在内核中轻松运行用户空间程序,完成任何你想要的需求。本文介绍如何使用call_usermodehelper原创 2011-07-19 21:03:50 · 19395 阅读 · 7 评论 -
Linux内核中链表和散列表的实现原理揭秘
inux内核的实现,大量使用了数据结构,包括了数组、链表和散列表。其中用的最多的是双向循环链表。Linux内核使用的是自己定义的链表和散列表,简单而高效,使用方法也非常的别具一格。研究Linux内核的链表和散列表对于看懂Linux内核源源代码有重要的意义。原创 2011-07-14 11:37:02 · 10116 阅读 · 7 评论 -
虚拟机活迁移揭秘
前几天有个朋友问我vmware虚拟机活迁移后台是怎样实现的。我给他讲解了KVM活迁移的原理。今天就在这里写出来分享。 vmware是闭源的,因此无从知道它的活迁移究竟是怎么做的。但是KVM的功能比vmware并不少,也实现了活迁移。Vmware的活迁移应该在原理上和KVM相同吧原创 2011-05-10 19:59:00 · 10012 阅读 · 14 评论 -
Linux设备驱动开发示例
从头到尾开发了一个简单的Linux设备驱动。这是Linux设备驱动开发的起点。原创 2010-06-08 16:24:00 · 1775 阅读 · 1 评论 -
遍历Linux kernel的链表时删除元素的方法
内核的链表list_head设计相当巧妙。今天我说一下对list_head链表的遍历时如何删除元素。 链表遍历时,如果删除当前元素,一般都是会出错的。在所有语言的各种库中的链表都是如此。list_head也一样。 如,在java的遍历中删除当前元素,会原创 2011-05-05 19:10:00 · 7470 阅读 · 0 评论 -
Windows下开发中遇到问题的解决方案汇总
1,Visual Studio中报这个错误:Project : error PRJ0002 : Error result 31 returned from 'C:/Program Files/Microsoft SDKs/Windows/v6.0A/bin/mt.exe'.如下方原创 2011-02-17 10:57:00 · 5592 阅读 · 3 评论 -
进程是准虚拟化的虚拟机—容器虚拟化的原理
<br /> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } H1 { margin-bottom: 0.21cm } H1.western { font-family: "DejaVu Sans", sans-serif; font-size: 16pt } H1.cjk { font-family: "DejaVu Sans"; font-size: 16pt } H1.ctl { f原创 2011-05-06 09:55:00 · 10166 阅读 · 34 评论 -
Linux Mount NTFS分区造成的权限问题的解决方案
本文介绍了正确mount NTFS格式分区的配置方法。 默认的配置会给NTFS赋上不正确的权限,影响使用。原创 2011-03-31 11:41:00 · 12289 阅读 · 1 评论 -
构建一个分布式操作系统的简单方案—答陈硕的“分布式系统中的进程标识”一文
本文提出了构建一个分布式操作系统的简单方案。核心是使用ssh的强大能力,构建一个简单、安全、灵活、高效的分布式操作系统!并且没有单点失效的问题。注意,是通用的分布式操作系统,而不是专用的分布式系统。原创 2011-03-29 16:20:00 · 9313 阅读 · 57 评论 -
Pydev下django开发环境的安装方法
<br /> 安装pydev插件 pydev 是 Eclipse的一个插件,是最好的Python开发工具,还支持django。<br /> 更新网址:http://pydev.org/updates <br /> <br /> pydev需要安装Python。如果需要使用django,还需要安装django。<br /> 测试Python是否安装完成:<br />命令行下键入python。如果进入交互环境,那么就表示Python已经安装成功了。<br />原创 2011-03-14 12:33:00 · 8189 阅读 · 0 评论 -
Google C++ 风格指南 - 中文版
from http://code.google.com/p/google-styleguide/ 版本:3.133原作者:Benjy WeinbergerCraig SilversteinGregory EitzmannMark MentovaiTashana Landr转载 2011-09-09 09:51:21 · 16397 阅读 · 3 评论 -
Linux防火墙应用珠玑
广为人知的iptables命令行Netfilter作为Linux内置的主机防火墙,它可以使用iptables命令处理IPv4协议,也可以使用ip6tables命令处理IPv6协议。在iptables之前,Linux 2.2中使用ipchains来配置防火墙,Linux 2.0中则使用ipfwadm,它基于BSD的ipfw命令实现。以下命令在RHEL 6.x上执行通过,但也适用于其他Linux发行版转载 2012-01-21 11:12:35 · 5707 阅读 · 0 评论 -
在linux上用dd命令实现ghost功能
ghost和g4l 安装操作系统,速度太慢,整个过程太冗长乏味了。 安装过程中,需要回答若干问题,系统需要安装无数个软件,创建和写入无数的文件。因为涉及到大量的文件定位和读写,速度一定是快不起来的。 Windows下我们常常使用ghost系统来备份和刻录操作系统。ghost可以clone整个系统的镜像,然后在新的电脑上恢复,相当简单。用ghost原创 2012-03-22 20:31:10 · 73262 阅读 · 17 评论 -
Ubuntu命令参考手册
本文包括两个部分, 第一部分是Ubuntu官网的Ubuntu命令技巧。 我添加、修改和补充了其中部分内容。 第二部分是我在Ubuntu上经常使用的其他常用命令。 会随时更新,以备大家查询。 Linux下常用的一些优秀软件,看我的另一篇文章《推荐一些Linux下常用的软件》http://blog.csdn.net/shendl/article/details/617340原创 2010-11-04 03:08:00 · 25486 阅读 · 32 评论 -
构建自己的debian软件包仓库
by http://blog.csdn.net/shendl deb是Debian软件包格式,文件扩展名为.deb,跟Debian的命名一样,deb也是因DebraMurdock(Debian创始人IanMurdock的前妻)而得名。 Debian包是Unixar的标准归档,将包文件信息以及包内容,经过gzip和tar打包而成。 处理这些包的经典程原创 2012-09-02 16:24:21 · 10606 阅读 · 0 评论 -
编程能力层次模型
程序员的编程技能随着经验的积累,会逐步提高。我认为编程能力可以分为一些层次。 下面通过两个维度展开编程能力层次模型的讨论。 一个维度是编程技能层次,另一个维度是领域知识层次。...... 有些程序员可能把精力都花在提升编程技能上了,领域知识知之甚少,这其实在日常工作中也是极其有害的。有些需求可能早已经有了现成、开源免费的解决方案,或者只需要组合几个现有软件就可以快速搞定,而他们却不得不自己花大量时间去开发。另外,缺少领域知识,在程序出现非预期状况时,很难快速定位到问题的根源,很难解决bug。原创 2015-02-15 15:30:39 · 17967 阅读 · 11 评论 -
处理空格的就地字符串处理函数的实现
处理空格的就地字符串处理函数的实现原创 2012-09-09 18:07:43 · 6090 阅读 · 0 评论 -
修改、重新生成和安装srpm源码包
RHEL/CentOS/Fedora/Suse等Linux发行版都使用rpm包作为软件包格式。另外还有一个相关的格式srpm包(后缀是.src.rpm),它包含了源代码,可以用它重新生成rpm包。如果rpm包有问题,我们可以去http://ftp.redhat.com/redhat/linux/enterprise/6Server/en/os/SRPMS/下载对应的src.rpm包,然后把它解开后修改源代码,重新编译和生成rpm包,进行分发和安装。本文讲解如何修改、重新生成和安装srpm源码包。原创 2014-02-26 18:11:12 · 12674 阅读 · 0 评论 -
推荐一些Linux下常用的软件
Linux下有一些常用的工具,我认为不错,给大家推荐一下。 开发工具: 我使用Eclipse开发Linux下的C程序,Python程序,Java程序,OCaml程序等。Eclipse有丰富的插件,可以支持绝大多数编程语言。 我一般下载Eclipse的JavaEE版,而不是下载Eclipse的LinuxC版。因为EclipseJavaEE版软件包较大,安装了许多工具。如,Web页面原创 2011-02-06 18:46:00 · 45096 阅读 · 7 评论 -
Linux下统计某个目录下所有源代码行数的Shell脚本
<br />由于要统计某个源代码下的所有代码的行数,所以这里自己写了个脚本来完成这个功能。我在编写这个脚本的时候,遇到了一些问题,我先把代码贴在这里;<br /><br />使用方法,将此脚本文件存为linesNumber.sh,使用时,在后面跟上指定目录即可,例如:<br /># ./linesNumber.sh mplayer<br />就是统计mplayer目录下的所有.cpp,.c,.h文件的源代码行数;<br />对于你还需要增加其他的行数,你只需更改教本中的REG变量即可,更改方法参考REG变量转载 2010-12-16 14:41:00 · 6483 阅读 · 6 评论 -
把物理机转换为虚拟机的简单方法
把物理机转换为虚拟机简单方法原创 2012-09-09 15:03:47 · 27310 阅读 · 0 评论 -
Python怎样得到资源文件的绝对路径
路径有两种,相对路径和绝对路径。 对于Unix-Like系统来说,绝对路径就是以/开头的路径。 相对路径就是不以/开头的路径。 其实,操作系统中实际只有一种路径,那就是绝对路径。 相对路径,只是程序自己帮我们修改为绝对路径了。 操作系统的程序运行器利用环境变量,为我们把相对路径生成为绝对路径。getcwd()函数用于得到当前进程的当前工作路径。也就是相对原创 2012-05-22 18:23:54 · 18429 阅读 · 1 评论 -
Linux内核代码风格
Linux内核代码风格 By LinusTorvalds转载 2011-03-08 10:27:00 · 13703 阅读 · 5 评论 -
Unix编程哲学和软件设计方法
Unix编程哲学: 1,模块原则:使用简洁的接口拼合简单的部件。2,清晰原则:清晰胜于机巧。3,组合原则:设计时考虑拼接组合。4,分离原则:策略同机制分离,接口同实现引擎分离。5,简洁原则:设计要简洁,复杂度能低则低。6,吝啬原则:除非确无它法,不要编写庞大的程序。7,透明性原则:设计要可见,以便审查和调试。8,健壮原则:健壮源于透明与简洁。9,表示原则:把知识叠入数据以求逻辑质朴而健壮。10,通俗原则:接口设计避免标新立异。11,缄默原则:如果一个程序没什么好说的,就沉默。12,补救原则:出现原创 2011-03-02 23:06:00 · 2943 阅读 · 4 评论 -
Linux系统中如何添加自己的库文件路径
<br /> 库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到库的搜索路径之中。设置库文件的搜索路径有下列两种方式,可任选其一使用:<br /> 在环境变量 LD_LIBRARY_PATH 中指明库的搜索路径。<br />转载 2010-06-17 14:07:00 · 2815 阅读 · 0 评论 -
Linux启动和关闭时自动执行的所有脚本文件
<br /> <br /> <br /> Linux使用的是基于运行级(run-levels) 概念的称为SysVinit的专用启动工具。它在不同的系统上可能是完全不一样的, 所以不能认为一个脚本在某个Linux发行版上工作正常。<br /> SysVinit(从现在开始我们称之为"init")以运行级的模式来工作,一般有7(从0到6)个运行级(实际上可以有更多的运行级,但都是用于特殊情况而且一般使用不到。原创 2010-08-11 10:46:00 · 6131 阅读 · 5 评论 -
Eclipse CDT生成Makefile文件
<br />Eclipse CDT生成Makefile文件:<br />1,项目右击属性<br />2,点击C/C++ Build<br />3,选中自动生成Makefile。<br /> 默认会在Default目录下创建Makefile文件。<br /> <br /> <br /> <br />PS: codeLite 这个开源免费的C/C++ IDE也相当不错。<br /> 用Eclipse和Netbeans给Linux Kernel生成代码索引都会报Out 0f memo原创 2010-06-08 14:03:00 · 15863 阅读 · 0 评论 -
/etc/fstab文件详解
/etc/fstab文件详解<br /> 关键字: /etc/fstab <br />转载自 http://hi.baidu.com/jingzhongchen/blog/item/8e6f552dcead7ce98b139952.html<br /> <br />做个记录 <br /> <br />看你对/etc/fstab文件了解多少?<br />转载 2010-06-05 22:46:00 · 1739 阅读 · 0 评论 -
Linux系统信息查看命令大全
系统# uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lspci -tv # 列出所有PCI设备# lsusb -tv # 列出所有USB设备# lsmod #转载 2010-07-28 14:06:00 · 1291 阅读 · 0 评论 -
grub2
<br /> ubuntu10.04 start to use grub2 instead of grub.<br /> grub is very simple. We used it very good. <br /> We can directly edit menu.lst file.<br /> Then we can exec grub command. and we can get a inter-command env. <br /> root (*原创 2010-07-26 15:16:00 · 1480 阅读 · 0 评论 -
Linux中报库或者程序找不到的解决方法
<br /><br />./tests: error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory<br />出现这类错误表示,系统不知道xxx.so放在哪个目录下,这时候就要在/etc/ld.so.conf中加入xxx.so所在的目录。<br /> <br />一般而言,有很多的so会存放在/usr/local/lib这个目录底下,去这个目录底下找,果然发原创 2010-07-19 12:56:00 · 1869 阅读 · 0 评论 -
ubuntu环境变量的设置
<br /><br />系统环境变量:<br />/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.<br />并从/etc/profile.d目录的配置文件中搜集shell的设置.<br />/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.<br />当前用户变量:<br />~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,<br /转载 2010-07-14 23:21:00 · 1779 阅读 · 0 评论 -
如何解决fedora 13中root用户不能登录的问题
<br /><br /> 先用普通用户登陆,打开系统工具-终端<br />切换到root用户<br />输入命令: gedit /etc/pam.d/gdm&<br />在文本编辑器中注释掉"auth requiredpam_succeed_if.so user != root quiet"<br />保存后继续输入命令: gedit /etc/pam.d/gdm-password&<br />同样地注释掉"auth required pam转载 2010-07-06 11:52:00 · 2354 阅读 · 3 评论 -
X11vnc (简体中文)
X11vnc (简体中文)From ArchWikiJump to: navigation, search<br /> i18n English 简体中文<br />WARNING: 这将建立一个没有密码的VNC. 意思是任何人都可以通过网络访问你的VNC并且能看到你的X界面.可以非常简单的通过SSH连接来避免这样的事情.Contents[hide]1设置 x11vnc1.1安装1.2运行1.2.1startx1.2.2GDM1.3访问2SSH端口转发<br /> 设置 x11vnc <转载 2010-07-06 14:18:00 · 6076 阅读 · 0 评论 -
如何解决fedora 13中root用户不能登录的问题
<br /><br /> 先用普通用户登陆,打开系统工具-终端<br />切换到root用户<br />输入命令: gedit /etc/pam.d/gdm&<br />在文本编辑器中注释掉"auth requiredpam_succeed_if.so user != root quiet"<br />保存后继续输入命令: gedit /etc/pam.d/gdm-password&<br />同样地注释掉"auth required pam转载 2010-07-06 11:52:00 · 2989 阅读 · 4 评论 -
解决ubuntu下Firefox Flash文字乱码或不能显示的问题
解决方法很简单,操作如下:<br />修改/etc/fonts/conf.d/49-sansserif.conf <?xml version="1.0"?><br /><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><br /><fontconfig><br /><!--<br />If the font still has no generic name, add sans-serif<br />--><br /><match tar转载 2010-06-17 23:45:00 · 1892 阅读 · 0 评论 -
grub2配置
grub2配置grub2-mkconfig -o /boot/grub2/grub.cfg 自动生成一个grub2配置文件。grub2-setup /dev/sda 这使用默认的文件向设备上灌入grub。 如果出现如下错误: grub-probe:error: Cannot finda GRUB drive for /dev/sda1 请执行:grub2-install--recheck /dev/sda 这个原创 2010-08-26 18:01:00 · 13755 阅读 · 0 评论 -
创建和使用本地ubuntu source镜像服务器
ubuntu发行版光盘中都只有少数常用软件包。ubuntu上要安装的软件,常常需要到ubuntu源服务器上下载。 使用如下命令可以搜索和安装可用的软件包。 apt-cache search packageName sudo apt-get install packageName apt-get实际使用wget命令,从/etc/apt/sources.list配置文件指定的源上下载对应的.deb软件包,然后使用dpkg -i packageName.deb安装软件。 如果ubun原创 2011-02-10 13:53:00 · 6065 阅读 · 1 评论