1. Linux用户相关命令
1.1 用户切换
Linux 下有两种用户:超级用户(root)、普通用户。
a) 超级用户:可以再 linux 系统下做任何事情,不受限制。
b)普通用户:在 linux 下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。
例如,要从 root 用户切换到普通用户 user,则使用 su user。
要从普通用户 user 切换到 root 用户则使用 su root(root可以省略),此时系统会提示输入 root 用户的口令。
1.2 添加用户
命令:useradd 用户名
功能:添加一个普通用户。
例如,要想添加一个普通用户 user1 , 则可以使用 useradd user1。使用该命令后,系统会在 目录“/home” 下建立一个名为 user1 的目录。加 -m 才会创建目录。
1.3 设置密码
命令:passwd 用户名
功能:设置或修改用户名的密码。
例如,我们要给刚才创建的 user1 用户设置一个密码123456,则使用 passwd user1,然后系统会提示你输入新密码。
2. 查看文件或目录
命令:ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。Linux 文件
系统不是根据后缀名来执行文件的,而是根据此文件是否有可执行权限。
常用的选项有:
-a 显示指定目录下所有子目录与文件。例如 列出“/root/home”目录下的所有子目录及文件,则使用ls –a /root/home 。
-l 列出指定目录下所有目录及文件的详细信息。例如 列出“/root/home”目录下的所有子目录及文件,则使用ls –l /root/home 。每行列出的详细信息依次是:
文件类型与权限 连接数 文件所有者 文件所属组 文件大小 最近修改时间 文件名字。
使用 ls –l 命令显示的信息中 ,开头是由 10 个字母构成的字符串,其中第一个字符表示文件类型,它可以是下列类型之一:
- :普通文件
d : 目录
l :符号链接
b :块设备文件
c :字符设备文件
p :命名管道
s :socket 文件
后面的 9 个字符表示文件的访问权限,分为 3 组,每组 3位。
第一组表示文件创建者的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读、写、执行权限。
各权限如下:r(读)、w(写)、x(执行)、_(没有设置权限)。每一组可以用一个数字表示,例如 r_x :5 , rw_:6,R__:4,那么这三组就可以用 3 个数字表示,例如 rwxr_xr_x:755 , rw_r__r__:644。
ls 输出内容是有颜色的,比如:目录是蓝色,压缩文件是红色的显示,如果没有颜色,可以加上参数--color=never 表 示 输 出 没 有 彩 色 , 而 --color=auto 表 示 自 动 ,--color=always 表示始终有颜色。如果需要更加详细的参数描述,可以通过如下方式获得 ls 的帮助:man ls。
3. 改变工作目录
命令:cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下,例如要切换当前目录到“/home/user/0718”目录,则使用
cd /home/user/0718。
常用的切换目录命令:
cd .. 到父目录
cd / 到根目录
cd ~ 到用户主目录下~ 与直接执行 cd 效果一样
cd – 到上一次目录
4. 显示当前工作目录
命令 : pwd
功能 : 显示用户当前所在的目录。例如当我们使用命令 cd /home/user/0718 时,再使用命令 pwd 则命令行会显示
/home/user/0718。
5. 创建目录
命令:mkdir [选项] dirname
功能:在当前目录下创建一个名为 “dirname”的目录。例如 要在当前目录下创建一个名为“07181”的目录,则使用命令
mkdir 07181。系统就会在当前目录下,创建一个 07181 的目录,此时可以使用 ls –l 查看。
6. 删除目录
命令:rmdir [选项] dirname
功能:在当前工作目录下删除目录名为“dirname”的子目录。
此时该子目录必须是个空目录。我们刚才创建了一个空目录 07181,如果我们想把它删掉,则使用 rmdir 07181 。此时再
使用 ls –l 列举一下,这时发现 07181 已经被删掉了。如果使用该命令删除一个非空的目录,则删除失败。
7. 拷贝文件或目录
命令 cp [选项] 源文件或目录 目标文件或目录
功能:把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。
常用参数:
-f 若目标目录中存在与源文件同名的文件,则直接覆盖,不提 示 。 例 如 将 当 前 目 录 下 的 main.c 文 件 拷 贝 到
“/home/user/0718”下,并且若存在同名的则进行覆盖,使用:cp–f ./main.c /home/user/0718 。
如果在拷贝的同时将源文件重命名,例如将当前目录下的 main.c 文件拷贝到“/home/user/0718”目录下并命名为 main1.c,
则使用: cp –f ./main.c /home/user/0718/main1.c。
-i 和-f 相反,当目标文件中存在于源文件同名的文件,copy 时系统会提示是否进行覆盖。里如上例,若在拷贝过程中,目
标文件中存在与源文件同名的文件,需要提示是否覆盖,则只需要将上例中的-f 改为 –I 即可。例如
cp –i ./main.c /home/user/0718 。
cp –i ./main.c /home/user/0718/main1.c。
-r 如果要拷贝的是一个目录,此时将同时拷贝该目录下的子目录 和 文 件 。 此 时 目 标 文 件 必 须 为 一 个 目 录 。 例 如 ,
将 ”/home/user/0718” 目 录 下 的 所 有 文 件 及 目 录 拷 贝 到 “/home/user1”目录下,则使用
cp –r /home/user/0718 /home/user1 。(重点)
8. 移动文件或目录(也可以重命名)
命令:mv[选项] 源文件或目录 目标文件或目录
功能:视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录),mv 命令将文件重命名或将其移至一个新的目录
中。当第二个参数类型是文件时,mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的
源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv 命令
将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv 先拷贝,再将原有文件删除,而链至该文件的链
接也将丢失。
参数:
-i 如果在移动的过程中存在重名的,则进行提示是否覆盖。
-f 若果在移动的过程中存在重名的,则直接进行覆盖,不会给出提示。
例如 要将 “/home/user/0718”下的 main.c 文件重命名为main.cpp,则使用
mv /home/user/0718/main.c /home/user/0718/main.cpp。
要 将 “ /home/user/0718 ” 下 的 所 有 内 容 移 动 到 “/home/user/0719”,则使用
mv –f /home/user/0718 /home/user/0719。
9. 删除文件或目录
命令:rm [选项] 文件或目录
功能:在 linux 中创建文件很容易,系统中随时会有文件变得过时且毫无用处。用户可以用 rm 命令将其删除。该命令的功能
为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是
删除了链接,原有文件均保持不变。如果删除时没有-r 选项则不会删出目录。
参数:
-f 删除过程中不会给出提示。
-i 删除过程中会给出交互式提示。
-r 如果删除的是一个目录,则将该目录下的目录及子目录均删除掉。
例如要删除 “/home/user/0718”目录下的 main.cc main.exe则使用,
rm -f /home/user/0718/main.cc /home/user/0718/main.exe
若果要删除“/home/user/0718”这个目录,则使用
rm –rf /home/user/0718。
10.查看文件内容
命令: cat[选项] [文件]
功能: 查看目标文件的内容
参数:
-b 对非空输出行编号
-E 在每行结束处显示$
-n 对输出的所有行编号
-s 不输出多行空行。
例如 要查看当前目录下的 main.cc 的内容则使用:cat main.cc。
标准的输入输出与重定向:
文件描述符是一个整数,它代表一个打开的文件,标准的三个描述符号:
标准输入:一般指键盘,描述符为:0
标准输出:一般指屏幕输出,描述符为:1
错误输出:也是屏幕,描述符为:2
重定向符号:
<重定向输入 、 >重定向输出 、 >>添加输出 、 2>错误重定向 、 &>错误和信息重定向
Cat >file1 <file2
./main text1.txt >text5.txt 2>&1
cat 常常与重定向一起使用。其中>表示创建,>>表示追加,<<表示以什么结束
如果 cat 的命令行中没有参数,它就会从标准输入中读取数据,并将其送到标准输出。
11. linux 中创建空文件的四种方式
方式 1: echo > a.txt(好像会有一个字节)
方式 2: touch b.txt
方式 3: cat> c.txt 按 ctrl+c 组合键退出;或 Ctrl+d
方式 4: vi d.txt 进入之后:wq 退出。 vim用法同vi。
12.显示文件内容的前几行
命令:head –n 行数值 文件名
功能:显示目标文件的前几行。
例如 要显示 当前目录下 main.cc 的前 10 行,则使用 head –n 10 main.cc。
13. 显示文件的后几行
命令: tail –n 行数值 文件名。
功能:显示目标文件的最后几行。
例如 要显示“/home/user/0718/”目录下的 main.cc 文件的最后 10 行。则使用 tail –n 10 /home/user/0718/main.cc。
14. 统计文档wc
用法: wc 文件名字
作用 :统计该文件的下列属性:行数, 单词数量(空格分割的看做单词), 字符数量, 文件名称
15.管道与命令替换
管道:是重定向的一种,就像一个导管一样,将一个程序或命令的输出作为另一个程序或命令的输入。eg: #ls –l /etc | wc –w
命令替换:和重定向有点相似,但区别在于命令替换是将一个命令的输出作为另一个命令的参数。常用的格式为 :
command1 `command2`或 command1 $(command2)
举例:
首先列出当前的所有信息,并重定向到 aa 文件中:
#ls | cat >aa 或 ls >aa
然后,通过命令替换,列出 aa 文件中所有的文件信息
#ls –l `cataa` 或者用 ls –l$(cat aa)
16.文件或目录的创建掩码
umask 指文件(0666)或目录(0777)创建时在全部权限中要去掉的一些权限,普通用户缺省时 umask 的值为 002,超
级用户为 022。 002 表示创建目录时所有者的权限不去掉, 所属组权限不去掉,其他组权限写属性去掉。
创 建 一 文 件 以 后 , 普 通 用 户 缺 省 的 权 限 为 664,超级用户: 644
创 建 一 目 录 以 后 , 普 通 用 户 缺 省 的 权 限 为 775,超级用户: 755
可以通过 umask 查看默认的缺省的掩码值。通过 umask 001修改掩码值。
17.改变目录或文件的权限
功能:chmod 命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。
语法:该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
说明:我们利用 ls –l 长格式列出文件或目录的基本信息如下:文件类型与权限 链接数 文件所有者 文件属组 文件大小 最近
修改的时间 名字对于权限,有第一组表示文件所有者的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读、写和执行权限。可以通过 chmod 来修改权限。
1. 文字设定法
chmod [who][+|-|=][mode] 文件名 //修改指定文件名中 who的权限增加/去除/赋值为 mode
参数:
操作对象 who 可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件所有者有相同组 ID 的所
有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。即 chmod +x 1.c 表示所有人都有可执行的权限。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置 mode 所表示的权限可用下述字母的任意组合(当组合的时候,who 不能少):
r 可读
w 可写
x 可执行
文件名:以空格分开的要改变权限的文件列表,支持通配符。在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:
chmod g+r,o+rexample 使同组和其他用户对文件 example 有读权限。
2. 数字设定法
我们必须首先了解用数字表示的属性的含义:0 表示没有权限,1 表示可执行权限,2 表示可写权限,4 表示可读权限,然后将
其相加。所以数字属性的格式应为 3 个从 0 到 7 的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的所有者有"读/写"二种权限,需要把 4(可读)+2(可写)=6(读/写).
数字设定法的一般形式为:chmod [mode] 文件名
3. 例子:
(1)文字设定法:
例 1:$ chmod a+x sort 即设定文件 sort 的属性为:
文件所有者(u) 增加执行权限与文件所有者同组用户(g) 增加执行权限其他用户(o) 增加执行权限
例 2:$ chmod ug+w,o-xtext 即设定文件 text 的属性为:文件所有者(u) 增加写权限与文件所有者同组用户(g) 增加写权限
其他用户(o) 删除执行权限
例 3:$ chmod a–x mm.txt
$ chmod –x mm.txt
$ chmod ugo–x mm.txt
以上这三个命令都是将文件 mm.txt 的执行权限删除,它设定的对象为所有使用者。
(2)数字设定法:
例 1: $ chmod 644 mm.txt
$ ls –l
即设定文件 mm.txt 的属性为:-rw-r--r-- 1inin users1155 Nov5 11:22 mm.txt
文件所有者(u)inin 拥有读、写权限与文件所有者同组人用户(g) 拥有读权限其他人(o) 拥有读权限
例 2: $ chmod 750 wch.txt
$ ls –l
-rwxr-x--- 1 inin users 44137 Nov12 9:22 wchtxt
即设定 wchtxt 这个文件的属性为:
文件主本人(u)inin 可读/可写/可执行权与文件主同组人(g) 可读/可执行权其他人(o) 没有任何权限。
18.文件查找
命令:find 起始目录 查找条件 操作
功能:在指定目录结构中搜索问价,并执行指定的操作。
该命令的查找条件可以是一个逻辑运算符 not、and、or 组成的复合条件。
(1)and:逻辑与,在命令中用-a 表示,表示只有当所给的 条 件 都 满 足 时, 查 找 条 件 才 满 足 。 例 如 在
“/home/user”目录下查找名为 0718 类型是一个目录的文件。则使用find /home/user –name 0718 –a -type d
(2)or:逻辑或,在命令中用-o 表示,表示只要所给的条有一个满足,查找条件就满足。例如在“/home/user”
目录下查找名字为 main.cc 或名字为 main.c 的文件。则使用find /home/user -name main.cc -o -name main.c。
(3)not:逻辑非,在命令中用!表示查找不满足所给条件的文件。例如在“/home/user“下查找名字不是main.c 的文件,则使用
find /home/user ! –namemain.cc 。
常用的查找条件有:
(1)根据名称和文件属性查找。
-name ’字串’ 查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。
-gid n 查找属于 ID 号为 n 的用户组的所有文件。
-uid n 查找属于 ID 号为 n 的用户的所有文件。
-group ’字串’ 查找属于用户组名为所给字串的所有的文件。
-user ’字串’ 查找属于用户名为所给字串的所有的文件。
-empty 查找大小为 0 的目录或文件。
-perm 权限 查找具有指定权限的文件和目录,权限的表示可以如 711,644。
-sizen[bckw] 查找指定文件大小的文件,n 后面的字符表示单位,缺省为 b,代表 512 字节的块。
-type x 查找类型为 x 的文件,x 为下列字符之一:
b 块设备文件
c 字符设备文件
d 目录文件
p 命名管道(FIFO)
f 普通文件
l 符号链接文件(symbolic links)
s socket 文件
(2)根据时间查找
- amin n 查找 n 分钟以前被访问过的所有文件。(+表示 n分钟之前,-表示 n 分钟之内,+号和-号都不能省略)
- cmin n 查找 n 分钟以前文件状态被修改过的所有文件。
- mmin n 查找 n 分钟以前文件内容被修改过的所有文件。
- atime n 查找 n 天以前被访问过的所有文件。
- ctimen 查找 n 天以前文件状态被修改过的所有文件。
- mtime n 查找 n 天以前文件内容被修改过的所有文件。
(3)可执行的操作。
- exec 命令名称 {} :对符合条件的文件执行所给的 Linux命令,而不询问用户是否需要执行该命令。{}表示命令的参数即为所找到的文件;命令的末尾必须以“ \;”结束。例如,在“/home/user“目录下查找名为 main.c 文件并显示这些文件的详细信息,则使用
find /home/user –name main.c -execls –l {} \;
find /home/luke-name main.c |xargs ls -l
- ok 命令名称 {} :对符合条件的文件执行所给的 Linux命令,与 exec 不同的是,它会询问用户是否需要执行该命令。
19.搜索文件内容 grep
命令:grep [选项][查找模式][文件名 1,文件名 2,…]
功能:grep 过滤器查找指定字符模式的文件,并显示含有此模式的所有行。被寻找的模式称为正则表达式。
常用的一些正则表达式
^ :以什么开头 ,例如 ls –l | grep ^d 显示当前目录下的所有子目录的详细信息。
$ :以什么结尾 。例如 ls –l | grep c$ 显示当前目录下以 c 结尾的文件。
常用的参数:
-E 每个模式作为一个扩展的正则表达式对待。等价于 egrep,使用最新的正则表达式
-F 每个模式作为固定的字符串对待
-c 只显示匹配行的数量。
-i 比较式不区分大小写。
-n 在输出前加上匹配串所在的行号。
20. 文档管理
命令:tar[主选项+辅选项] 目标文档 源文件或目录
功能:tar 可以为文件和目录创建档案。利用 tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案, 现在用户可以在任何设备上创建档案,如软盘。利用 tar 命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
常用参数:
c:创建新的档案文件。
r: 要把存档的文件追加到档案文件的末尾。tar rf *.tartest
x:从档案文件中释放文件。
f:使用档案文件或设备。
v:在归档过程中显示处理的文件。
z:用 gzip 来压缩/解压缩文件,后缀名为.gz,加上该选项后可以将档案文件进行压缩。
例如,把“/home/user/0718”下的所有后缀为.c 的归档到 source.tar,则使用 tar cvf source.tar /home/user/0718/*.c
若果在归档的过程中还要进行压缩,则使用tar czvf source.tar.gz /home/user/0718/*.c。
如果要将归档的文件 source.tar 释放掉,则使用Tar xvf source.tar
若果将归档后的压缩文件释放掉,则使用Tar xzvf source.tar.gz。
21.文件压缩解压
命令:gzip/bzip2 [选项]压缩或解压缩的文件名
功能:gzip 用来将文件压缩成后缀为.gz 的压缩文件,或者将后缀为.gz 的文件进行解压。Bzip2 用来将文件压缩成后缀名
为.bz2 的压缩文件,或者将后缀为.bz2 的压缩文件解压。
常用参数:
-d: 将压缩文件进行解压。
-v: 在压缩或解压过程中显示解压或压缩的文件。
例如,将 main.c 进行压缩,则使用Gzip/bzip2 –v main.c。 则就会将 main.c 压缩成 main.c.gz 或者 main.c.bz2 。
如果将刚才的压缩文件解压,则使用Gzip –dv main.c.gz,或者 bzip2 –dv main.c.bz2。
22. 查看硬盘的使用情况
查看文件系统各个硬盘大小
df -a 列出所有的文件系统
df -k 以K为单位显示
df -h 以人性化单位显示,可以是b,k,m,g,t..
23. 查看目录的大小
du -sh dirname
-s 仅显示总计
-h 以K、M、G为单位,提高信息的可读性。KB、MB、GB是以1024为换算单 位, -H以1000为换算单位。
例:du -sh /www
查看www文件夹大小
24. 远程拷贝文件
scp是securecopy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器 ,而且scp传输是加密的,可能会稍微影响一下速度。
一般有6中用法:
1)本地复制远程文件(把远程的文件复制到本地):
scp root@10.108.84.108:/val/test/test.tar.gz /val/test/test.tar.gz
2)远程复制本地文件(把本地的文件复制到远程主机上):
scp /val/test.tar.gz root@10.108.84.108:/val/test.tar.gz
3)本地复制远程目录(把远程的目录复制到本地;参数 r 递归复制):
scp -r root@www.test.com:/val/test/ /val/test/
4)远程复制本地目录(把本地的目录复制到远程主机上):
scp -r /val/ root@10.108.84.108:/val/
5)本地复制远程文件到指定目录(把远程的文件复制到本地):
scp root@www.test.com:/val/test/test.tar.gz /val/test/
6)远程复制本地文件到指定目录(把本地的文件复制到远程主机上):
scp /val/test.tar.gz root@www.test.com:/val/
25. 查看CPU 机器型号 内存 系统负载、磁盘等信息
系统
uname -a # 查看内核/操作系统/CPU信息
cat /proc/cpuinfo # 查看CPU信息
hostname # 查看计算机名
env # 查看环境变量
lsb_release -a #即可列出所有版本信息
cat /etc/issue #查看版本信息
资源与系统负载
free -h # 查看内存使用量和交换区使用量
df -h # 查看各分区使用情况
du -sh <目录名> # 查看指定目录的大小
grep MemTotal /proc/meminfo # 查看内存总量
grep MemFree /proc/meminfo # 查看空闲内存量
uptime # 查看系统运行时间、用户数、负载
cat /proc/loadavg # 查看系统负载
磁盘和分区
mount | column -t # 查看挂接的分区状态
fdisk -l # 查看所有分区
swapon -s # 查看所有交换分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况
26. 查看网络
ifconfig # 查看所有网络接口的属性
iptables -L # 查看防火墙设置
route -n # 查看路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s # 查看网络统计信息
27. 查看进程
ps 作用:显示进程
-e属性,显示所用进程; -f 属性,是全格式显示
ps aux
ps -elf
ps -ef # 查看所有进程
top # 实时显示进程状态
28. 查看用户
w # 查看活动用户
id <用户名> # 查看指定用户信息
last # 查看用户登录日志
cut -d: -f1 /etc/passwd #系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组
crontab -l # 查看当前用户的计划任务用户
29. lsof 使用以及修改系统进程打开的文件数限制
该命令用于查看进程或应用程序打开的文件描述符信息
输出信息
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
其中FD 列中的文件描述符cwd 值表示应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改。
txt 类型的文件是程序代码,如应用程序二进制文件本身或共享库,其次数值表示应用 程序的文件描述符,这是打开该文件
时返回的一个整数。
u 表示该 文件被打开并处于读取/写入模式,而不是只读 ® 或只写 (w) 模式。同时还有大写 的W表示该应用程序具有对整个文件
的写 锁。该文件描述符用于确保每次只能打开一个应用程序实例。初始打开每个应用程序时,都具有三个文件描述符,从 0 到
2, 分别表示标准输入、输出和错误流。所以大多数应用程序所打开的文件的 FD 都是从 3 开始。
与 FD 列相比,Type 列则比较直观。文件和目录分别称为 REG 和 DIR。而CHR 和 BLK,分别表示字符和块设备;
或者 UNIX、FIFO 和 IPv4,分别表示 UNIX 域套接字、先进先出 (FIFO) 队列和网际协议 (IP) 套接字。
lsof filename 显示打开指定文件的所有进程
lsof -a 表示两个参数都必须满足时才显示结果
lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件
lsof -u username 显示所属user进程打开的文件
lsof -g (-p)gid 显示归属gid的进程情况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
lsof -d FD 显示指定文件描述符的进程
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
lsof -i 用以显示符合条件的进程情况
lsof -p 进程PID 查看某特定进程打开的文件描述符
lsof -a -p PID -d txt 筛选文件描述符为 txt的记录 参数 -a(and的意思)表示筛选两个参数均满足的记录
lsof /home/test.py 查找打开某个文件的应用程序
lsof |grep 33872 |wc -l 统计某进程打开的文件描述符的数量
查看本次登陆的session其文件描述符的限制
ulimit -n
临时修改文件描述符的限定,可以通过 ulimit。
ulimit -SHn 2048
永久变更需要编辑 /etc/security/limits.conf 文件,添加如下两行:
在/etc/security/limits.conf修改限制的格式如下
domino type item value
参数 描述
domino 是以符号@开头的用户名或组名,*表示所有用户
type 设置为hard or soft
item 指定想限制的资源。如cpu,core nproc or maxlogins
value 是相应的
* hard nofile 4096
* soft nofile 4096
保存退出后重新登录,其最大文件描述符已经被永久更改了
内核参数对文件描述符也有限制,如果设置的值大于内核的限制,也是不行的:
查找file-max的内核参数:
sysctl -a|grep file-max
更改file-max的内核参数:
sysctl -w file-max=65535
Sysctl也是临时的,要想永久生效,可以通过更改sysctl的文件,编辑/etc/sysctl.conf文件,添加或修改以下一行:
fs.file-max=65535
保存退出后使用sysctl -p 命令使其生效
需要注意的是,文件描述符的限制,不局限于这里描述的这些,还可能和进程的启动参数、用户的环境设置有关。当然,如果是进程
BUG造成文件描述符没有及时关闭回收,这增大限制也只是治标,根本上还得修复BUG。
此外,lsof会列出系统中所占用的资源,但是这些资源不一定会占用打开的文件描述符(比如共享内存,信号量,消息队列,内存映射.等
,虽然占用了这些资源,但不占用打开文件号),因此有可能出现cat /proc/sys/fs/file-max 的值小于lsof | wc -l。
cat /proc/sys/fs/nr_open
单个进程可分配的最大文件数
cat /proc/sys/fs/file-max
内核可分配的最大文件数
所有进程打开的文件描述符数不能超过 /proc/sys/fs/file-max
单个进程打开的文件描述符数不能超过 user limit中 nofile的 soft limit
nofile的soft limit不能超过其hard limit
nofile的hard limit不能超过/proc/sys/fs/nr_open
30. 其他
关闭防火墙
systemctl stop firewalld.service
关闭开机启动: systemctl disable firewalld.service
查看防火墙状态: systemctl status firewalld.service
ssh 远程登陆
ssh root@10.108.84.108
主机名相关
查看: hostnamectl status
修改: hostnamectl set-hostname “storage_node1”
挂载硬盘
mount -t ext3 -o rw /dev/sdb1 /newfile #挂载硬盘
-t 跟磁盘格式 可以省略 系统会自动检测一下
-o 跟挂载方式 rw 可读可写
/newfile 这是硬盘分区挂载的目录,可以随意变换
修改系统时间
Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。
系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在
BIOS中进行设置。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。
Linux中的所有命令(包括函数)都是采用的系统时钟设置。在Linux中,用于时钟查看和设置的命令主要有date、hwclock。
date –s:按字符串方式修改时间
可以只修改日期,不修改时间,输入:
date -s 2007-08-03
1
只修改时间,输入:
date -s 14:15:00
1
同时修改日期时间,注意要加双引号,日期与时间之间有一空格,输入:
date -s "2007-08-03 14:15:00"
1
查看硬件时间
hwclock
设置硬件时间
hwclock -set -date=”07/07/06 10:19” (月/日/年 时:分:秒)
硬件时间和系统时间的同步
按照前面的说法,重新启动系统,硬件时间会读取系统时间,实现同步,但是在不重新启动的时候,需要用hwclock命令实现同步。
硬件时钟与系统时钟同步:
hwclock –hctosys (hc代表硬件时间,sys代表系统时间)
系统时钟和硬件时钟同步:(让系统的时间同步到硬件时钟)
hwclock -w ––systohc
查看是否安装某软件
rpm -qa|grep soft_name
测试硬盘的IO
硬盘读取速度
time dd if=/var/test of=/dev/null bs=2k
hdparm -T /dev/sda
硬盘写入速度
time dd if=/dev/zero of=/test.dbf bs=8k count=300000
(在 根目录 / 下面会生成临时文件,记得删除)