Linux系统是一种开源高稳定性的操做系统,在服务器领域获得普遍的应用。做为一个Java后台开发工程师常常须要登陆Linux服务器部署应用程序,或者是查看程序的运行状态。通常的Linux服务器上是不会安装界面程序的,所以熟练掌握经常使用的Linux命令对工程师来讲很是重要。java
本篇日志是我在学习过程的总结,记录了Linux系统经常使用的命令,适合已经对Linux操做系统有基本概念的开发人员参考学习。若是没有接触过Linux操做系统,能够参考我Linux的其余系列文章。shell
Linux的命名很是多,咱们也没有必要掌握全部的命令。本篇博客先来整理平时经常使用的,比较基础的命令。后续的博客会陆续介绍网络相关、系统性能相关等命令。数据库
shutdown命令用来关闭系统。Linux大多使用在服务器领域,因此通常状况下是不多须要关机的。咱们在关机时必定要谨慎,由于你关机的时候极可能其余用户正在远程登陆(推荐使用xshell)这台机器进行某些操做。所以你关机前须要查看下当前系统有哪些用户登陆。vim
# 查看当前登陆用户 who # 同步内存数据到文件系统 sysnc # 十分钟后重启 shutdown -h now //shutdown -h +10 # 重启 reboot
uname(unix name)用于查看系统相关信息安全
[root@SHA-L0029026 ~]# uname -a Linux SHA-L0029026 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 03:43:06 PDT 2015 x86_64 x86_64 x86_64 GNU/Linux
在使用adduser命令的时候,系统会添加这个用户名,而且还会自动地建立与这个用户名名字同样的用户组做为这个用户的初始用户组。此外,还会自动地在/home目录下面建立一个与用户同名的目录,接着执行cp /etc/skel /home/用户名"的操做,实现新增用户的主目录的初始化。用adduser这个命令建立的帐号是系统帐号,能够用来登陆到咱们的系统(区别于Ftp帐号,通常不能经过ssh远程登陆到机器)。服务器
# 添加用户 adduser codeer # 为新添加的用户修改密码 passwd codeer # 查看当前用户属于哪一个用户租(或者 groups codeer) groups # 这个用户不想用了,删除 deluser -r codeer
还有一个很类似的命令useradd。这个命令不会自动为咱们建立组、建立用户home目录,须要咱们手动设置参数去设定。而且useradd这个命令建立的是普通帐号,并不能用来登陆系统。网络
useradd [-u UID] [-g GID] [-d HOME] [-M] [-s] -u 自定义UID -g 使其属于已经存在的某个GID -d 自定义用户的家目录 -M 不创建家目录 -s 自定义shell
更改用户所属的用户组, 语法:chgrp [组名][文件名1 文件名2...]架构
# 查看用户属于哪一个用户组 groups codeer # 添加一个新的用户组 groupadd group1 # 添加用户组并指定用户号 groupadd -g 501 group2 # 删除用户组 groupdel group2 # 将dir1文件夹下的文件修改用户组 chgrp -vR group1 ./dir1
更改文件的全部者和用户组,这个命令能够取代chgrp的功能。app
# 将dir文件夹下的文件全部者和用户组修改 chown -Rv own_name:group_name ./dir
更改文件的属性。less
chmod -Rv 755 ./dir chmod -Rv -u=rwx,g=rx,o=rx ./dir
umask命令用来显现建立文件或者目录时默认的权限。
[root@SZB-L0026548 tmp]# umask 0022 //上面显示0022,咱们通常看后3位002,用777-002得755就是默认的权限。 //假如你建立的是目录,owner有rwx权限,用户组有rx权限,其余也有rx权限 //假如建立文件,owner有rw权限,用户组有r全新啊,其余也有读权限 [root@SZB-L0026548 tmp]# umask -S u=rwx,g=rx,o=rx
修改文件的特殊属性。
chattr +i codeer.txt // i的做用很大。它可让一个文件“不能被删除、更名、设置链接,也没法写入或新增数据”。对于系统安全性有至关大的帮助。 chattr -i codeer.txt
查看帮助文档
ls命令是Linux系统下使用频率很高的一个命令,用来列出文件或目录的详细信息
ls [option] [文件|目录](文件名和目录名支持通配符) ls //默认列出当前目录下文件的信息,横向排列 ls -al //列出文件的详细信息 ls -alh //显示文件的大小 [root@SHB-L0048478 tmp]# ls -alh -rw-r--r-- 1 root root 1.2K Nov 30 20:07 chen.txt ls -alht //时间近的在前面 ls -alhtr //时间远的在前面 ls -alhr //根据文件名字母排序
查看当前路径
[root@SHB-L0048478 chen]# pwd /tmp/test/chen
mkdir用于建立目录,rmdir用来删除目录,这个命令不是很经常使用,rm命令能够替代其功能。
# 设置目录的访问权限 mkdir -m 755 # 递归循环建立目录 mkdir -p ./test/codeer # 删除test目录下的codeer目录 rmdir test/codeer # 联通test目录一块儿删除 rmdir -p test/codeer
rm命令能够删除一个目录中的一个或多个文件或目录,也能够将某个目录及其下属的全部文件及其子目录均删除掉。对于连接文件,只是删除整个连接文件,而原有文件保持不变。
# 强制递归删除文件,建议备份 rm -rf file # 交互式删除文件 rm -i file
cp [选项][ 来源文件 ] [目的文件]
cp -a * /tmp //该选项一般在拷贝目录时使用。它保留连接文件、文件属性,并递归地拷贝目录,其做用等于dpr选项的组合。 cp -d * /tmp //不加这个选项时会把链接文件指向的原文件复制过来,加这个选项就复制链接文件 cp -v * /tmp //显示都复制了哪些文件 # 拷贝整个文件夹到另一个 cp -r ./src/* ./src_bak
mv [选项] [ 来源文件 ] [目的文件]
# 这个命令有重命名的做用 备份 mv -i file1 file2
创建链接文件
# 给source file创建软链接文件(快捷方式) ln -s source_file_name link_file_name
修改软连接
ln –snf [新的源文件或目录] [快捷方式]
没有文件就建立文件,有这个文件就修改文件的访问时间
cat:cat常常用来显示文件的内容,适合文件内容较少的文件;(cat -n file_name)
tac:和cat同样,只不过是反向显示文件内容;
more:一屏一屏的查看文件内容
more -10 file_name //每屏显示10行;
按Space键:显示文本的下一屏内容。
按enter键:显示一行内容
less:"J"键向上 "K"建向下;"/"向下搜索,"n"键显示下一个;"?"键向上搜索,"n"键显示下一个,"G":到文件底部;"gg":到文件头部;
head:head -10 file_name;显示文件前10行;
tail:tail -10 file_name;显示文件后10行; tail -f file_name; 动态显示文件;tail -1000 fileName >>tmp.log(日志文件较大,一次性打开较慢,只取后面几行放入临时日志文件,这个命令很快)
查找一个可执行命令的绝对路径
which java //输出/usr/bin/java
经过预先生成的一个文件列表库去查找跟给出的文件名相关的文件。
相似于whereis,也是经过查找预先生成的文件列表库来告诉用户要查找的文件在哪里.有时候你执行这个命令可能没找到想要的文件。这是由于系统尚未生成那个文件列表库。你可使用updatedb 命令当即生成(更新)这个库。若是你的服务器上正跑着重要的业务,那么你最好不要去运行这个命令,由于一旦运行,服务器的压力会变大。这个数据库默认状况下每周更新一次。因此你用locate命令去搜索一个文件,正好是在两次更新时间段内,那你确定是得不到结果的。你能够到/etc/updated.conf 去配置这个数据库生成(更新)的规则。locate命令笔者用的也并很少,因此你只要明白有这么一个东西便可。你用到时再去深究其用法吧。
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件 find / -mtime -1 #查找在系统中最后24小时里修改过的文件 find /home -size +512k查大于512k的文件 find /home -size -512k 查小于512k的文件 find . app* #查找当前目录下以app打头的文件
type命令其实不能算查找命令,它是用来区分某个命令究竟是由shell自带的,仍是由shell外部的独立二进制文件提供的。若是一个命令是外部命令,那么使用-p参数,会显示该命令的路径,至关于which命令。
type命令的使用实例:
$ type cd 系统会提示,cd是shell的自带命令(build-in)。 $ type grep 系统会提示,grep是一个外部命令,并显示该命令的路径。 $ type -p grep 加上-p参数后,就至关于which命令。
查看已挂载磁盘的总容量、使用容量、剩余容量等,能够不加任何参数,默认是按k为单位显示的
df -h
du 用来查看某个目录所占空间大小
# 查看dir这个目录占用空间的大小 du -sh dir # 列出dir目录下每一个文件占用空间的大小 du -ah dir # 将wll目录下的文件根据大小排序 du -s /wll/* | sort -nr
gzip通常用于压缩单个文件,不能用来压缩目录,gzip 压缩的文件能够直接使用vim命令查看。
gzip codeer.txt //压缩文件 gzip -d codeer.txt.gz //解压文件
bzip2也是用于压缩一个文件。使用 gzip要比bzip2快,可是bzip2会得到比gzip高的压缩率
bzip2 codeer.txt //压缩单个文件 bzip2 -d codeer.txt.bz2
将几个文件打包成一个文件,不进行压缩。一般打成tar包以后,须要进行gzip。
tar -zcvf test.tar.gz ./* //生成test.tar.gz tar -zxvf test.tar.gz
zip -r test.zip ./* //将当前目录下的文件压缩 zip test2.zip test2/* //将test2目录打包 unzip test.zip //将文件默认解压到testmulu unzip test.zip -d /tmp //解压到指定目录