Linux
<!doctype html>
Linux
创始人
Linux的发展始于1991年,它是有芬兰的一名大学生开发的
Linus Torvalds
DNS配置文件
resolv.conf是各种操作系统域名解析器(DNS Resolver)的配置文件,当一个程序需要通过域名来访问Internet上面的其他主机时,需要利用Resolver库函数将域名转换成对应的ip,然后才可访问
IP映射文件
etc/hostname文件包含了Linux系统的主机名,包括完全的域名,不当选;B项,/etc/hosts文件包含了IP地址和主机名之间的映射
bash提示符
PS1就是用来控制当前命令提示符的,而PS2则用来控制命令没有输完就换行的情况下的提示符
bin目录
大部分主要的Linux系统文件是存放在bin目录下面的
shell文件
在当前目录下执行一个shell文件file
- sh file
- file
- source file
source
xxxxxxxxxx
source FileName
source命令作用
在当前bash环境下读取并执行FileName中的命令。
*注:该命令通常用命令“.”来替代。
通配符
shell常见的通配符,注意与正则稍有不同:
| 字符 | 含义 | 实例 | 
|---|---|---|
| * | 匹配0个或多个任意字符 | a*b,a与b之间可以有任意长度的字符,也可以没有。例如:aabcb,ab,azxcb... | 
| ? | 匹配一个任意字符 | a?b,a与b之间必须但也只能存在一个字符,该字符可以是任意字符。例如:aab,abb,acb... | 
| [list] | 匹配list中的任意单个字符 | a[xyz]b,a与b之间必须但也只能存在一个字符,该字符只能是x或y或z。例如:axb,ayb,azb | 
| [!list] | 匹配除list中的任意单个字符 | a[!a-z]b,a与b之间必须但也只能存在一个字符,该字符不能是小写字母。例如:aAb,a0b... | 
| [c1-c2] | 匹配c1-c2间的任意单个字符 | a[0-1]b,a与b之间必须但也只能存在一个字符,该字符只能是数字。例如:a0b,a1b... | 
| {string1,string2,...} | 匹配string1、string2等中的一个字符串 | a{abc,xyz,opq}b,a与b之间必须但也只能存在一个字符串,字符串只能是abc或xyz或opq。例如:aabcb,axyzb,aopqb... | 
cd
命令用于切换当前工作目录,~ 也表示为 home 目录 的意思, . 则是表示目前所在的目录, .. 则表示目前目录位置的上一层目录。
xxxxxxxxxx
cd [dirName]
- dirName:要切换的目标目录
ls
命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
语法
xxxxxxxxxx
 ls [-alrtAFR] [name...]
参数 :
- -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
- -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
- -r 将文件以相反次序显示(原定依英文字母次序)
- -t 将文件依建立时间之先后次序列出
- -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
- -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
- -R 若目录下有文件,则以下之文件亦皆依序列出
显示当前用户名准确的名称
- whoami
- lastlog
usermod
Linux usermod命令用于修改用户帐号。
usermod可用来修改用户帐号的各项设定。
语法
xxxxxxxxxx
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]
参数说明:
- -c<备注> 修改用户帐号的备注文字。
- -d登入目录> 修改用户登入时的目录。
- -e<有效期限> 修改帐号的有效期限。
- -f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。
- -g<群组> 修改用户所属的群组。
- -G<群组> 修改用户所属的附加群组。
- -l<帐号名称> 修改用户帐号名称。
- -L 锁定用户密码,使密码无效。
- -s 修改用户登入后所使用的shell。
- -u 修改用户ID。
- -U 解除密码锁定。
ps
Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
语法
xxxxxxxxxx
ps [options] [--help]
参数:
- 
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 
- 
-A 列出所有的进程 
- 
-w 显示加宽可以显示较多的资讯 
- 
-au 显示较详细的资讯 
- 
-aux 显示所有包含其他使用者的行程 
- 
au(x) 输出格式 : xxxxxxxxxx11USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND- 
USER: 行程拥有者 
- 
PID: pid 
- 
%CPU: 占用的 CPU 使用率 
- 
%MEM: 占用的记忆体使用率 
- 
VSZ: 占用的虚拟记忆体大小 
- 
RSS: 占用的记忆体大小 
- 
TTY: 终端的次要装置号码 (minor device number of tty) 
- 
STAT: 该行程的状态: - D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
 
