grep
文本搜索
语法:grep 参数 查找条件 文件名(注:是文件名,目录名下查找不行)
主要参数:
-i:不区分大小写(只适用于字母字符。)
-l:查询多文件时只输出包含匹配字符的 文件名。
-n:显示匹配行内容及行号。
ps
列出系统中当前运行的进程
a 显示所有用户的所有进程(包括其它用户)
-e 显示所有进程,环境变量f 用树形格式来显示进程;
ps -ef|grep java : 找出所有java进程
kill
终止指定的进程。需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。
kill -9 进程号 : 彻底杀死某个进程
tar
对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如gzip和bzip等)进行压缩和解压。
语法: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 :使用原文件的原来属性(属性不会依据使用者而变)
–exclude FILE:在压缩的过程中,不要将 FILE 打包!
压缩:tar -jcv -f filename.tar.bz2 filename
查询:tar -jtv -f filename.tar.bz2
解压:tar -jxv -f filename.tar.bz2 (解压成目录为filename的目录)
注:文件名并不定要以后缀tar.bz2结尾,这里主要是为了说明使用的压缩程序为bzip2
查阅正在改变的日志文件tail
语法:tail[必要参数][选择参数][文件]
-f 循环读取
-n<行数> 显示行数
tail -f 20160921.logs :查看正在改变的日志文件;
tail -3000 catalina.out:查看倒数前3000行的数据;
tail -3000 catalina.out | grep 'AA':查看倒数前3000行包含字母'AA'的数据;
ctrl+z 可退出
查看进程pid
**1. 根据进程pid查端口:**
lsof -i | grep pid
netstat -nap | grep pid
**2. 根据端口port查进程(某次面试还考过):**
lsof -i:port
netstat -nap | grep port
ls 显示文件或目录
-l 列出文件详细信息l(list)
-a 列出当前目录下所有文件及目录,包括隐藏的a(all)
mkdir 创建目录
-p **创建目录,若无父目录,则创建p(parent)**
cd 切换目录
touch 创建空文件
echo 创建带有内容的文件。
cat 查看文件内容
cp 拷贝
mv 移动或重命名
rm 删除文件
-r 递归删除,可删除子目录及文件
-f 强制删除
find 在文件系统中搜索某文件
wc 统计文本中行数、字数、字符数
grep 在文本文件中查找某个字符串
rmdir 删除空目录
tree 树形结构显示目录,需要安装tree包
pwd 显示当前目录
ln 创建链接文件
more、less 分页显示文本文件内容
head、tail 显示文件头、尾内容
ctrl+alt+F1 命令行全屏模式
编辑器Vim
命令模式:编辑模式:末行模式
末行模式: :
:q
:wq
:wq!
编辑模式:i(所在位置)a (下一个字符) o(下一行)
命令模式:y(复制) c(剪切) d(删除)
移动光标、删除命令、编辑命令、撤销命令、重复命令(.?、复制粘贴(yy p)、文本行移动(>> <<)
文件内容查阅
直接检视文件内容:
cat 由第一行开始显示文件内容 cat -n 显示行号, cat -A 显示完整内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
nl 显示的时候,顺道输出行号!
可翻页检视:
more 一页一页的显示文件内容
/字串:向下搜索;空白:翻页;q:退出
1) 空白键 (space):代表向下翻一页;
2) Enter :代表向下翻『一行』;
3) /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
4) :f :立刻显示出档名以及目前显示的行数;
5) q :代表立刻离开 more ,不再显示该文件内容。
6) b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less
空白:向下,pgdn/pgup:向上,/字串:向下搜索;?字串:向上搜索;q:离开
1) 空白键 :向下翻动一页;
2) [pagedown]:向下翻动一页;
3) [pageup] :向上翻动一页;
4) /字串 :向下搜寻『字串』的功能;
5) ?字串 :向上搜寻『字串』的功能;
6) n :重复前一个搜寻 (与 / 或 ? 有关!)
7) N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
8) q :离开 less 这个程序;
数据撷取:
head 只看头几行
tail 只看尾巴几行
-n 行数
默认10行
tail -n +100 显示100行以后的
head -n -100 显示100以前的
非纯文字档:
od 以二进位的方式读取文件内容!
文件与目录的默认权限与隐藏权限
文件默认权限:umask
[root@www ~]# umask
0022 <==与一般权限有关的是后面三个数字!
[root@www ~]# umask -S
u=rwx,g=rx,o=rx
chattr (配置文件隐藏属性)
lsattr (显示文件隐藏属性)
命令与文件的搜寻
which (寻找『运行档』)
root :#
用户名:$
[root@www ~]# which [-a] command
选项或参数:
-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称
范例一:分别用root与一般帐号搜寻 ifconfig 这个命令的完整档名
[root@www ~]# which ifconfig
/sbin/ifconfig <==用 root 可以找到正确的运行档名喔!
[root@www ~]# su - vbird <==切换身份成为 vbird 去!
[vbird@www ~]$ which ifconfig
/usr/bin/which: no ifconfig in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
:/home/vbird/bin) <==见鬼了!竟然一般身份帐号找不到!
# 因为 which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,
# 不同的 PATH 配置内容所找到的命令当然不一样啦!因为 /sbin 不在 vbird 的
# PATH 中,找不到也是理所当然的啊!了乎?
[vbird@www ~]$ exit <==记得将身份切换回原本的 root
范例二:用 which 去找出 which 的档名为何?
[root@www ~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot '
/usr/bin/which
# 竟然会有两个 which ,其中一个是 alias 这玩意儿呢!那是啥?
# 那就是所谓的『命令别名』,意思是输入 which 会等於后面接的那串命令啦!
# 更多的数据我们会在 bash 章节中再来谈的!
范例三:请找出 cd 这个命令的完整档名
[root@www ~]# which cd
/usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin
:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
whereis (寻找特定文件)
locate
[root@www ~]# locate [-ir] keyword
选项与参数:
-i :忽略大小写的差异;
-r :后面可接正规表示法的显示方式
范例一:找出系统中所有与 passwd 相关的档名
[root@www ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/news/passwd.nntp
/etc/pam.d/passwd
....(底下省略)....
find
[root@www ~]# find [PATH] [option] [action]
选项与参数:
1.与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;
-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件档名
范例一:将过去系统上面 24 小时内有更动过内容 (mtime) 的文件列出
[root@www ~]# find / -mtime 0
# 那个 0 是重点!0 代表目前的时间,所以,从现在开始到 24 小时前,
# 有变动过内容的文件都会被列出来!那如果是三天前的 24 小时内?
# find / -mtime 3 有变动过的文件都被列出的意思!
范例二:寻找 /etc 底下的文件,如果文件日期比 /etc/passwd 新就列出
[root@www ~]# find /etc -newer /etc/passwd
# -newer 用在分辨两个文件之间的新旧关系是很有用的!
选项与参数:
2.与使用者或群组名称有关的参数:
-uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在
/etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在
/etc/group,相关的介绍我们会第四篇说明~
-user name :name 为使用者帐号名称喔!例如 dmtsai
-group name:name 为群组名称喔,例如 users ;
-nouser :寻找文件的拥有者不存在 /etc/passwd 的人!
-nogroup :寻找文件的拥有群组不存在於 /etc/group 的文件!
当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,
这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。
范例三:搜寻 /home 底下属於 vbird 的文件
[root@www ~]# find /home -user vbird
# 这个东西也很有用的~当我们要找出任何一个使用者在系统当中的所有文件时,
# 就可以利用这个命令将属於某个使用者的所有文件都找出来喔!
范例四:搜寻系统中不属於任何人的文件
[root@www ~]# find / -nouser
# 透过这个命令,可以轻易的就找出那些不太正常的文件。
# 如果有找到不属於系统任何人的文件时,不要太紧张,
# 那有时候是正常的~尤其是你曾经以原始码自行编译软件时。
选项与参数:
3.与文件权限及名称有关的参数:
-name filename:搜寻文件名称为 filename 的文件;
-size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:
c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB
还要大的文件,就是『 -size +50k 』
-type TYPE :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f),
装置文件 (b, c), 目录 (d), 连结档 (l), socket (s),
及 FIFO (p) 等属性。
-perm mode :搜寻文件权限『刚好等於』 mode 的文件,这个 mode 为类似 chmod
的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
-perm -mode :搜寻文件权限『必须要全部囊括 mode 的权限』的文件,举例来说,
我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,
当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,
因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
-perm +mode :搜寻文件权限『包含任一 mode 的权限』的文件,举例来说,我们搜寻
-rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw-------
也会被列出来,因为他有 -rw.... 的属性存在!
范例五:找出档名为 passwd 这个文件
[root@www ~]# find / -name passwd
# 利用这个 -name 可以搜寻档名啊!
范例六:找出 /var 目录下,文件类型为 Socket 的档名有哪些?
[root@www ~]# find /var -type s
# 这个 -type 的属性也很有帮助喔!尤其是要找出那些怪异的文件,
# 例如 socket 与 FIFO 文件,可以用 find /var -type p 或 -type s 来找!
范例七:搜寻文件当中含有 SGID 或 SUID 或 SBIT 的属性
[root@www ~]# find / -perm +7000
# 所谓的 7000 就是 ---s--s--t ,那么只要含有 s 或 t 的就列出,
# 所以当然要使用 +7000 ,使用 -7000 表示要含有 ---s--s--t 的所有三个权限,
# 因此,就是 +7000 ~了乎?
选项与参数:
4.额外可进行的动作:
-exec command :command 为其他命令,-exec 后面可再接额外的命令来处理搜寻到的结果。
-print :将结果列印到萤幕上,这个动作是默认动作!
范例八:将上个范例找到的文件使用 ls -l 列出来~
[root@www ~]# find / -perm +7000 -exec ls -l {} \;
# 注意到,那个 -exec 后面的 ls -l 就是额外的命令,命令不支持命令别名,
# 所以仅能使用 ls -l 不可以使用 ll 喔!注意注意!
范例九:找出系统中,大於 1MB 的文件
[root@www ~]# find / -size +1000k
# 虽然在 man page 提到可以使用 M 与 G 分别代表 MB 与 GB,
# 不过,俺却试不出来这个功能~所以,目前应该是仅支持到 c 与 k 吧!
退出当前命令: ctrl+c 彻底退出
执行睡眠 : ctrl+z 挂起当前进程 fg 恢复后台
查看当前用户 id: ”id“:查看显示目前登陆账户的 uid 和 gid 及所属分
Linux 下命令有哪几种可使用的通配符?分别代表什么含义?
“?”可替代单个字符。 ·“*”可替代任意多个字符。 ·方括号“[charset]”可替代 charset 集中的任何单个字符,如[a-z],[abABC] 15. 用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
wc 命令 - c 统计字节数。 - l 统计行数。 - w 统计字数。
.Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
(1)、不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断, 指进程不响应异步信号。D
(2)、暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。T
“正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。
(3)、就绪状态:在 run_queue 队列里的状态
(4)、运行状态:在 run_queue 队列里的状态 R
(5)、可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待 socket 连接、等待信号量),而被挂起 S
(6)、zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉 Z
(7)、退出状态
D 不可中断 Uninterruptible(usually IO)
R正在运行,或在队列中的进程
S处于休眠状态
T停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核 2.6 开始无效)
X死掉的进程
怎么使一个命令在后台运行?
&
利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?
ps -ef (system v 输出) ps -aux bsd 格式输出 ps -ef | grep pid
哪个命令专门用来查看后台任务?
job -l
把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
fg
例如:#jobs
[1]+ Running /root/bin/rsync.sh &
#fg 1 bg 类似
终止进程用什么命令? 带什么参数?
kill -9 pid
怎么查看系统支持的所有信号
kill -l
搜索文件用什么命令? 格式是怎么样的?
find dir -name “string*”
查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?
w 用户名称;用户的机器名称或 tty 号;远程主机地址;用户登录系统的时间;空闲时间(作用不大);附加到 tty(终端)的进程所用的时间(JCPU 时间);当前进程所用时间(PCPU时间);用户当前正在使用的命令.
who 用户名、tty 号、时间日期、主机地址
whoami,id -un 命令用于显示登入的用户名
last 命令可用于显示特定用户登录系统的历史记录(last jason):用户名称;tty 设备号;历史登录时间日期;登出时间日期;总工作时间.
查找自己所在终端信息:who am i
使用什么命令查看用过的命令列表?
history
使用什么命令查看磁盘使用空间? 空闲空间呢?
df -hl
文件系统 容量 已用 可用 已用% 挂载点
Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G 44% /
/dev/hda1 494M 19M 450M 4% /boot
使用什么命令查看网络是否连通?
netstat
使用什么命令查看 ip 地址及接口信息?
ifconfig
查看各类环境变量用什么命令?查看所有 env
查看某个,如 home: env $HOME
通过什么命令指定命令提示符? \u 显示当前用户账号 \h 显示当前主机名
\W 只显示当前路径最后一个目录 \w 显示当前绝对路径(当前用户目录会以 ~代替) $PWD 显示当前全路径 $ 显示命令行’$'或者’#'符号 # :下达的第几个命令
\d :代表日期,格式为 weekday month date,例如:“Mon Aug 1”
\t :显示时间为 24 小时格式,如:HH:MM:SS \T :显示时间为 12 小时格式 \A :显示时间为 24 小时格式:HH:MM \v :BASH 的版本信息
如export PS1=’[\u@\h \w#]$ ‘
查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加? whereis [-bfmsu][-B <目录>…][-M <目录>…][-S <目录>…][文件…]
补充说明:whereis 指令会在特定目录中查找符合条件的文件。这些文件的烈性应属于原始代码,二进制文件,或是帮助文件。
-b 只查找二进制文件。
-B<目录> 只在设置的目录下查找二进制文件。 -f 不显示文件名前的路径名称。
-m 只查找说明文件。
-M<目录> 只在设置的目录下查找说明文件。 -s 只查找原始代码文件。
-S<目录> 只在设置的目录下查找原始代码文件。 -u 查找不包含指定类型的文件。
which 指令会在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
-n 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p 与-n 参数相同,但此处的包括了文件的路径。 -w 指定输出时栏位的宽度。
-V 显示版本信息
通过什么命令查找执行命令?
which 只能查可执行文件 whereis 只能查二进制文件、说明文档,源文件等
怎么对命令进行取别名?
alias la=‘ls -a’
du 和 df 的定义,以及区别? du 显示目录或文件的大小
df 显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统。
(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。
这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。) du 命令是用户级的程序,它不考虑 Meta Data,而 df 命令则查看文件系统的磁盘分配
图并考虑 Meta Data。
df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。