本节摘要:最近频繁的去生产环境部署和发布项目,用了不少的linux命令,把这些用到的命令做一下总结和记录。
linux命令汇总:
先做几点声明:
(1).这些命令是在redhat linux上运行的,在IBM AIX上使用可能有些就不行;
(2).我并不会去介绍所有的命令,每个命令我也并不会去介绍所有的参数,我只介绍我用到并且是常用的;
(3).介绍不分顺序,我只是对近一段时间用到的命令做一下回顾和总结;
(4).我用root用户登录linux系统,然后在根目录下建了一个pantp目录,后面截图为黑底白字的操作都是在这个目录下进行;
(5).命令下的(1)、(2)表示该命令常用的几种形式;
.ls---显示当前目录的文件
常用的有以下两种:
(1).ls
显示当前目录pantp的文件
(2).ls –alt
显示当前目录pantp的所有文件(包含.开头的隐藏文件)的详细列表信息,并且按时间排序
.hostname
(1)hostname
查看计算机名称
(2)hostname –i
查看计算机的IP地址
.whoami
查看当前登录用户
.cp
复制文件或目录
(1)复制文件
(2)复制目录
.scp
远程复制文件或目录(把文件或目录从一台主机复制到另一台主机) 我在虚拟机中装了一个linux系统,这个我没法截图,只把语法写出来,这里只把从本机复制到远程主机列出来,另外一个从远程主机复制到本机就不列出了;
(1)复制文件
先切换到本机需要复制的文件所在的目录(当然也可以写绝对路径,也可以根据情况写相对路径)
scp 本机文件名 远程主机登录的用户名@远程主机IP地址:远程主机的目录
这里列出一个实际的例子:
(2)复制目录
先切换到本机需要复制目录的上层(当然也可以写绝对路径,也可以根据情况写相对路径)
scp -r 本机目录名 远程主机登录的用户名@远程主机IP地址:远程主机的目录
.mv
移动文件或目录,类似windows系统中的剪切;
(1)移动文件
把文件old.txt移动到dir1目录下
(2)移动目录
把目录dir3移动到dir1目录下
(3)为文件重命名
把old.txt命名为new.txt
.vi
命令模式、编辑模式、底行模式
命令模式:
按esc键切换到命令行模式,此模式常用的就是删除
x 删除当前光标所在字符
dd 删除光标所在的当前行
编辑模式:
按a、i、o进入编辑模式
a 光标会向后移动一位,在当前光标后插入
i 在当前光标前插入,当前光标所在的字符会后移
o 换一行后插入
现在按照以下步骤按照以上三个方式分别插入pantp字符:
步骤如下:
1.打开文件 vi new.txt
2.把光标放在第一行的第二个字符,按下字母a,然后输入pantp
3.按esc切换到命令行模式
4.把光标放在第二行的第二个字符,按下字母i,然后输入pantp
5.按esc切换到命令行模式
6.把光标放在第三行的第二个字符,按下字母o,然后输入pantp
7.按esc切换到命令行模式
8. 输入 :wq 保存并退出
原始文件内容如下:
按照上述步骤编辑以后,文件内容如下:
退出及保存
(1)切换到命令行模式
(2):q 不存盘退出vi
:wq 保存并退出vi
:q! 不存盘强制退出vi
.more
分屏显示文件,只有文件大小超过一定长度才有效,超过一定长度后,会显示百分比信息;否则此命令的效果和cat类似;
more 文件名
.cat
显示文件的所有内容,一次性显示该文件的所有内容;
cat 文件名
.tail
显示文件的最新内容
(1).tail –f 文件名
动态显示文件增长的内容;
(2).tail –1000f 文件名
动态显示文件增长的最后1000行的内容;
.history
(1).history
显示所有的历史命令
(2).history 2
显示最近的两个命令
.chmod
改变文件的模式 x(执行)、w(写)、r(读)
红色部分一共有十个字符,
第一个字符表示是文件还是目录,d是目录,- 是文件
第二三四个字符分别表示当前文件所属用户root的读、写、执行的权限;
第五六七个字符分别表示当前文件所属组root的用户读、写、执行的权限;
第八九十个字符分别表示当前文件其他组用户的读、写、执行的权限;
(1).chmod g+x 文件名
给sed.txt当前文件所属组用户加上w权限;
(2).chmod 777 文件名
给sed.txt.cp当前文件所属组用户加上w权限;此种采用二进制来表示,有该权限就写1,无就写0,然后算出总数;
更改前:
110 100 100----->6 4 4
需要更改为:
110 110 100----->6 6 4
.chown
改表文件或目录的所属用户和所属组;(我虚拟机上装的linux只有一个root用户一个root组,我先建一个test组,并在该组下建一个test用户,密码也为test;新建用户和组的操作这里就不介绍了,作为一个开发人员这样的操作很少)
(1)chown 用户名 文件名/目录
改变文件或目录的所属用户
把目录dir1所属用户由root改为test
(2).改变dir1所属组由root改为test
.crontab
crontab 是用来让使用者在固定时间或固定间隔执行程序之用;
为了下面crontab命令的演示,我在pantp目录下建一个执行脚本,crontab.sh
(1).建立定时执行任务
我需要crontab.sh脚本每隔一分钟钟执行一次,并把文件输出到pantp目录下的log.txt
为了使此效果明显,我把crontab.sh文件做了一下更改,修改后的文件为:
先介绍一下crontab中时程表的格式
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟(0-59),f2 表示小时(0-23),f3 表示一个月份中的第几日(1-31),f4 表示月份(1-12),f5 表示一个星期中的第几天(0-6 0表示星期日)。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推;
输入crontab -e,然后输入如下部分,输入完成以后,按 :wq 退出;
(2).查看定制任务
我们可以查看log.txt查看运行结果:
(3)删除定制任务
-r 删除当前用户的crontab文件
这个是命令慎用,这个会删除当前用户所有的定制任务,我们可以直接crontab –e 进入,然后把不需要的给删除;
.sed
利用script来处理文本文件
把sed.txt和sed.txt.cp中的Abc都替换为pantp
执行sed命令前:
(1)第一种方式:sed -e 's/Abc/pantp/' a.txt
-e表示命令以命令行的方式执行;参数s,表示执行替换操作,会把执行后的结果给显示出来;
注意:此种情况只会把执行后的结果给显示出来,但是文件的本身还没变;
(2)第二种情况:sed -i 's/Abc/pantp/' a.txt
参数-i,表示直接操作修改文件,不输出,文件本身已经变了;
.ssh
(1)登陆到某台机器,默认以当前用户登陆
(2)采用指定的用户登陆到某台机器:
.ps
(1).ps –ef
通过以上命令,我一般就是查看某个进程是否存在,有时需要根据进程好来杀进程,这时配合kill命令使用,我一般用kill –3 进程号,用这个命令可以生成core文件。
(2).ps –aux
aux这三个选项也会配合起来使用,不过我不常用就不总结在这里了。
.rm
删除文件或目录;
rm –rf 文件名或目录名
.tar
(1)打tar包,把目录a打包为a.tar
tar –cvf a.tar a
(2)解压tar包,把a.tar包解压
tar –xvf a.tar
.jar
(1)打包,把目录a打包成a.jar
jar –cvf a.jar a
(2)解压包,把a.jar解压
jar –xvf a.jar
(3)查看jar包中的文件列表
jar –tvf a.jar
.grep
只介绍两个常用的选项,c 统计数据 i 忽略大小写
查找文件中某个字符出现的数量,统计的是字符出现的行数,如果要查找的字符在一行中出现超过一次,也只会统计一次;
grep –c 字符 文件名
.find
常用如下:
(1)查看某个目录下的文件及目录
find system
(2)按文件名匹配需要的文件
find 路径 –name 匹配选项
.wc
-l 输出当前文件的行数
-c 输出当前文件的字节数
-w 输出当前文件的字数
(1)wc 文件名
(2)配合其他命令使用,比如cat
.clear
清除屏幕;
.pwd
查看当前所在的目录;
.su
.切换到指定用户
su – tyjk
.切换到root用户
su
.logout/exit
退出当前会话框;
shutdown 这个命令在实际生产环境中一般查证问题不会使用;
关机:shutdown now
重启:shutdown –r now
reboot
add 2012/09/11
top
top命令就是linux系统中的资源管理器,可以显示当前CPU、内存的使用量、剩余量等。
uname
uname -a 查看linux系统的版本