- 
START: 行程开始时间 
- 
TIME: 执行的时间 
- 
COMMAND:所执行的指令 
- 
a:显示一个终端的所有进程,除会话引线外; 
- 
u:显示进程的归属用户及内存的使用情况; 
- 
x:显示没有控制终端的进程; 
- 
-l:长格式显示更加详细的信息; 
- 
-e:显示所有进程; 
 实例 
- 
查找指定进程格式:
xxxxxxxxxx
ps -ef | grep 进程关键字
ifconfig
Linux ifconfig命令用于显示或设置网络设备。
ifconfig可设置网络设备的状态,或是显示目前的设置。
语法
xxxxxxxxxx
ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
参数说明:
- add<地址> 设置网络设备IPv6的IP地址。
- del<地址> 删除网络设备IPv6的IP地址。
- down 关闭指定的网络设备。
- <hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
- io_addr<I/O地址> 设置网络设备的I/O地址。
- irq<IRQ地址> 设置网络设备的IRQ。
- media<网络媒介类型> 设置网络设备的媒介类型。
- mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
- metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
- mtu<字节> 设置网络设备的MTU。
- netmask<子网掩码> 设置网络设备的子网掩码。
- tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
- up 启动指定的网络设备。
- -broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
- -pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
- -promisc 关闭或启动指定网络设备的promiscuous模式。
- [IP地址] 指定网络设备的IP地址。
- [网络设备] 指定网络设备的名称。
实例
显示网络设备信息
xxxxxxxxxx
# ifconfig        
eth0   Link encap:Ethernet HWaddr 00:50:56:0A:0B:0C 
     inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0
     inet6 addr: fe80::250:56ff:fe0a:b0c/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:172220 errors:0 dropped:0 overruns:0 frame:0
     TX packets:132379 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000 
     RX bytes:87101880 (83.0 MiB) TX bytes:41576123 (39.6 MiB)
     Interrupt:185 Base address:0x2024 
lo    Link encap:Local Loopback 
     inet addr:127.0.0.1 Mask:255.0.0.0
     inet6 addr: ::1/128 Scope:Host
     UP LOOPBACK RUNNING MTU:16436 Metric:1
     RX packets:2022 errors:0 dropped:0 overruns:0 frame:0
     TX packets:2022 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0 
     RX bytes:2459063 (2.3 MiB) TX bytes:2459063 (2.3 MiB)
