Linux学习的常用命令
公司一直用的服务器都是window服务器,自己也好久没接触Linux了,命令忘得差不多了,之前也是菜鸡水平,就布置个服务啥的,正好最近不怎么忙,自己学习下,记录下常用的命令以便翻阅。
版本:centOS 6.5
环境: VMware虚拟机
首先先安卓VMware虚拟机,配置一台系统为centOS 6.5的虚拟机,先下载好镜像,然后安装的时候注意选择,我选的是比较全的桌面版本,一千多个包,后期省的装一些东西了,虚拟机装好后需要将自己网络打通,自己百度下教程。
几个配置常用的命令:
service network restart -----重启网络服务
vi /etc/sysconfig/network-scripts/ifcfg-eth0 -----打开网络配置文件,进入编辑模式
vi /etc/resolv.conf -----配置网关,网段是自己的网段(nameserver 192.168.235.2)
vi /etc/sysconfig/network ---- 修改主机名host
删除文件:
rm -rf -------文件名 : 删除文件夹和文件(甚用!!!!切记!!!!!)
-r -------递归轮询遍历删除 -f -------删除时忽略不存在的文件,没有提示可以 man 命令一下查看查看java是否安装:java -version
查看tomcat是否安装:ps -ef|grep tomcat
一:文件系统的操作
init 0 ------关机
reboot -f ------重启虚拟机 pwd --------- 查看当前地址完整的目录1:目录操作: cd .. ----------返回上上级目录 cd ~ ---------直接进入root目录 cd 目录名字 ---------打开目录 mkdir 目录名字 ---------创建一个目录 cp 源文件目录 目标文件目录 -r -----------拷贝一个文件夹(-r是轮询复制) rmdir 文件夹 -------删除文件夹(只能删除空目录,如不是空,用rm -rf 文件夹名称) mv 目录/文件名字 其他路径 --------------移动文件或目录 mv 旧目录名字 新目录名字 ---------更改文件或目录的名字 ll 或者 ls --------查看当前目录下的所有文件2:文件操作 touch 文件名 -------------创建一个空文件 cp 源文件目录 目标文件目录 -----------拷贝一个文件夹 rm 文件名 ----------- 删除文件,会需要确认删除,如果加上-f,直接删除 cat 文件名 -------------一次性显示文件内容,文件内容多用more more 文件名 -------------显示文件内容(按 Space 键,显示文本的下一屏内容。 按 Enier 键,只显示文本的下一行内容。按 B 键,显示上一屏内容。按 Q 键,退出。) less 文件名 -------------显示文件内容,和more相似,Q退出,具体看百度 head -10 文件名 -------------打印文件开始 10 行 tail -10 文件名 -------------打印文件最后 10 行 tail –f 文件名 -------------查看文件的内容变化 find 查找路径 –name 文件名或者目录名(后面加*是以这个为开头的文件或者目录) ------------查找问价或者目录(最后显示绝对路径)3:文件内容操作(注意权限问题):
编辑模式: i -----进入文件之后,按i进入编辑模式 vi filename -----从打开或新建文件,并将光标置于第一行首 vi +n filename -----从打开文件,并将光标置于第 n 行首 vi + filename -----从打开文件,并将光标置于最后一行首 vi +/pattern filename -----从打开文件,并将光标置于第一个与pattern 匹配的串处 命令行模式:esc -----从编辑模式退出来,进入命令输入模式
set nu -----显示行号 q -----退出vi编辑 w -----写入,保存文件 wq -----保存退出 ! -----强制操作 nG -----光标移至第 n 行首 n+ -----光标下移 n 行 n- -----光标上移 n 行 n$ -----光标移至第 n 行尾 H -----光标移至屏幕顶行 M -----光标移至屏幕中间行 L -----光标移至屏幕最后行 dd -----删除 行 x 或 X -----删除一个字符,x 删除光标后的,而 X 删除光标前的 uu 恢复前一个动作(常用) 一般模式 yy 复制光标所在行(常用) nyy 复制光标所在行的向下 n 行,例如, 20yy 则是复制 20行(常用) p,P p 为复制的数据粘贴在光标下一行,P 则为粘贴在光标上一行(常用) /pattern -----从光标开始处向文件尾搜索pattern :?pattern -----从光标开始处向文件首搜索
pattern n -----在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令
:s/p1/p2/g -----将当前行中所有 p1 均用 p2 替代 :n1,n2s/p1/p2/g -----将第 n1 至 n2 行中所有 p1 均用 p2 替代 :g/p1/s//p2/g -----将文件中所有 p1 均用 p2 替换 4:文件上传 安装lrzsz:yum install lrzsz -y rz :上传 sz filename:下载(不能下载目录,可以先打压缩包再传输) WinSCP传输文件速度快,传输大文件可以使用,是Linux和window之间的传输工具,也可以使用类似于xshell的xftp,感觉也挺方便的
二:磁盘指令
df -----看硬盘信息,默认硬盘分区的大小以 kb 显示,可以在 df 后面加参数-m mb 单位, -k kb 单位 , -h 更易于阅读
du 文件名字/目录名字 -----查看文件或者目录的大小,默认单位为 kb -k kb 单位,-m mb 单位,-a 所有文件和目录,-h 更易于阅读,--max-depth=0 目录深度
三:网络指令
ifconfig ------查看网络配置信息
ping 地址 ------测试网络是否通(注意linux下会一直发送,ctrl+c结束) netstat ------查看网络相关信息 -a (all)显示所有选项,默认不显示 LISTEN 相关 -t (tcp)仅显示 tcp 相关选项 -u (udp)仅显示 udp 相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字。 -l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立相关链接的程序名 -r 显示路由信息,路由表 -e 显示扩展信息,例如 uid 等 -s 按各个协议进行统计 -c 每隔一个固定时间,执行该 netstat 命令。 提示:LISTEN 和 LISTENING 的状态只有用-a 或者-l 才能看到 telnet ip port -------测试远程端口是否通(需安装 telnet : yum install telnet -y) ,测试成功后,按 ctrl + ] 键,然后弹出 telnet>时,再按 q退出
四:系统管理
1:用户操作
useradd/adduser username ------创建用户 passwd username ------修改密码 userdel username ------删除用户 usermod -l 新的名字 原来的名字 ------修改用户名 usermod -L 用户名 ------锁定账号 usermod -U 用户名 ------解除锁定 whoami ------查看当前登录用户名,普通用户可查看/etc/passwd 文件,得出系统一个有多少个用户,root 用户还可以查看/etc/shadow 文件,来得出系统一个有多少用户
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>] [-s <shell>][-u <uid>][用户帐号] ------修改用户 参数说明: -c<备注> 修改用户帐号的备注文字。 -d登入目录> 修改用户登入时的目录。 -e<有效期限> 修改帐号的有效期限。 -f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。 -g<群组> 修改用户所属的群组。 -G<群组> 修改用户所属的附加群组。 -l<帐号名称> 修改用户帐号名称。 -L 锁定用户密码,使密码无效。 -s<shell> 修改用户登入后所使用的shell。 -u<uid> 修改用户ID。 -U 解除密码锁定。 2:用户组操作 groupadd 用户组名 ------创建用户组 groupdel 用户组名 ------删除用户组 groupmod -n new_name old_name -----修改用户组名 groups ------查看当前用户所在的用户组 groups username ------查看指定用户所在的组 注意:创建用户时,系统默认会创建一个和用户名字一样的主组。 usermod -g 组名 用户 —— 把用户的主组改为其他的组 usermod -G 组名 用户 —— 把用户添加到附加组当中 如果想查看一个组下面一共有多少用户,可以通过查看 /etc/group 文件的内容来得到(cat /etc/group)3:系统权限 ll /usr ------查看/usr 目录下的每个文件或目录的权限 权限类别: Linux 中,每个文件或目录都拥有三种权限 权限 对文件的影响 对目录的影响 r(读取) 可读取文件 可列出目录内容 w(写入) 可修改文件内容 可在目录中创建删除文件 x(执行) 可以执行这个 可访问目录内容 UGO 模型: Linux 权限基于 UGO 模型进行控制 U 代表 User, G 代表 Group, O 代表 other 每一个文件的权限基于 UGO 进行设置,权限三个一组(rwx), 对应 UGO 分别设置 每个文件都有一个拥有者,所属组即(Group), 不属于上面的都是 other chown username 文件/目录 ------修改所有者 chown username:groupname 文件/目录 ------同时修改一个文件或目录的所有者和属组 如果要递归修改整个目录下的所有者或属组,加参数-R,如:chown -R mytest:test 目录名字 chgrp groupname name ------修改文件/目录的属组 chmod ugo+rwx name ------修改文件/ 目录的权限(其中 ugo 代表的是要对谁进行权限操作, rwx 代表进行怎样的权限操作,+代表的授权,-代表的取消权限) 权限的另外一种修改方式:将 rwx rwx rwx 三组权限的读写执行权限分别用 0 和 1 代替,1 代表有权限,0 代表没权限,最后将三组二进制转化成十进制。
命令:chmod 700 myfile 其中 700 转化成二进制为 111000000,对应的权限只有所有者才有读写和执行的权限
五:系统配置
vi /etc/group --------用户组信息配置 vi /etc/shadow 和/etc/passwd 系统存在的所有用户名 --------用户信息配置 vi /etc/inittab --------系统服务初始化配置 参数解释: 0:停机状态 1:单用户模式,root 账户进行操作 2:多用户,不能使用 net file system,一般很少用 3:完全多用户,一部分启动,一部分不启动,命令行界面 4:未使用、未定义的保留模式 5:图形化,3 级别中启动的进程都启动,并且会启动一部分图形界面进程。 6:停止所有进程,卸载文件系统,重新启动 这些级别中 1、2、4 很少用,相对而言 0、3、5、6 用的会较多。3 级别和 5 级别除了桌面相关的进程外没有什么区别。为了减少资源占用,推荐都用 3 级别
注意 :linux 默认级别为 3,不要把 initdefault 设置为 0 和 6 vi /etc/sysconfig/network --------修改主机名 vi /etc/hosts --------修改host文件,可以配置DNS(配置映射),然后直接拼映射名 vi /etc/resolv.conf --------DNS 服务器的地址文件 date --------查看系统时间 cal --------查看日历 date -s 2012-08-02 --------更新系统时间,只修改系统的日期 date -s 10:08:00 --------更新系统时间,修改时间不修改日期 date -s "2018-01-01 04:53:00" --------更新系统时间,同时修改日期和时间 虽然 date 命令能够修改时间,但是手动修改肯定是不准确的 为了能让修改的时间更精确,可以用 ntp 来做时间同步,它会到时间,服务器里去同步时间,保证了时间的准确度。 需要事先安装 ntp 服务:yum install ntp -yntpdate cn.ntp.org.cn --------更新系统时间
该命令表示为:到域名为 cn.ntp.org.cn 的时间服务器上同步时间。 注:全球的时间服务器有很多个,可以到百度或谷歌上搜,不一定用cn.ntp.org.cn 的时间服务器。 vi /etc/profile --------Linux系统的环境变量 echo $PATH --------系统在目录里命令对应的程序 ./test.sh --------执行test.sh文件 /usr/test/test.sh --------执行test.sh文件六:重定向和管道1:输出重定向 > 输出重定向到一个文件或设备 覆盖原来的文件 (例:ls > shsxt ,这个命令会将 ls 的查看结果输出到 shsxt 这个文件里,不再将内容打印到屏幕上) >> 输出重定向到一个文件或设备 追加原来的文件 (命令:echo “shsxt is good” >> shsxt 将“shsxt is good”追加到 shsxt 文件里)2:输入重定向 < 输入重定向到一个程序 (cat < test ,将 test 文件里的内容当作是 cat 命令的输入)3:标准输出重定向 1>等同于>,但是发生错误时候,不会重定向到指定文件4:错误输出重定向 2> --------把错误的输出日志重定向到指定文件里,正确的日志则不会5:结合使用 2>&1 --------将一个标准错误输出重定向到标准输出 ,即无论是正确的 输出还是错误的输出都重定向到指定文件里。1 和 2 结合着使用,在日常中使用比较频繁,因为作为一个开发人员, 我们一般会把所有的日志都保存下来,无论正确与否。 注意:以上重定向符号都是覆盖的,若想追加则用”>>”6:管道 命令 “|” 表示把前一个输出当做后一个输入 介绍这个命令之前,先介绍 grep 命令。grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配到的行打印出来。 |和 grep 命令结合使用: netstat -anp | grep 22 命令含义:把 netstat –anp 命令的输出 当做是 grep 命令的输入。 上面的命令就是:先用 netstat –anp 命令查出本机的端口信息,然后把 netstat 输出的端口信息, 用作 grep 命令的输入进行匹配搜索,并且匹配的是 22 ,即查看 22 端口是否开着。7:命令执行控制 命令:&& --------前一个命令执行成功才会执行后一个命令该命令, 例子:cat shsxt && ping www.baidu.com 先执行 cat shsxt 命令,当 cat shsxt 命令执行成功后,才执行 ping 命令。 命令:|| 前一个命令执行失败才会执行后一个命令 cat shsxt || ping www.baidu.com 从上图可看出 ping 命令没有执行,这是由于 cat shsxt 命令执行成功了,||命令只有第一个命令执行成功后, 才会执行第二个命令。第一个命令 cat sxt 执行失败了,然后才执行 ping 命令。 七:服务操作 chkconfig --------查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务 service 服务名 start/stop/status/restart --------对服务的状态进行操作,查询,重启 防火墙操作: 查看状态:service iptables status 关闭与开启: 1 )永久性生效,重启后不会复原 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后复原 开启: service iptables start 关闭: service iptables stop chkconfig --level 2345 name off|on --------服务初执行等级更改(若不加级别,默认是 2345 级别,命令:chkconfig name on|off)运行级别备注:
0:关机。不能将系统缺省运行级别设置为0,否则无法启动。 1:单用户模式,只允许root用户对系统进行维护。 2:无网络连接的多用户模式,不能使用NFS(相当于Windows下的网上邻居) 3:有网络连接的字符界面的多用户模式, 4:未定义 5:图形界面的多用户模式。 6:重启。不能将系统缺省运行级别设置为0,否则会一直重启 八:进程操作 ps -aux --------查看所有进程的信息(-a 列出所有,-u 列出用户,-x 详细列出,如 cpu、内存等) ps - ef | grep ssh --------查看所有进程里 CMD 是 ssh 的进程信息。 ps -aux --sort -pcpu --------根据 CPU 使用来升序排序 名词解释: PID: 运行着的命令(CMD)的进程编号 TTY: 命令所运行的位置(终端) TIME: 运行着的该命令所占用的 CPU 处理时间 CMD: 该进程所运行的命令 ping www.baidu.com > ping.log & ------若想一个程序放在后台运行,只要在命令后面加 &符号 jobs –l ------列出当前连接的所有后台进程() 注意: jobs 命令只看当前终端生效的,关闭终端后,在另一个终端 jobs已经无法看到后台跑得程序了。 此时应该用 ps -ef | grep 进程名 来查询后台进程的(ps -ef | grep ping)后台进程有时运行一段时间后,系统会自动把该进程挂起来,导致进程无法正常运行。故后台经常一般和 nohup 命令结合使用, 告诉系统不要把该进程挂起,这样子该命令就可以 24*7 小时不间断的运行了。 命令: nohup ping www.baidu.com > ping2.log & 此时该命令还不够完美,因为这时 ping 命令的输出重定向只会把正确的日志重定向到 ping2.log 里, 我们要想所有的日志都定向到指定文件里。所以我们应该这样写:nohup ping www.baidu.com > ping2.log 2>&1 & kill pid -9 ------强制杀死pid为-9的进程(可以先用jobs –l 或 ps 命令先查出对应程序的 PID 或 PPID ,然后杀死掉进程)
九:其他常用命令
1:yumyum是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件,包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包,并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件,包,无须繁琐地一次次下载、安装。由于 centos 系统的 yum 默认是到国外网站下载,有时下载速度会很慢,故我们可以换一个 yum 的下载源,这里我们换一个国内的下载源 阿里云镜像。
第一步:备份你的原镜像文件,以免出错后可以恢复。
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup需先安装 yum install wget –y 第二步:下载新的 CentOS-Base.rep 到/etc/yum.repos.d/wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 下载完之后,vim /etc/yum.repos.d/CentOS-Base.repo 查看一下文件内容。 第三步:运行 yum makecache 生成缓存 查看当前源yum list | head -50 2:wget wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP 协议 下载,并可以使用 HTTP 代理 wget 用法:wget [option] 网址 -O 指定下载保存的路径(例:wget www.baidu.com -O baidu.html)
注意:wget 工具还可以用来做一些简单的爬虫,自己不会,可以自行百度
3:tar
-z gzip 进行解压或压缩,带.gz 需要加,压缩出来.gz 也需要加 -x 解压 -c 压缩 -f 目标文件,压缩文件新命名或解压文件名 -v 解压缩过程信息打印 解压命令:tar -zvxf xxxx.tar.gz 例子:先用 rz 命令或 wscp 上传一个 tar 包,然后解压 压缩命令:tar -zcf 压缩包命名 压缩目标 例子:tar -zcf tomcat.tar.gz apache-tomcat-7.0.61 将 apache-tomcat-7.0.61 目录压缩成 tomcat.tar.gz 包。4:zip
主要参数 -c:将解压缩的结果 -l:显示压缩文件内所包含的文件 -p:与-c 参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换 -t:检查压缩文件是否正确 -u:与-f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其它文件解压缩到目录中 -v:执行是时显示详细的信息 -z:仅显示压缩文件的备注文字 -a:对文本文件进行必要的字符转换 -b:不要对文本文件进行字符转换 -r:递归处理,将指定目录下的所有文件和子目录一并处理 -C:压缩文件中的文件名称区分大小写 -j:不处理压缩文件中原有的目录路径 -L:将压缩文件中的全部文件名改为小写 -M:将输出结果送到 more 程序处理 -n:解压缩时不要覆盖原有的文件 -o:不必先询问用户,unzip 执行后覆盖原有文件 -P:使用 zip 的密码选项 -q:执行时不显示任何信息 -s:将文件名中的空白字符转换为底线字符 -V:保留 VMS 的文件版本信息 -X:解压缩时同时回存文件原来的 UID/GID 压缩命令:zip -r 包名 目标目录 需先安装 zip:yum install zip –y 压缩完后,查看一下,发现多了个 tomcat.zip 包。 unzip filename ----------解压文件,需先安装unzip,命令: yum install unzip –y (注意目录冲突)