Linux学习之路
文章平均质量分 58
BruceZhang
计算机专业的一个小学生
展开
-
Linux Core Dump
1. 前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来. 2. gdb: 有一种办法是, 我们用gdb的step, 一步一步寻找. 这放在短小的代码中是可行的, 但要让你step一个上万行的代码, 我想你会从此厌恶程序员这个名字,转载 2013-03-27 22:35:24 · 3359 阅读 · 1 评论 -
计算程序运行的时间
通常我们在写程序后原创 2013-11-10 16:17:50 · 1712 阅读 · 0 评论 -
文件操作的常用命令 -- grep, cut, sed
grep 命令大家都很常用,不过,我们一般的操作是利用这个命令对 stdin 的内容进行操作,这篇文章介绍的内容是对文件进行操作。 grep "fing anything" . -R -n 上面这条命令的意思是: find anything :是需要查找的内容,如果存在,显示这一行,不存在显示原创 2013-11-24 20:01:43 · 2247 阅读 · 0 评论 -
终端读写命令 -- read write wall
我们在使用 C 语言时,如果使用文件操作,不可避免的会使用 read write 命令。当然,Shell 中也是存在 read 和 write 的,不过,它们的作用不是对文件进行操作,而是多其他的终端发送信息或者对变量进行赋值操作。 read 往往是对一个变量进行赋值。read 还有其他的一些选项完成一些很有意义,也很有意思的功能。我们想象这样一种情况,我们在玩腾讯的打飞机游戏时,是不是原创 2013-11-24 20:22:33 · 3442 阅读 · 0 评论 -
磁盘管理命令:du df
我们可能会想知道我们的磁盘用掉了多少空间,还有多少没用,我们在 Windows 下当然是看看属性,那么在 Linux 下怎么办呢? df = disk free 利用这个命令可以列出目前系统中的文件系统的使用情况,我们来看看运行效果: du = disk usage 利用这个命令,我们查看我们的文件使用了多少磁盘空间,它有一系列好用的参数:-a,原创 2013-11-25 10:09:21 · 2237 阅读 · 0 评论 -
Linux 下文件打包和压缩
在 Windows 下我们通常会用好压或者是 Winrar 来进行压缩文件,一般没有打包的说法。在 Linux 下却不太一样,我们可以利用一些命令完成对文件的打包和压缩。这篇文章介绍 tar ,gzip, zcat, bzip2, bunzip2 首先,我来先介绍下最为重要的命令 tar ,它有这样的几个参数:c, a, f, x, z, j,v -c :代表的是创建一个文件,原创 2013-11-25 08:57:55 · 2240 阅读 · 0 评论 -
Linux 下查看文件的命令介绍
这篇文章中介绍了三个命令,都是对文件进行操作的,用于查看文件内容,这三个命令分别是 cat, tac,paste。 第一个命令:cat这个命令用于查看文件内容,它是一次性显示文件的所有内容,运行这个命令查看文件显示的就好象下面这样: 我们看到第二个命令的名字是不是很熟系???没错,它就是 cat 的反过来写,作用也是类似的,很有意思,它的作用是倒过来显示文件的内容,即从最后一原创 2013-11-24 19:29:04 · 1897 阅读 · 1 评论 -
使用 diff 查找文件的差异并生成补丁文件修补
我们玩游戏的时候经常会遇到要下载一些补丁,那是因为游戏进行了更新,而你的客户端还是原来的版本,所以,需要一个补丁文件进行修补。 我们知道,linux 下的 diff 命令是找出两个文件的不同,它是一行一行的比对,找出文件的不同,比如,我现在有两个文件,分别命名为 version1.txt version2.txt ,好吧,我们先看看它里面存储了哪些内容:version1.txtthis原创 2013-11-23 13:32:21 · 3377 阅读 · 0 评论 -
Linux 下关于网络的几个命令
我们有时需要知道自己的 IP 地址,我们当然可以查看网络连接,不过,大部分的同学都不会那样做,我们当然是用一些简单常用的命令解决,这时,我们需要知道两个命令:ifconfig (并不是 ipconfig ,那是 Windows 下的命令),iwconfig 。 ifconfig 可以查看我们主机上的所有网卡的信息,iwconfig 一般的用法是在无线连接的情况下查看连接状态,好吧,配张截原创 2013-11-22 17:08:46 · 1672 阅读 · 0 评论 -
Linux 上不可修改的文件和目录
有时候我们需要让一个我们自己的目录中的内容不能变动,也就是不允许其他人随便删改我们的目录和目录中的文件。这里,首先,我们需要知道两个概念,文件的粘滞位和属性。 文件如果设置了粘滞位(这里的文件指的是目录),那么这个目录中的文件是不允许其他用户删除的。粘滞位设置后,在文件的权限中x会变成 t 或者 T ,当既设置了执行权限,又设置了粘滞位时,显示的是 T ,如果没有设置执行权限,那么显示的原创 2013-11-21 20:25:53 · 2673 阅读 · 0 评论 -
Linux 上的几个命令 dd, mv, rename
第一个命令 dd ,我们平时并不常用,它常常用来在不同的设备之间传输转换数据,当时在软盘盛行的时代,这个命令确实是很有用的,我们现在可用到这个命令的地方是复制文件,生成一个文件。 第一条命令:复制文件 if 代表的是 input file ,of 代表的是 output file 。利用这个命令就可以复制输入的文件。 我们还可一利用这个命令生成一个文件,这里,我生成一原创 2013-11-20 18:25:30 · 3280 阅读 · 2 评论 -
在 Windows 上像 Linux 一样使用命令
经常使用Linux上的同学习惯了输入命令查看一些东西,但是有时我们又不得不切换回 Windows,这样来回切换就显得有点麻烦,这时我们可以利用一个很方便的东西 MinGW ,这里面都是编译好的 Linux 命令,我们需要解压到一个文件夹下,就像下面这样: 里面的 bin 文件夹就是我们需要的东西,进去看看吧: 看到这些东西是不是很熟悉了,都是一些 Linux 命令,接下来就是最原创 2013-11-19 16:44:57 · 4510 阅读 · 1 评论 -
linux insmod命令参数及用法详解--linux加载模块命令
insmod(install module)功能说明:载入模块 install loadable kernel module语法:insmod [-fkmpsvxX][-o ][模块文件][符号名称 = 符号值]参数:-f 不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入。-k 将模块设置为自动卸除。-m 输出模块的载入信息。-o 指定模块的名称,可使转载 2013-11-19 19:22:53 · 15679 阅读 · 0 评论 -
Linux core dump的详细介绍及使用
我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地当掉。虽然系 统没事,但我们下次仍可能遇到相同的问题。于是这时操作系统就会把程序当掉 时的内存内容 dump 出来,让我们或是debugger 做为参考。这个动作就叫作 core dump。1.何谓 core?在使用半导体作为内存的材料前,人类是利用线圈当作内存的材料(发明 者为王安),线圈就叫作 core ,用线圈做的内存就叫作 core转载 2013-11-26 10:23:28 · 2675 阅读 · 0 评论 -
Linux 下打core并调试core
我们在Linux下工作时,经常会挺别人说程序崩溃了,会打出一个 core 文件在当前目录下,那个是怎么做到的呢?首先,我们需要看看自己的系统有没有开启 core 的开关,如果没有,我们需要开启,方法有很多,我就不在这里介绍了。 所谓 core 文件,就是程序崩溃之后,保存内存中的那部分内容,以便我们在 Debug 的时候使用。 好吧,我们看看下面的截图: 很显然,这段原创 2013-11-26 15:46:52 · 2325 阅读 · 0 评论 -
Linux中与命令相关的命令
我们在使用一个命令的时候往往需要知道这个命令的一些信息,这包括了,这个命令(可执行文件)存储在哪, 这个命令的源代码存储在哪,这个命令能做什么。 这里,我就不介绍 man 了,毕竟这个太常用到,而且大家也都知道这个命令的用法。 这里,我介绍三个命令 : whereis which whatis 仅仅看到这三个命令的命名,我们也能大概猜到这是什么意思。 whe原创 2013-11-12 19:23:42 · 1629 阅读 · 0 评论 -
Linux 多线程编程
这篇文章总结下 Linux 中多线程编程中能用到的几个函数,当然,需要同步操作的时候还需要加锁的操作,这里,没有列举的这么具体,只是把最常用的函数介绍下。 在编写多线程程序在编译的时候需要加上 -lpthread,因为用到了 pthread 库。/** 头文件: #include 功能: 创建一个线程 参数: tid : 用于返回线程 id attr : 设置线程原创 2014-11-26 14:54:19 · 1932 阅读 · 0 评论 -
Linux 有趣命令
1. sl 命令sl是指“steam locomotive(蒸汽机车)”,你会看到一辆火车从屏幕右边开往左边。。。。。。安装 $ sudo apt-get install sl 运行 $ sl可以通过设置别名,给别人来个恶作剧,让ta敲ls就跑出个火车出来,不知道的肯定很有效果 O(∩_∩)O$alias ls=sl2. fortune 命令输出一句话,有笑话,名言什么的,中文版有唐诗宋词,转载 2013-12-27 21:49:55 · 2321 阅读 · 6 评论 -
socket通信函数的深入分析
平时我们可能会用 socket 通信做个作业交给老师,一般情况下,都是拷贝一段代码,ip 地址改下,端口号改下也就可以了,即使是会写 socket 通信程序,甚至是使用 socket 做一个文件传输的东西也不一定知晓 socket 通信函数的内部实现原理,这篇文章我就介绍下这些函数的内部实现: 1.socket 这个函数是通信的开端。当我们使用这个函数并指定了协议类型之后,这个原创 2013-12-26 17:11:24 · 2853 阅读 · 1 评论 -
线程相关函数讲解
我们都知道,Linux 中的线程其实就是进程,只是线程共享进程的地址空间,其他的没有什么特别,线程也具有进程描述符,内核栈,thread_info 结构等等,进程所具有的东西。 创建线程我们需要用到的函数是 pthread_create,线程和进程一样,需要进程进行等待,以释放线程占用的其他资源,哈哈,这又和进程的实现是一样的,主线程等待子线程的函数是 pthread_join,好吧,下原创 2014-01-09 20:37:01 · 1963 阅读 · 0 评论 -
简单分析一下socket中的bind
在最开始接触bind的时候,只是在写基于tcp的server端的时候,知道在listen之前需要先bind一下,用来确保socket能在某个固定的端口监听。而bind的时候,函数参数中的端口填自己将要绑定的端口就行;而IP地址,需要填本机的IP,但是也可以用一个宏INADDR_ANY代替,用这个宏就可以不用查找本机的IP,它就可以代替本机的IP。当时只觉得这个INADDR_ANY比较神奇,但是由于转载 2013-12-22 11:08:19 · 3120 阅读 · 0 评论 -
GitHub详细教程
Table of Contents1 Git详细教程1.1 Git简介1.1.1 Git是何方神圣?1.1.2 重要的术语1.1.3 索引1.2 Git安装1.3 Git配置1.3.1 用户信息1.3.2 高亮显示1.3.3 忽略特定的文件1.3.4 使用.gitkeep来追踪空的文件夹1.4 开始操作Git1.4.1 创建内容1.4.2 创建仓库、添加文件和提交更改1.4.3 diff命令与co转载 2013-12-20 16:55:16 · 2361 阅读 · 0 评论 -
ioctl()函数详解
我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围。写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、 什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下转载 2013-12-03 08:17:41 · 2977 阅读 · 0 评论 -
Linux命令的实现 -- ls pwd cd
其实这些命令的实现都是 C 语言提供的一些库函数,我们只需要使用这些函数,并对得到的结果进行相应的格式化即可,好的,我们开始吧:ls 用到的函数是 opendir ,readdir,这些都是读目录的函数,读取目录中的内容之后 ,我们可以对它进行解析,它是一条一条的读的,所以,我们可以得到全部的文件。pwd 用到的函数是 getcwd ,这个函数的意思是 get current working di原创 2013-12-01 10:45:12 · 6741 阅读 · 4 评论 -
popen函数
我们平时写程序和用终端输入命令的时候,常常会用到管道,比如,在一段程序中,你可能会这样写 int fd[2]; pipe(fd) 这时,我们就创建了一个管道,实现了进程之间的通信。 再比如,我们用终端的时候,我们可能会这样输入命令: ls -la | grep test 我们也是在两个命令之间创建了一个管道。 这篇文章介绍一个函数,用来创建管道的原创 2013-11-28 10:53:21 · 2157 阅读 · 0 评论 -
FTP两种连接模式
FTP是有两种传输的模式的,主动模式和被动模式,之前一直没怎么去搞明白之,现在找了下资料, 重新整理了下:一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接。1. 控制连接客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过转载 2013-11-27 16:29:14 · 13930 阅读 · 0 评论 -
在Linux上取得Windows上的文件
我们平时做些工作会在 Linux 上,可是还是有一些限制不得不前往 Windows ,获得一些文件,比如 Office ,虽然金山提供了 Linux 版本的 WPS ,可是,由于习惯还是会选择微软的 Office 。我们一般的做法是做好文件之后用 U 盘之类的存储设备拷贝到 Linux 上,很是麻烦,虽然,我也在 Linux 上通过 Wine 安装了QQ,但是总是存在 BUG ,所以,用的频率很小原创 2013-11-27 14:38:36 · 5976 阅读 · 1 评论 -
linux中下载ftp文件
一、最简单的方法: wget下面的命令用来下载ftp服务器上指定目录的所有文件[html] view plaincopyprint?wget ftp://IP:PORT/* --ftp-user=xxx --ftp-password=xxx -r -r 参数表示递归下载;可以使用--directory-prefix=/mypath/ 指定下载后存储路径;-nH选项可以不在本地创建服务器上的目录结转载 2013-11-27 14:49:54 · 2237 阅读 · 0 评论 -
Linux 上与系统负载有关的命令
什么是系统负载?所谓的负载,就是你的计算机工作的状态,我们在用 Windows 时只需要打开 Windows 任务管理器即可查看内存使用量,CPU 使用的百分比等等数据,同时还可以查看系统中运行的一系列进程,那么在 Linux 上呢?我在这里就介绍几个命令来查看计算机的负载。 首先,我们来看看,怎么查看内存的使用情况,我们利用命令 free 即可,运行就像下面这样: 我们可以看原创 2013-11-19 18:34:43 · 2161 阅读 · 0 评论 -
进程组和会话组
这篇文章简单的介绍下进程组和会话组,主要意图是说明这两个东西是什么,关于它们有什么作用,这里不多做介绍。 进程组: 进程组就是多个进程的集合,这些进程构成一个进程组,一般情况下,一个进程组是由一个进程 fork 出来的,之后,它的子进程再去 fork ,最后,得到了一个进程组。当然,单个的进程也是一个进程组。进程组有进程组 id ,它通常是第一个进程的 pid ,也就是组长进程原创 2013-11-17 16:11:27 · 3546 阅读 · 0 评论 -
Ubuntu快速截图
以前截图,都是按Print键全屏截图,Alt+Print可以截当前的窗口。同时把系统自带的截图工具放到面板上,用的时候点击一下,再选择区域截图,很是不方便。不过,Ubuntu允许自己定义快捷键。要自己定义快捷键,首先要知道截图命令。右键截图图标,属性得知截图软件命令为 gnome-screenshot,不放心可以终端运行一下。然后就是找区域截图的参数了。 gnome-screenshot --h,转载 2013-06-19 20:54:06 · 1891 阅读 · 0 评论 -
How program works
1.gdb常用调试命令要用gdb调试的话,编译命令需要添加-g参数,例如[plain] view plaincopygcc -g main.c -o main b linenum 在第 linenum行打断点l 显示源代码;Ctrl-d 退出gdbwhere 显原创 2013-06-08 09:26:42 · 1902 阅读 · 1 评论 -
C语言中自动变量栈的分配
大家都知道在c语言的运行过程中,局部变量都是存放在栈中的,且是从高位到低位进行进行空间分配。先看一个程序。很明显,地址从高到低分配,和预计的一样。稍微修改一下,再运行。很明显,从低位到高位!!!明确一下问题:栈区会应为局部变量的占内存的大小更改内存的分配方式。为什么?为什么?为什么?用-S生成汇编语言看一下第一种情况的汇编语言 .file "main.c" .section .rodata.L原创 2013-06-05 14:10:47 · 2424 阅读 · 1 评论 -
Vim简单配置
基本配置终端运行:vim ~/.vimrc 配置内容如下:set nocp "设置兼容set expandtab "设置tabset shiftwidth=4 "设置tab的间隔set tabstop=4 "四个空格代表一个tabset sts=4set showmatch "在输入括号时光标会短暂地跳到与之相匹配的括号处set autoindent "设置原创 2013-06-05 14:03:54 · 2072 阅读 · 2 评论 -
Linux : SUID SGID
一、UNIX下关于文件权限的表示方法和解析SUID 是 Set User ID, SGID 是 Set Group ID的意思。UNIX下可以用ls -l 命令来看到文件的权限。用ls命令所得到的表示法的格式是类似这样的:-rwxr-xr-x 。下面解析一下格式所表示的意思。这种表示方法一共有十位:9 8 7 6 5 4 3 2 1 0- r w x r - x r - x第9位表示文件类型,可以原创 2013-06-04 18:49:20 · 2034 阅读 · 3 评论 -
Linux静态/动态链接库的创建和使用
这篇文章转自“永远的UNIX”原文地址:http://fanqiang.chinaunix.net/system/linux/2006-05-08/4126.shtml和Windows系统一样Linux也有静态/动态链接库,下面介绍创建和使用方法:假设有下面几个文件:头文件String.h,声明相关函数原形,内容如下:Strlen.c:函数Strlen的实现,获取给定字符串的长度,内容如下:Str原创 2013-05-28 23:03:42 · 1569 阅读 · 0 评论 -
SATA硬盘和IDE硬盘区别及优劣比较
IDE的英文全称为“Integrated Drive Electronics”,即“电子集成驱动器”,它的本意是指把“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。把盘体与控制器集成在一起的做法减少了硬盘接口的电缆数目与长度,数据传输的可靠性得到了增强,硬盘制造起来变得更容易,因为硬盘生产厂商不需要再担心自己的硬盘是否与其它厂商生产的控制器兼容。 对用户而言,硬盘安装起来也更原创 2013-04-26 14:33:06 · 3410 阅读 · 0 评论 -
Ubuntu下常用命令
常用命令分为四类:文件管理命令文件操作增——touch filename 创建新文件删——rm 文件名查——find 文件名 直接在硬盘里寻找 locate 文件名 文件名的部分匹配 whereis 文件名 从linux文件数据库(/var/lib/slocate/slocate.db)寻找比较——diff原创 2013-03-25 19:39:17 · 2360 阅读 · 0 评论 -
Linux缓冲区溢出问题
########################################## 缓冲区溢出(buffer overflow)机理分析 ##########################################原创 2013-03-08 20:04:16 · 2921 阅读 · 0 评论 -
Linux/Ubuntu下安装QQ2012
Ubuntu 12.04安装QQ2012,下载后请根据自己的机器类型,按照下面的32位或64位安装说明安装新版本更新说明:1.qq版本升级到官方最新qq2012Beta12.点击密码框不会崩溃3.不会自动离线4.支持全局热键(比如:Ctrl+Alt+A截图)5.语音视频接受正常,本地视频无法使用6.文件传输大小正常已知问题:1.窗口放到桌面边缘无法自动隐藏。原创 2013-03-08 18:22:02 · 2281 阅读 · 0 评论