启动关闭指定网卡
xxxxxxxxxx
# ifconfig eth0 down
# ifconfig eth0 up
为网卡配置和删除IPv6地址
xxxxxxxxxx
# ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //为网卡设置IPv6地址
# ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //为网卡删除IPv6地址
用ifconfig修改MAC地址
xxxxxxxxxx
# ifconfig eth0 down //关闭网卡
# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址
# ifconfig eth0 up //启动网卡
# ifconfig eth1 hw ether 00:1D:1C:1D:1E //关闭网卡并修改MAC地址 
# ifconfig eth1 up //启动网卡
配置IP地址
xxxxxxxxxx
# ifconfig eth0 192.168.1.56 
//给eth0网卡配置IP地址
# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 
// 给eth0网卡配置IP地址,并加上子掩码
# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255
// 给eth0网卡配置IP地址,加上子掩码,加上个广播地址
启用和关闭ARP协议
xxxxxxxxxx
# ifconfig eth0 arp  //开启
# ifconfig eth0 -arp  //关闭
设置最大传输单元
xxxxxxxxxx
# ifconfig eth0 mtu 1500 
//设置能通过的最大数据包大小为 1500 bytes
root
系统鉴别root用户的依据是uid是0的用户
man
man命令是Linux下最核心的命令之一。而man命令也并不是英文单词“man”的意思,它是单词manual的缩写,即使用手册的意思。
man命令会列出一份完整的说明。 其内容包括命令语法、各选项的意义及相关命令 。更为强大的是,不仅可以查看Linux中命令的使用帮助,还可以查看软件服务配置文件、系统调用、库函数等帮助信息。
man手册页文件存放在/usr/share/man目录下。
语法格式:man [命令]
常用参数:
| -a | 在所有的man帮助手册中搜索 | 
|---|---|
| -d | 主要用于检查,如果用户加入了一个新的文件,就可以用这个参数检查是否出错 | 
| -f | 显示给定关键字的简短描述信息 | 
| -p | 指定内容时使用分页程序 | 
| -M | 指定man手册搜索的路径 | 
| -w | 显示文件所在位置 | 
man命令内容组成的介绍:
- 用户命令的使用方法,可以使用的参数等
- 系统调用,只有系统才能执行的函数
- 库调用,大多是libc函数,如qsort(3)
- 设备和特殊文件
- 文件格式和约定
- 游戏
- 宏命令包和约定
- 系统管理命令,多数只有root可以执行
- 内核程序
- Tcl或Tk指令
快捷键:
| q | 退出 | 
|---|---|
| Enter | 按行下翻 | 
| Space | 按页下翻 | 
| b | 上翻一页 | 
| /字符串 | 在手册页中查找字符串 | 
参考实例
查看cp命令的帮助信息:
xxxxxxxxxx
[root@linuxcool ~]# man cp
查看/etc/passwd文件的信息:
xxxxxxxxxx
[root@linuxcool ~]# man /etc/passwd
查看passwd命令所在位置:
xxxxxxxxxx
[root@linuxcool ~]# man -w passwd
/usr/share/man/man1/passwd.1.gz
查看/etc/passwd文件手册页所在位置:
xxxxxxxxxx
[root@linuxcool ~]# man -w 5 passwd
/usr/share/man/man5/passwd.5.gz
in
Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
语法
xxxxxxxxxx
 ln [参数][源文件或目录][目标文件或目录]
