本文共 12424 字,大约阅读时间需要 41 分钟。
一、Linux系统一般由四个主要部分构成:内核、用户界面、文件结构和实用工具。 目录结构:root超级用户目录;home用户目录;bin执行目录;boot引导目录;etc配置目录;dev设备目录;mnt安装目录;op安装目录;lib库目录;user共享目录;var数据目录;proc虚拟目录;
这个命令就相当于 dos 下的 dir 命令一样 也是 Linux 控制台命令中最为重要几个命令之一,ls 最常用的参数有三个-a、-l 和 –F:
ls -a
Linux 系统上的文件以.开头的文件被系统视为隐藏文件,仅用 ls 命令是看不到他们的。而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来。
ls –l
这个命令可以使用长格式显示文件内容 如果需要察看更详细的文件资料就要用到 ls -l 这个指令。
ls -F
在列出的文件 目录 名称后加一符号 例如可执行文件加 "*", 目录则加 "/"。 2.cd命令
cd 这个命令是用来进出目录的,它的使用方法和在 dos 下没什么两样,但和dos不同的是Linux的目录对大小写是敏感的如果大小写拼写有误,你的cd操作是成功不了的。另外,cd 如果直接输入,cd 后面不加任何东西。会回到使用者自己的 Home 目录,假设如果是 root 那就是回到/root。这个功能同 cd ~是一样的。 3. mkdir rmdir命令
mkdir 命令用来建立新的目录
如输入如下命令
mkdir work
将在当前目录下新建一个 work 目录
rmdir 用来删除已建立的目录
如输入如下命令
rmdir work
将删除已存在的空目录 work
*如果要删除的目录不为空的话,使用rmdir无法进行删除,使用命令:
[root@foundation0 Desktop]# rm 目录文件 -fr 4. cp命令
cp 这个命令相当于 dos 下面的 copy 命令
具体用法是:
cp –r 源文件(source) 目的文件(target)
参数 r 是指连同源文件中的子目录一同拷贝
在我们的shell设置中,把cp -r的别名设置成了cp,两者功能相同。
5. rm命令
rm 这个命令是用来删除文件的
rm 命令常用的参数有三个-i,-r,-f
比如我现在要删除一个名字为 text 的一个文件
输入如下命令
rm –i test
系统会询问我们是否要删除 test 文件 敲了 y/n 确认是否要删除 test 文件
rm –r 目录名
这个操作可以连同这个目录下面的子目录都删除
功能比上面讲到的 rmdir 更强大 不仅可能删除指定的目录 而且可以删除该目录下所有文件和子目录。
rm –f 文件名
这个操作可以不经确认强制删除文件
*需要强调的是,rm 文件 -fr这个命令是十分危险的,当你不清楚它执行后的结果的时候请不要轻易使用,以免造成文件的丢失。
6. mv命令
mv 这个命令的功能是移动目录或文件
引申的功能是给目录或文件重命名
比如:
mv /tmp/xxx.tar /root
该命令将/tmp 目录下的 xxx.tar 文件移动到/root 目录下,需要注意的是mv此时和cp命令有着些许差别,mv会把移动文件的安全上下文属性保留,cp则会使用目标目录的安全上下文。
查看文件的安全上下文:
[root@foundation0 mnt]# ll file -Z
-rw-r--r--. root root unconfined_u:object_r:mnt_t:s0 file
这个是cp后的结果,安全上下文由mnt_t改为public_content_t。
[root@foundation0 mnt]# cp file /var/ftp/pub/file1
[root@foundation0 mnt]# ll /var/ftp/pub/file1 -Z
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 /var/ftp/pub/file1
这个是mv后的结果,安全上下文未发生改变:
[root@foundation0 mnt]# mv file /var/ftp/pub/
[root@foundation0 mnt]# ll /var/ftp/pub/file -Z
-rw-r--r--. root root unconfined_u:object_r:mnt_t:s0 /var/ftp/pub/file
*安全上下文是linux系统中另外一种安全机制,与selinux是息息相关的。相当于给每个文件一个标签,通过安全上下文可以限制文件的功能。
文件重命名:
mv aaa.tar bbb.tar
则是将当前目录下的文件 aaa.tar 更名为 bbb.tar
7. cat命令
cat 这个命令是 linux 中非常重要的一个命令,它的功能是显示或连结一般的ascii文本文件。它的用法如下:
cat text
该命令显示 text 这个文件的内容
cat file1 file2
该命令依顺序显示 file1,file2 的内容
cat file1 file2>file3
该命令把 file1,file2 的内容结合起来再重定向>到 file3 文件中
8. more命令
more 是显示一般文本文件的指令,如果一个文本文件太长了超过一个屏幕的画面,用cat来看实在是不理想就可以试试 more。
用法如下:
more file1
9. pwd命令
pwd 这个命令的作用是显示用户当前的工作路径,直接输入 pwd 即可。
示例:
[root@foundation0 mnt]# cd /var/ftp/pub/
[root@foundation0 pub]# pwd
/var/ftp/pub
实用工具分三类:编辑器(用于编辑文件);过滤器(用于接收数据并过滤数据);交互程序:(允许用户发送信息或接收来自其他信息)。
使用ping命令会连续不断的发送数据报包,用户使用CTRL+C可以中止数据包的发送。
该命令向目的地址发送的数据包每经过一个网关或路由,就回馈一行信息。内容包括网关或路由主机名或IP地址
显示路由表内容、添加/删除路由记录、添加/删除默认网关
Linux包括三种不同类型的进程:交互进程(由shell启动的进程)、批处理进程(是一个序列,与终端没有联系)、守护进程(在后台持续运行的进程)
Linux的文件访问权限分为三级:文件所有者、群组和其他
命令格式:Chown[选项]user[group]<file>
命令格式:chmod[选项]<mode><file>
find是根据name, ctime, mtime等信息搜索文件的命令,不会根据文件内容去检索,也就是它只利用了iNode的信息,
/usr/local下面几乎都是目录,所以grep需要加-R或-r表示递归查询子目录。另外,实际不加-n也可,毕竟没强调说,要输出'mrtg'所在行。
top查看CPU,netstat显示网络连接、路由表、网络接口信息、free查看内存使用情况、df检查文件系统的磁盘空间的占用情况。
1.原理上:
硬链接(hard link):A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两 个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode 节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同 的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。
软链接(soft link):A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的 inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除 了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
2.使用限制上:
硬链接:a.不能对目录创建硬链接,原因有几种,最重要的是:文件系统不能存在链接环(目录创建时的".."除外,这个系统可以识别出来),存在环 的后果会导致例如文件遍历等操作的混乱(du,pwd等命令的运作原理就是基于文件硬链接,顺便一提,ls -l结果的第二列也是文件的硬链接数,即inode节点的链接数)
b:不能对不同的文件系统创建硬链接,即两个文件名要在相同的文件系统下。
c:不能对不存在的文件创建硬链接,由原理即可知原因。
软链接:a.可以对目录创建软链接,遍历操作会忽略目录的软链接。
b:可以跨文件系统
c:可以对不存在的文件创建软链接,因为放的只是一个字符串,至于这个字符串是不是对于一个实际的文件,就是另外一回事了
3.命令
硬:ln 源文件 链接名
软:ln -s 源文件 链接名
BSS(Block Started by Symbol) 通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。
数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。
代码段: 代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
堆(heap): 堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)
栈(stack): 栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变 量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进后出特点,所以 栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。
使用fork函数得到的子进程从父进程的继承了整个进程的地址空间,包括:进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端等。
子进程与父进程的区别在于:
1、父进程设置的锁,子进程不继承(因为如果是排它锁,被继承的话,矛盾了)
2、各自的进程ID和父进程ID不同
3、子进程的未决告警被清除;
4、子进程的未决信号集设置为空集。
Netd 就是Network Daemon 的缩写,表示Network守护进程. Netd负责跟一些涉及网络的配 置,操作,管理,查询等相关的功能实现,比如,例如带宽控制(Bandwidth),流量统计,带宽控制,网络地址转换(NAT),个人局域(pan),PPP链接,soft-ap,共享上网(Tether),配置路由表,interface配置管理,等等.好像Andorid用的 inetd是监视一些网络请求的,其根据网络请求来调用相应的服务进程来处理连接请求。它可以为多种服务管理连接,当 inetd 接到连接时,它能够确定连接所需的程序,启动相应的进程,并把 socket 交给它 。 ping命令用来测试主机之间网络的连通性,执行ping命令会使用ICMP传输协议,发出要求回应的信息。
netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。
traceroute命令用于追踪数据包在网络上的传输时的全部路径,他默认发送的数据包大小是40字节。
route命令用来显示目前本机路由表的内容,并且还可以针对路由表中的记录来进行相应的添加、删除或修改等操作。
ifconfig命令用来来检测和设置本机的网络接口
命令格式:chown [选项]... [所有者][:[组]] 文件...
sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。
sed命令行格式为: sed [-nefri] ‘command’ 输入文本
常用选项:
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑;
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。
常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g!
g 是行内进行全局替换
usermod(选项)(参数):参数若为两个,顺序一般为 usermod (选项) 目标参数 原始参数 -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号; hosts文件是Linux系统上一个负责ip地址与域名快速解析的文件,以ascii格式保存在/etc/目录下。hosts文件包含了ip地址与主机 名之间的映射,还包括主机的别名。在没有域名解析服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使 用dns服务程序来解决。通过可以将常用的域名和ip地址映射加入到hosts文件中,实现快速方便的访问。
cat /proc/cpuinfo:查看一台linux机器的CPU信息 du:查看该目录占用文件系统数据块的情况
cat /proc/swaps:查看SWAP分区信息
df -lh:查看硬盘信息
du-h:查看当前目录下所有目录以及子目录的大小;
dd:磁盘维护命令
df [选项][文件]显示制定磁盘文件的可用空间,如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间都会被显示。
查看文件内容使用的命令:cat,less,more都可以查看,只是查看的方式不一样,less可以让光标上下移动,more只能用enter键往下翻,cat的话直接跳到最后一页了。
backtrace bt 打印当前的函数调用栈的所有信息。 info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。前面有*的是当前调试的线程。 set scheduler-locking 线程调试显示线程状态, off 不锁定任何线程 info break 可列出所有断点信息,info break 后也可设置要查看的break num
关于Linux的I/O复用接口select和epoll之间的区别:
select 和 epoll效率差异的原因:select采用轮询方式处理连接,epoll是触发式处理连接。
1.Socket数量限制:该限制可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024.
2.操作限制:通过遍历FD_SETSIZE(1024)个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍。
1.Socket数量无限制:该模式下的Socket对应的fd列表由一个数组来保存,大小不限制(默认4k)。
2.操作无限制:基于内核提供的反射模式,有活跃Socket时,内核访问该Socket的callback,不需要遍历轮询。
但当所有的Socket都活跃的时候,所有的callback都被唤醒,会导致资源的竞争。既然都是要处理所有的Socket,
在linux命令中reboot是重新启动,shutdown -r now是立即停止然后重新启动,都说他们两个是一样的,其实是有一定的区别的。
shutdown命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。
精确时间的格式是hh:mm,表示小时和分钟,时间段由+ 和分钟数表示。系统执行该命令后会自动进行数据同步的工作。
该命令的一般格式: shutdown [选项] [时间] [警告信息]
命令中各选项的含义为:
- k 并不真正关机而只是发出警告信息给所有用户
- r 关机后立即重新启动
- h 关机后不重新启动
- f 快速关机重启动时跳过fsck
- n 快速关机不经过init 程序
- c 取消一个已经运行的shutdown
需要特别说明的是该命令只能由超级用户使用。
例1,系统在十分钟后关机并且马上重新启动: # shutdown –r +10
例2,系统马上关机并且不重新启动:# shutdown –h now
halt是最简单的关机命令,其实际上是调用shutdown -h命令。halt执行时,杀死应用进程,文件系统写操作完成后就会停止内核。
halt命令的部分参数如下:
[-f] 没有调用shutdown而强制关机或重启
[-i] 关机或重新启动之前,关掉所有的网络接口
[-p] 关机时调用poweroff,此选项为缺省选项
reboot的工作过程与halt类似,其作用是重新启动,而halt是关机。其参数也与halt类似。reboot命令重启动系统时是删除所有的进程,而不是平稳地终止它们。因此,使用reboot命令可以快速地关闭系统,但如果还有其它用户在该系统上工作时,就会引起数据的丢失。所以使用reboot命令的场合主要是在单用户模式。
init是所有进程的祖先,其进程号始终为1。init用于切换系统的运行级别,切换的工作是立即完成的。init 0命令用于立即将系统运行级别切换为0,即关机;init 6命令用于将系统运行级别切换为6,即重新启动
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
linux提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息, 就可以得到。这种机制就是: 在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。 但是仍然为其保留一定的信息(包括进程号the process ID,退出状态the termination status of the process,运行时间the amount of CPU time taken by the process等)。直到父进程通过wait / waitpid来取时才释放。
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。 僵死进程并不是问题的根源,罪魁祸首是产生出大量僵死进程的那个父进程,所以,解决方法就是kill那个父进程,于是僵尸进程就可以被init进程接收,释放。
tar解压缩命令 语法:tar [主选项+辅选项] 文件或者目录
使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。
主选项: c 创建的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包。
x 从档案文件中释放文件。相当于拆包。
t 列出档案文件的内容,查看已经备份了哪些文件。
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。
辅助选项: -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩或解压? 一般格式为xx.tar.gz或xx. tgz
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩或解压?一般格式为xx.tar.bz2
-v :压缩的过程中显示文件!这个常用
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加其他参数!
-p :使用原文件的原来属性(属性不会依据使用者而变)
- /var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
- /var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
- /var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。
- /var/log/boot.log — 包含系统启动时的日志。
- /var/log/daemon.log — 包含各种系统后台守护进程日志信息。
- /var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
- /var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
- /var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
- /var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
- /var/log/user.log — 记录所有等级用户信息的日志。
- /var/log/Xorg.x.log — 来自X的日志信息。
- /var/log/alternatives.log – 更新替代信息都记录在这个文件中。
- /var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
- /var/log/cups — 涉及所有打印信息的日志。
- /var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。
- /var/log/yum.log — 包含使用yum安装的软件包信息。
- /var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
- /var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
- /var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
- /var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
除了上述Log文件以外, /var/log还基于系统的具体应用包含以下一些子目录:
- /var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
- /var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
- /var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
- /var/log/prelink/ — 包含.so文件被prelink修改的信息。
- /var/log/audit/ — 包含被 Linux audit daemon储存的信息。
- /var/log/samba/ – 包含由samba存储的信息。
- /var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
- /var/log/sssd/ – 用于守护进程安全服务。
route:route命令是在本地 IP 中显示和修改条目 。
tracert:tracert(跟踪路由)是 实用程序,用于确定 IP 数据包访问目标所采取的 。tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个 到网络上其他 主机的路由。
netstat:netstat是 命令,是一个监控TCP/IP 的非常有用的工具,它可以显示 、实际的 连接以及每一个网络接口设备的状态信息。
nohup 在注销后使用 nohup 命令运行后台中的程序。 ctrl+z:可以将一个正在前台执行的命令放到后台,并且暂停; 将文件file1复制成文件file2命令如下:cp file1 file2
cat命令:cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的。
一次显示整个文件命令如下: cat filename
>: linux中的数据流重导向:输出导向,覆盖导向的文件内容。
<: linux中的数据流重导向:输入导向,理解为原本由键盘输入改为文本输入
dd命令: 作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
参数:if 输入文件(或设备名称) of 输出文件(或设备名称)
将文件file1拷贝到文件file2中命令如下: dd if=file1 of=file2
|:管道命令操作符,处理经由前面一个指令传出的正确输出信息,然后,传递给下一个命令,作为标准的输入
ps -aux为查看所有进程;isof是一个当前系统打开文件的工具。 安装命令:rpm -ivh
卸载命令: rpm -e [package name]
查看挂载状态: mount
查看磁盘情况: df
查看端口:netstat –anlp
转载地址:http://cutmi.baihongyu.com/