sina
基本命令分类简介:
查看Linux内核版本:
cat /proc/version//第一种
uname -a //第二种
uname -r //第三种
查看Linux操作系统版本:
lsb_relase -a//第一种
cat /etc/issue//第二种
开关机:
//重启的三种方式
init 6 、 reboot 、 shutdown -r now
//关机的三种方式
init 0 、 halt 、 shutdown -h now
(1)磁盘管理
dd:读取,转换并输出数据。dd可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。
df:显示磁盘的相关信息。df可显示磁盘的文件系统与使用情形。
du:显示目录或文件的大小。du会显示指定的目录或文件所占用的磁盘空间。
fdisk:磁盘分区。fdisk是用来磁盘分区的程序,它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣。
format:格式化磁盘,最好是对未格式化的磁盘使用
free:显示内存状态。free会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段、内核使用的buffer等。
mount:挂载文件系统。
umount:卸除文件系统。umount可卸除目前挂在Linux目录中的文件系统。
(2)进程管理
crontab:设置计时器,cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使用计时器的功能。其配置文件格式如下:
Minute Hour Day Month DayOFWeek Command
kill:删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。
nohup:该命令可以在你退出账户或关闭终端之后继续运行想应的进程。
ps:报告程序状况。ps是用来报告程序执行状况的指令,您可以搭配kill指令随时中断,删除不必要的程序。
renice:调整优先权。renice指令可重新调整程序执行的优先权等级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。等级范围从-20--19,只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级。
top:实时显示系统中各个进程的资源的占用情况,类似于windows的任务管理器。
who:显示目前登入系统的用户信息。单独执行who指令会列出登入帐号,使用的 终端机,登入时间以及从何处登入或正在使用哪个X显示器。
(3)文件管理
basename:从文件名中去掉路径和扩展名
cat:把档案串连接后传到基本输出(屏幕或加 > filename 到另一个档案)
cd:切换目录。cd指令可让用户在不同的目录间切换,但该用户必须拥有足够的权限进入目的目录。
chgrp:变更文件或目录的所属群组
chmod:变更文件或目录的权限
chown:变更文件或目录的拥有者或所属群组
comm:比较两个已排过序的文件。这项指令会一列列地比较两个已排序文件的差异,并将其结果显示出来,如果没有指定任何参数,则会把结果分成3行显示:第1行仅是在第1个文件中出现过的列,第2行是仅在第2个文件中出现过的列,第3行则是在第1与第2个文件里都出现过的列。若给予的文件名称为"-",则comm指令会从标准输入设备读取数据。
cp:复制文件或目录。cp指令用在复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。
cut:cut -cnum1-num2 filename显示每行从开头算起 num1 到 num2 的文字。
diff:比较文件的差异。 diff以逐行的方式,比较文本文件的异同处。所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
dir:列出的信息 (默认为目前的目录)。
dos2unix:将一个DOS格式的文件转换为UNIX格式的文件。主要差别在换行符。
egrep:在文件内查找指定的字符串。
fgrep:查找文件里符合条件的字符串。本指令相当于执行grep指令加上参数"-F"
file:辨识该文件的类型。
find:查找文件或目录。find指令用于查找符合条件的文件,任何位于参数之前的字符串都将被视为欲查找的目录。
grep:查找文件里符合条件的字符串。grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。
head:显示文件的前几行(默认10行)。
less:less 命令的功能几乎和 more 命令一样,也是用来按页显示文件,不同之处在于 less 命令在显示文件时允许用户既可以向前又可以向后翻阅文件。同时因为 less 并未在一开始就读入整个档案,因此在遇上大型档案的开启时,会比一般的文书编辑器(如 vi)来的快速。
ln:连接文件或目录。 ln指令用在连接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
locate:查找文件。 locate指令用于查找符合条件的文件,它会去保存文件与目录名称的数据库内,查找合乎范本样式条件的文件或目录。
ls:执行ls指令可列出目录的内容,包括文件和子目录的名称。
mkdir:mkdir可建立目录并同时设置目录的权限。
more:类似 cat ,不过会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
mv:mv可移动文件或目录,或是更改文件或目录的名称。
od:od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来。
pwd:执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。
rename:文件批量改名。
rm:删除文件或目录。执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件。
rmdir:当有空目录要删除时,可使用rmdir指令。
sed:sed可依照script的指令,来处理、编辑文本文件。
sort:sort可针对文本文件的内容,以行为单位来排序。
tail:查看文件的后N行,有实时监控的功能。
touch:使用touch指令可更改文件或目录的日期时间,包括存取时间和更改时间。
uniq:检查及删除文本文件中重复出现的行列。
unix2dos:将UNIX格式的文件转化为DOS格式。
vdir:列举目录内容,功能同 ls -lb
vi:文本编辑。
wc:利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。
(4)网络管理
curl:Curl是Linux下一个很强大的http命令行工具,其功能十分强大,支持断点续传。
finger:它会去查找,并显示指定帐号的用户相关信息,包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。单独执行finger指令,它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。
FTP:它是ARPANet的标准文件传输协议
ifconfig:ifconfig可设置网络设备的状态,或是显示目前的设置。如果提示找不到命令,可用/sbin/ifconfig。
ip:一个强大的网络配置工具,它能够替代一些传统的网络管理工具。例如:ifconfig、route等。
netstat:显示网络状态
nslookup:它的功能是查询一台机器的IP地址和其对应的域名。使用权限所有用户。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。
ping:执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
rcp:远端复制文件或目录。rcp指令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。
route:oute表示手工产生、修改和查看路由表。
tcpdump:可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员。(抓包)
telnet:执行telnet指令开启终端机阶段作业,并登入远端主机。
traceroute:显示数据包到主机间的路径。
(5)系统管理
cal:日历命令,可以显示当月日历、当年日历、指定月份年份的日历等。
chsh:更换登入系统时使用的shell。
clear:清除终端显示。
date:显示或设置系统时间与日期。
echo:将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
ethtool:用于查询及设置网卡参数的命令。
getconf:将系统配置变量值写入标准输出。
groupadd:添加群组。
groupdel:删除群组。需要从系统上删除群组时,可用groupdel指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
groupmod:更改群组识别码或名称。
id:显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
init:是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。
内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。
内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。
ipcs:显示进程间通信信息。
mesg:设置终端机的写入权限。
passwd:让用户可以更改自己的密码,而系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
rpm:管理套件。
service:启动、停止、重启服务
setup:一个设置公用程序,提供图形界面的操作方式。在setup中可设置7类的选项:
1.登陆认证方式
2.键盘组态设置
3.鼠标组态设置
4.开机时所要启动的系统服务
5.声卡组态设置
6.时区设置
7.X Windows组态设置
su:变更用户身份。
sync:将内存缓冲区内的数据写入磁盘。在Linux系统中,当数据需要存入磁盘时,通常会先放到缓冲区内,等到适当的时刻再写入磁盘,如此可提高系统的执行效率。
uptime:是用来查询linux系统负载的,可以显示
1 当前时间
2 系统已运行时间。
3 在线用户数
4 最近1分钟、5分钟、15分钟系统的平均负载。
useradd:用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
userdel:删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。
usermod:修改用户帐号。
vmstat:Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。
wall:可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall指令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。
write:可传递信息给另一位登入系统的用户,当输入完毕后,键入EOF表示信息结束,write指令就会将信息传给对方。如果接收信息的用户不只登入本地主机一次,你可以指定接收信息的终端机编号。
(6)压缩管理
bunzip2:是.bz2文件的解压缩程序。bunzip2实际上是bzip2的符号连接,执行bunzip2与bzip2 -d的效果相同。
bzip2:是.bz2文件的压缩程序。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。
cpio/tar:备份文件。
gunzip:解压文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为".gz"。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。
gzip:gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。
split:将文件切成较小的文件,预设每1000行会切成一个小文件。
unzip:解压缩.zip压缩文件。
zgrep:这个命令的功能是在压缩文件中寻找匹配的正则表达式,用法和grep命令相同,只不过操作的对象是压缩文件。如果用户想看看在某个压缩文件中有没有某一句话,便可用zgrep命令。
zip:zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。
eg:打包:tar cvf mylib.tar bill.c fred.c
解包:tar xvf mylib.tar
压缩:gzip mylib.tar
解压:gzip -d mylib.tar.gz
GUN版压缩:tar zcvf mylib.tgz bill.c fred.c
GUN版解压:tar zxvf mylib.tgz
有关网络的基本命令详解:
1、tcpdump:经典的网络抓包工具,类似于Wireshark。
2、lsof(list open life):列出当前系统打开的文件描述符的工具。
lsof -i 显示所有打开的socket文件描述符
lsof -p 显示指定进程打开的所有文件描述符
用此工具显示的结果有下几项:COMMAND:执行程序使用的终端命令
PID:文件描述符所属进程的PID
USER:拥有文件描述符的用户的用户名
FD:文件描述符的描述。第一种:cwd(进程的工作目录),rtd(用户的根目录),txt(进程运行的程序代码),mem(直接映射到内存中的文件);第二种:数字+访问权限,访问权限有r(可读)、w(可写)和u(可读可写),0u(标准输入),1u(标准输出),2u(标准错误),3u(处于listen状态的监听socket),4u(epoll内和事件表对应的文件描述符)
TYPE:文件描述符的类。DIR(目录)、REG(普通文件)、CHR(字符设备文件)、IPV4(IPV4类型的socket文件描述符)、0000(未知类型)。
DEVICE:文所属设备。8,3(机器上的程序文件和动态库)
SIZE/OFF:若是"0t"|"ox",表示是个偏移值
NODE:文件的i节点号(除过socket显示为"TCP")
NAME:文件的名字
3、nc:快速搭建网络连接的工具,可以用来调试客户端或服务器端的程序(类似于telnet)。
nc -l 以服务器方式运行(注:nc命令默认以客户端方式运行)
nc -u 使用UDP协议(注:默认是传输层的TCP协议)
4、strace:测试服务器的工具。他跟踪程序运行过程中执行的系统调用和接收到的信号,并将系统调用名、参数、返回值和信号名输出到标准输出或者指定的文件。
strace -c 统计每个系统调用执行的时间、执行次数、出错次数
strace -f 跟踪由fork调用生成的子进程
strace -e 后可跟以下几种情况:a(trace=set 只跟踪指定的系统调用。set可以是open,close,read,write);
b(trace=file 只跟踪与文件操作相关的系统调用);
c(trace=process 只跟踪与进程控制相关的系统调用);
d(trace=network 只跟踪与网络相关的系统调用);
e(trace=signal 只跟踪与信号相关的系统调用);
f(trace=ipc 只跟踪与进程间通信相关的系统调用)
5、netstat:网络信息统计工具,打印本地网卡接口上的全部链接、路由表信息(没有route功能输出的信息丰富)、网卡接口信息(没有ifcofig功能输出的信息丰富)。其输出结果包含以下6个字段:Proto(协议名)
Recv-Q(socket内核中接收缓冲区中尚未被应用程序读取的数据量)
Send-Q(未被对方确认的数据量)
Local Address(本端的IP地址和端口号)
Foreign Address(对方的IP地址和端口号)
State(socket的状态,对于UDP,此段显示空;而对于面向连接的协议,此段的State包括ESTABLISHED等状态图中的描述状态)
6、vmstat(virtual memory statistics):实时输出系统的各种资源的使用情况(eg:进程信息、内存使用、cpu使用率、I/O使用情况)其输出结果有以下6个字段:procs(进程信息,r表示待运行的进程数目;b表示处于不可中断睡眠状态的进程数目)
memory(内存信息,swpd表示虚拟内存的使用数量,free空闲内存的使用数量,buff作为buff cache(从磁盘读入的数据可能被保持在此)的内存数量,cache作为page cache(代写入磁盘的数据首先被放到此,然后由磁盘中断程序写入磁盘)的内存 数量)
swap(交换分区(虚拟内存)的使用信息),各项的单位都是KB/s。si表示数据由磁盘交换至内存的速率,so表示数据由内存交换至磁盘的速率(注:若so和si经常发生变化,则说明内存不足))
io(设备的使用信息,单位是block/s,bi表示从块设备读入块的速率,bo表示向块设备写入块的速率)
system(系统信息,in表示每秒发生的中断次数,cs表示每秒发生的上下文切换次数)
cpu(CPU使用信息,us表示系统所有进程运行在用户空间的时间占cpu总运行时间的比例,sy表示系统所有进程运行在内核空间的时间占cpu总运行时间的比例,id表示cpu处于空闲状态的时间占cpu总运行时间的比例,wa表示cpu等待I/O事件的时间占cpu总运行时间的比例)注:使用iostat命获得更多磁盘使用情况,使用mpstat获得更多cpu使用情况。
7、ifstat(interface statistics):简单的网络流量监测工具,它的每条输出都以KB/s为单位显示各网卡接口上接收和发送数据的速率。用这个命令可以大概估计各个时段服务器的总输入、输出流量。
ifstat -a 监测系统上得所有网卡接口
ifstat -i 指定要监测的网卡接口
8、mpstat(multi-processor statistics):实时监测多处理器系统上每一个CPU的使用情况。它和vmstat一样,输出的第一次结果是自系统启动以来的平均结果。
其得到的结果有以下几项:
CPU(0表示第一个CPU,1表示第二个CPU,all则表示这两个CPU数据的平均值)、
%usr(除了nice值为负的进程,系统上其它进程运行在用户空间的时间占cpu总运行时间的比例)、
%nice(nice值为负的进程运行在用户空间的时间占cpu总运行时间的比例)、
%sys(系统上所有进程运行在内核空间的时间占cpu总运行时间的比例,不包括硬件和软件中断消耗的cpu时间)、
%iowait(cpu等待磁盘操作的时间占cpu总运行时间的比例)、
%irq(cpu处理硬件中断的时间占cpu总运行时间的比例)、
%softcpu(cpu处理软件中断的时间占cpu总运行时间的比例)、
%steal(steal时间(一个虚拟CPU等待超级管理员处理另一个虚拟CPU的时间)占cpu总运行时间的比例))、
%guest(运行虚拟cpu的时间占cpu总运行时间的比例)、
%idle(系统空闲的时间占CPU总运行时间的比例)
调试程序的有关命令:
在终端输入:gcc -o my my.c -g
启动调试:gdb my.c
在终端可选择输入以下命令:
l 显示代码 r 运行 c 继续运行 p+变量名 查看变量值 ptype 显示变量的数据类型
s 进入函数 finish 退出函数
b+行号 加断点 info break 显示断点信息 delete b N删除编号为N的断点 clean +行号 清除某一行的断点
n 单步执行 bt显示调用栈的相关信息 q 退出
gdb调试多进程
gdb attach 4183 将子进程4183附加到gdb调试器
gdb set follow-fork-mode mode(parent/child) 选择程序在执行fork调用后,是继续调试父进程还是子进程
gdb调试多线程
info thread显示当前可调式的所有线程,ID前有*代表当前被调试的线程
thread ID 调试目标ID指定的线程
set scheduler-locking off(默认,所有线程都可继续执行)
on(只有当前被调试的线程会继续执行)
step(单步执行时,当前线程会执行)
makefile的有关命令
在终端输入:vi makefile
库文件的有关命令
/lib系统库文件 /usr/lib 用户库文件
静态库:libxx.a 链接时加载(若要用到,每个程序都要一份拷贝)
1)先将所有的.c文件都编译成.o文件
2)ar crv libfoo.a bill.o fred.o
gcc -o program program.o libfoo.a 或者 gcc -o program program.o -L . -lfoo
共享库(动态库):libxx.so 运行时加载
gcc -shared -fPIC a.c b.c -o libtest.so
将动态库拷贝到/usr/lib下 cp libtest.so /usr/lib
gcc -o main main.c -ltest
------------------end--------------
----------若有不足欢迎提出----------------------------------------