其中参数的格式为
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
命令功能 : Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
软链接:
- 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 2.软链接可以 跨文件系统 ,硬链接不可以
- 3.软链接可以对一个不存在的文件名进行链接
- 4.软链接可以对目录进行链接
硬链接:
- 1.硬链接,以文件副本的形式存在。但不占用实际空间。
- 2.不允许给目录创建硬链接
- 3.硬链接只有在同一个文件系统中才能创建
命令参数
必要参数:
- -b 删除,覆盖以前建立的链接
- -d 允许超级用户制作目录的硬链接
- -f 强制执行
- -i 交互模式,文件存在则提示用户是否覆盖
- -n 把符号链接视为一般目录
- -s 软链接(符号链接)
- -v 显示详细的处理过程
选择参数:
- -S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
- -V "-V<备份方式>"或"--version-control=<备份方式>"
- --help 显示帮助信息
- --version 显示版本信息
实例
给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:
xxxxxxxxxx
ln -s log2013.log link2013
输出:
xxxxxxxxxx
[root@localhost test]# ll
-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log
[root@localhost test]# ln -s log2013.log link2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log
给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同
xxxxxxxxxx
ln log2013.log ln2013
输出:
xxxxxxxxxx
[root@localhost test]# ll
lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log
[root@localhost test]# ln log2013.log ln2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 2 root bin      61 11-13 06:03 ln2013
-rw-r--r-- 2 root bin      61 11-13 06:03 log2013.log
shell变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
xxxxxxxxxx
your_name="runoob.com"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
有效的 Shell 变量名示例如下:
xxxxxxxxxx
RUNOOB
LD_LIBRARY_PATH
_var
var2
无效的变量命名:
xxxxxxxxxx
?var=123
user*name=runoob
除了显式地直接赋值,还可以用语句给变量赋值,如:
xxxxxxxxxx
for file in `ls /etc`
或
for file in $(ls /etc)
以上语句将 /etc 下目录的文件名循环出来。
使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
xxxxxxxxxx
your_name="qinjx"
echo $your_name
echo ${your_name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
xxxxxxxxxx
for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done
如果不给skill变量加花括号,写成
xxxxxxxxxx
echo "I am good at $skillScript"
,解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。
推荐给所有变量加上花括号,这是个好的编程习惯。
已定义的变量,可以被重新定义,如:
xxxxxxxxxx
your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name
这样写是合法的,但注意,第二次赋值的时候不能写
xxxxxxxxxx
$your_name="alibaba"
使用变量的时候才加美元符($)。
只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
下面的例子尝试更改只读变量,结果报错:
xxxxxxxxxx
#!/bin/bash
myUrl="https://www.google.com"
readonly myUrl
myUrl="https://www.runoob.com"
运行脚本,结果如下:
xxxxxxxxxx
/bin/sh: NAME: This variable is read only.
删除变量
使用 unset 命令可以删除变量。语法:
xxxxxxxxxx
unset variable_name
变量被删除后不能再次使用。unset 命令不能删除只读变量。
实例
xxxxxxxxxx
#!/bin/sh
myUrl="https://www.runoob.com"
unset myUrl
echo $myUrl
以上实例执行将没有任何输出。
变量类型
运行shell时,会同时存在三种变量:
- 1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
- 2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
- 3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
apache
Web服务器Apache默认的接听连接端口号是80
tar
Linux tar(英文全拼:tape archive )命令用于备份文件。
tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
实例
压缩文件 非打包
xxxxxxxxxx
# touch a.c       
# tar -czvf test.tar.gz a.c   //压缩 a.c文件为test.tar.gz
a.c
列出压缩文件内容
xxxxxxxxxx
# tar -tzvf test.tar.gz 
-rw-r--r-- root/root     0 2010-05-24 16:51:59 a.c
解压文件
xxxxxxxxxx
# tar -xzvf test.tar.gz 
a.c
deluser
实例
xxxxxxxxxx
deluser user
要删除用户user,同时也删除其家目录
passwd文件
Linux中,文件passwd中保存有所有合法用户的账号信息。
可执行路径
可以使用which命令查看某个可执行程序的路径,如果想使用新编译出来的可执行程序,可以通过修改文件搜索路径来实现。
比如查看kore框架下的kodev命令路径:which kore
- 查看所有的搜索路径:echo $PATH
- 添加新的路径:
(1)只对当前shell窗口有效:
export PATH=$PATH:/new path
(2)对所有窗口有效:
修改当前用户的.bash_profile文件,在PATH=$PATH……后添加":/new path";
保存退出后,需要在当前窗口中执行". .bash_profile",更新配置,之后用echo $PATH显示更新后的路径,可以看到新加入的路径;
注意:在重新登录前所有新打开的shell窗口要用到新的路径都需要执行". .bash_profile",更新配置,因为.bash_profile文件的内容在用户登录时就读取了;
后台运行
“&” 命令行结尾法:**
在Unix/Linux下如果想让程序独立终端运行,一般都是使用 & 在命令结尾来让程序自动运行。
自由软件
根据自由软件基金会的定义,“自由软件”(Free Software)表示的是那些赋予用户运行、复制、分发、学习、修改并改进软件这些自由的软件。
traceroute
ceroute是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。traceroute的原理是试图以最小的TTL(存活时间)发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。发送数据包的大小默认为38个字节。
分区
在创建linux分区时,一定要创建SWAP/根分区两个分区
默认分区时ETX3

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号