Linux常用命令
本篇文章记录常见的Linux命令,以CentOS7.6演示。
目录结构
Vim编辑器快捷键
- 正常模式下,yy:拷贝当前行,5yy:拷贝当前行向下的5行,并粘贴(p)
- 正常模式下,dd:删除当前行,5dd:删除当前行向下的5行
- 查找某个单词,命令行模式下,/关键字,回车查找,输入n是查找下一个
- 设置行号,取消行号。命令行模式下:set nu和set nonu
- 到文件最后一行:G,到文件首行:gg
- 撤销动作:正常模式下输入u
- 将光标移到20行:
- 显示行号:set nu
- 正常模式下输入20
- shift+g
Linux开关机/用户登录注销
- sync:把内存数据同步到磁盘,在关机或者重启时,都应该先执行sync命令,防止数据丢失。
- shutdown -h now:立即关机
- shutdown -h 1:一分钟后关机
- init 0或halt:立即关机
- shutdown -r now:立即重启
- init 6或reboot:立即重启
用户管理
基本介绍
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
Linux的用户需要至少属于一组。
常用命令
- 添加用户:useradd [选项] 用户名,useradd -d 指定目录 用户名,如useradd -d /home/twilight twilight
- 指定/修改密码:passwd 用户名
- 删除用户:userdel 用户名(删除用户,但保留家目录),userdel -r 用户名(删除用户以及用户家目录)
- 查询用户信息:id 用户名
- 切换用户:su - 用户名,exit退出
- 常看当前用户:whoami/who an i
- 增加组:groupadd 组名
- 增加用户时直接加上组:useradd 用户名 -g 组名
- 删除组:groupdel 组名
- 修改用户所在组:usermod 用户名 -g 组名,如usermod xh -g police,把xh改到police组下
- 用户和组相关文件
- /etc/passwd:用户的配置文件,记录用户各种信息,每行含义:用户名:口令:用户标识号:组标识号:注释行描述:组目录:登陆shell
- /etc/shadow:口令配置文件
- /etc/group:组的配置文件,记录Linux包含组的信息。每行含义:组名:口令:组标识号:组内用户列表
实用命令
运行级别
- 常用运行级别是3和5,修改默认运行级别可改文件/etc/inittab中id:3:initdefault:中的数字
- 切换到指定运行级别:init [0123456]
帮助指令
- man [命令或配置文件]:获取该命令或者配置文件的帮助信息
- help 命令:获取shell内置命令的帮助信息
文件目录类
- pwd:显示正在工作的目录绝对路径
- ls [选项] [目录或文件]:显示目录或文件
- -a:显示当前目录所有文件和目录,包括隐藏的
- -l:以列表方式显示信息
- cd 目录:切换到指定目录,cd ~或者cd:回到自己的家目录,cd ..回到上一级目录
- mkdir [选项] 要创建的目录名:创建目录
- -p:创建多级目录,如mkdir -p /home/animal/tiger
- rmdir [选项] 要删除的空目录,如果目录下有内容,则无法删除,删除非空目录:rm -rf 删除的目录名
- touch 文件名:创建新文件
- cp [选项] 要复制的文件 指定目录名:把文件拷贝到指定目录下
- -r:递归复制整个文件夹,如cp -r xh/ twilight/
- rm [选项] 要删除的文件或目录
- -r:递归删除整个文件夹
- -f:强制删除不提示
- mv 老名字 新名字:修改文件名,mv 文件名 指定目录:把文件移动到指定目录下
- cat [选项] 查看的文件名,一般都会带上管道命令:|more(分页浏览)
- -n:显示行号
- more 要查看的文件名
- space:向下翻页
- Enter:向下翻一行
- q:离开
- less 查看的文件名,对显示大型文件效率较高
- 内容 > 文件:把内容写到文件中(覆盖),如ls -l > a.txt
- ls -al >> 文件:把列表内容追加到文件末尾
- cat 文件1 > 文件2:将文件1覆盖到文件2
- echo 内容 >> 文件:输入内容到文件尾
- echo 输出内容:输出内容到控制台,如echo $PATH
- head 文件名:查看文件头10行内容,head -n 5:查看文件头5行内容
- tail 文件名:查看文件后10行,tail -n 5:查看文件后5行,tail -f 文件名:追踪该文件所有更新
- ln -s 源文件或目录 软链接名:给源文件创建一个软链接
- history n:查看最近使用过的n个命令
时间日期类
- date:显示当前时间
- date -s 字符串时间:设置当前时间
- cal [年]:查看日历
搜索查找类
- find [搜索范围] [选项]:从指定目录向下递归各个子目录
- -name 文件名:按照指定文件名查找,如find /home -name hello.txt(*.txt)
- -user 用户名:按照属于用户查找,如find /home -user twilight
- -size 文件大小:按照文件大小查找,如find /home -size -20(+20)k,查找小于(大于)20k的文件
- locate 文件名:快速定位文件位置。
- locate指令基于数据库进行查询,第一次运行前,需要先updatedb创建locate数据库
- grep:过滤查找,|:管道符,表示将前一个命令的处理结果传递给后面的命令处理
- grep [选项] 查找内容 源文件 ,如cat hello.txt | grep -n yes
- -n:显示匹配行及行号
- -i:忽略字母大小写
压缩和解压类
- gzip 文件名:压缩文件(只能压缩为*.gz文件),使用这个命令压缩,不会保留原来的文件
- gunzip 文件.gz:解压缩
- zip [选项] xxx.zip 要压缩的内容:压缩文件
- -r:递归压缩整个目录
- unzip [选项] xxx.zip:解压缩
- -d 目录:指定解压缩后文件的存放目录,如unzip -d /home/test/ mypackage.zip
- tar:打包命令,打包文件是.tar.gz文件,tar [选项] xxx.tar.gz 打包的内容
- -c:产生.tar打包文件夹
- -v:显示详细信息
- -f:指定压缩后的文件名
- -z:打包同时压缩
- -x:解包.tar文件
- 打包:-zcvf,如tar -zcvf mypackage.tar.gz a.txt b.txt,把a.txt和b.txt打包
- 解压:-zxvf,如tar -zxvf my.tar.gz -C /home/,把压缩包解压到/home/下
组管理与权限管理
组的管理
- Linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。
- ls -ahl:查看文件所有者
- chown 用户名 文件名:修改文件所有者为该用户
- charp 组名 文件名:修改文件所在的组为该组
- 除文件的所有者和所在组的用户外,系统的其它用户都是文件的其他组
- usermod -g 组名 用户名:改变用户所在组
- usermod -d 目录名 用户名:改变用户登陆的初始目录
权限管理
- ll查看内容如下
0~9位说明:
- 第0位确定文件类型:-(文件),d(目录),l(链接)
- 第1-3位确定该文件所有者拥有该文件的权限。
- 第4-6位确定同用户组其他用户拥有该文件的权限。
- 第7-9位确定其它用户拥有该文件的权限。
rwx作用到文件
- 【r】代表可读:可以读取、查看
- 【w】代表可写:可以修改,但是不代表可以删除该文件,删除文件的前提是对该文件所在目录有写权限
- 【x】代表可执行:可以被执行,./文件名执行
rwx作用到目录
- 【r】代表可读:可以读取,ls查看目录
- 【w】代表可写:可以修改目录内创建、删除、重命名目录
- 【x】代表可执行:可以进入该目录
修改权限-chmod
u:所有者,g:同组其他用户,o:其它用户,a:所有人(u、g、o的总和)
chmod u=rwx,g=rx,o=x 文件目录名,给三种用户权限
chmod o+w 文件目录名:给其他用户该文件的写权限
chmod a-x 文件目录名:移除所有用户对该文件或目录的执行权限
通过数字变更权限:r=4,w=2,x=1,rwx=4+2+1=7
- chmod u=rwx,g=rx,o=x 文件目录名相当于chmod 751 文件目录名
chown newowner file:改变文件所有者
- chown [-R] newowner:newgroup file改变文件的所有者和所有组,-R 如果是目录,其下所有子文件递归权限管理
定时任务调度(crontab)
任务调度就是指系统在某个时间执行的特点的命令或程序
系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等- 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份
- crontab [选项]
- -e 编辑crontab定时任务
- -l 查询crontab任务
- -r 删除当前用户所有的crontab任务
- service crond restart:重启任务调度
特殊符号:
执行案例:
- 举例:*/1 * * * * ls -l /etc/>/tmp/to.txt,意思是:每小时的每分钟执行ls -l /etc/ > tmp/to.txt命令
- crontab -e进行编辑任务,保存后即生效
应用举例
每隔一分钟,将当前的日期信息追加到/tmp/mydate文件中
- 先编写一个文件 /home/mytask.sh,内容为date >> /tmp/mydate.
- 给mytask.sh一个可执行权限
- crontab -e编辑定时任务
- 添加*/1 * * * * /home/mytask.sh,保存退出
- 查看/tmp/mydate即可发现日期
进程管理
查看进程
- ps命令是用来查看目前系统中,有哪些正在进行的进程,以及他们的执行情况,可以不加任何参数,一般使用参数 -aux
- a:显示当前终端的所有进程信息
- u:以用户的格式显示进程的信息
- x:显示后台进程运行的参数
- ps -ef | more:可查看到父进程
- ps -aux | grep 进程名 或者 ps -ef | grep 进程名
终止进程kill和killall
- kill [选项] 进程号:通过进程号杀死进程,-9:强制杀死
- killall 进程名称:通过进程名杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
- 踢掉非法登陆用户:ps -aux | grep sshd查看进程,kill 进程号
查看进程树pstree
- pstree [选项]:以树状形式查看进程信息
- -p:显示进程PID
- -u:显示进程所属用户
服务管理
- systemctl [start|stop|restart|reload|status] 服务名
- 查看防火墙状态:systemctl status firewalld.service
- 关闭防火墙:systemctl stop firewalld.service
- 开启防火墙:systemctl start firewalld.service
监控
- top与ps命令很相似,他们都是用来显示正在执行的进程,top与ps命令最大的不同之处,在于top在执行一段时间可以更新正在运行的进程
- top -d 5:每隔5秒自动更新状态
- 输入u,再输入用户名,查看某个用户的进程
- 输入k,再输入进程号,杀死某个进程
- netstat -anp:查看所有网络服务,|grep 服务名,监听某个服务
包管理器
yum包管理器
- 基于RPM包管理器,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次性安装所有依赖的软件包。前提是要能联网。
- yum list | grep xxx:查询yum服务器是否有需要安装的这个软件
- yum install xxx:安装指定的yum包
- yum [options] [command] [package]
- options:可选:-y(安装过程中提示选择全部为yes),-q(不显示安装过程)等
- command:要进行的操作
- package:安装的包名
- yum remove package_name:删除包
配置JDK环境
上传jdk到/opt目录下,解压
添加环境变量
- vim /etc/profile
- 在末尾添加:
重启
编写java程序运行: