linux常用命令
基本操作
注:linux系统中严格区分大小写
exit |
退出 |
halt || init 0 || poweroff |
关机 |
reboot || init 6 |
重启 |
ifconfig |
查看网络设置 |
clear |
清屏 |
上下箭头切换 |
历史指令 |
tab |
补全指令 |
文件操作命令
列出文件list
ls |
列出当前目录所有文件 |
ls -d |
列出指定目录下所有文件 |
ls -l |
简写为ll,列出当前目录下所有文件的详细信息 |
ls -a 目录名 |
列出目录下所有文件,包含隐藏文件(.开头为隐藏文件) |
切换目录change directory
cd 目录名 |
切换到某个目录下 |
cd / |
切换到根目录 |
cd~ || cd |
切换到当前用户的家目录 |
cd . |
当前目录 |
cd .. |
上级目录 |
打印工作目录print working directory
pwd 工作目录 |
工作目录 |
创建目录make directory
mkdir 目录名 |
创建一级目录 |
mkdir -p 目录名 |
递归创建目录 |
mkdir -m 777 目录 |
创建目录的同时指定权限(777:可读可写可执行) |
拷贝文件copy
cp 源文件 目标文件 |
拷贝文件 |
cp -r 源文件 目标文件 |
递归拷贝 |
删除目录/文件remove
rm 文件 |
删除文件(提示是否删除,n表示不删除) |
rm -f 文件 |
强制删除文件 |
rm -r 目录 |
递归删除目录 |
rm -rf 目录 |
强制删除目录 |
移动或重命名文件/目录move
mv 源文件 目标文件 |
移动文件 |
mv 文件 新文件名 |
重命名文件 |
basename 路径 |
获得路径中的文件名部分 |
dirname 路径 |
获得路径中目录部分 |
查看文件内容
cat 文件 |
查看文件内容 |
cat -n 文件 |
显示文件内容并显示行号 |
统计字符word count
wc 文件 |
同时统计行数、词数、字符数 |
wc -l 文件 |
只统计文件的行数 |
more分页查看文件的文件
space(空格) |
显示下一页 |
enter(回车) |
显示下一行 |
b || ctrl+b |
显示上一页 |
:q |
退出 |
:f |
显示文件名,当前的行号 |
head、tail查询文件
head 文件名 |
默认查询文件前十行 |
head -n number 文件 |
查询前number行 |
tail 文件 |
默认查询文件后十行 |
tail -n number 文件 |
查询后number行 |
创建和编辑文件
touch 文件名 |
创建文件 |
vi || viw 文件名 |
编辑文件,若不存在则创建 |
根据文件名查找文件find(文件名可用正则表达式)
例:*.log 查找后缀为.log,前面任意数量任意字符
?.log 后缀为.log,前面任意一个字符
[abc].log 后缀为.log,前面是a或b或c
[^abc].log 后缀为.log ,前面除了abc之外
find 目录范围 -name"文件名" |
查找文件 |
find 目录 -mtime +3 |
修改时间大于三天 |
find 目录 -mtime -3 |
修改时间小于三天 |
find 目录 -mtime 3 |
修改时间等于三天 |
find 目录 -size +10k |
查找当前目录下大于10k的文件 |
find 目录 -size -10k |
查找当前目录下小于10k的文件 |
匹配内容grep
grep -n"内容" 文件 |
常规匹配 |
ps -e | grep "sshd" |
管道匹配,过滤某个进程(相当于windows下的netstat -ano|findstr 3306) |
打包、解压(压缩、解压缩) c:create创建;x:extract解压;v:view显示压缩或解压缩的过程;f:file文件
tar zcvf 压缩包名称 文件/目录 |
将文件/目录打包 |
tar zxvf 压缩包名称 |
解压压缩包 |
统计磁盘的占用量
df -h |
统计磁盘占用量 |
统计磁盘使用情况disk used
du -h |
统计磁盘使用情况 |
软连接(symbolic link符号链接,其对应的文件类型为l,表示link,相当于windows下的快捷方式)
ln -s 源文件 连接文件 |
创建软连接(访问软连接:cat 连接文件) |
硬链接hard link(两个文件名同时引用一个文件内容)
ln 源文件 连接文件 |
硬链接 |
vi/vim编辑器
i |
insert在光标所在字符前插入内容 |
a |
append在光标字符后面插入内容 |
o |
在下一行的行首写入内容 |
底行模式
:w |
保存 |
:q |
退出底行模式 |
:wq |
保存并退出 |
:q! |
强制退出,不保存 |
:wq! |
保存并强制退出 |
移动光标
上下键 |
移动光标 |
hjkl |
h向左;j向下;k向上;l向右 |
^ |
快速移动到行首 |
$ |
快速移动到行尾 |
拷贝
yy |
拷贝一行 |
3yy |
拷贝3行 |
yG |
拷贝到文件末尾 |
y$ |
拷贝行尾 |
粘贴
p(小写) |
当前光标的后一行粘贴 |
P(大写) |
当前光标的前一行粘贴 |
删除
dd |
删除一行 |
3dd |
删除3行 |
dG |
删除到文件末尾 |
d$ |
删除到行尾 |
撤销
u(小写) |
撤销(按几次撤销几次) |
底行模式更多应用
:set nu |
显示文件行号 |
/内容 |
从文件中查找内容 |
:set fileencoding |
显示文件编码 |
用户管理
普通用户的id从500开始,系统用户的id是500之前。
创建一个新用户,会同时创建同名的分组。
创建一个用户,在home目录创建和用户名同名的家目录
/etc/passwd 保存所有用户信息
/etc/shadow 保存用户密码
创建用户
useradd 用户名 |
创建新用户(默认普通用户) |
useradd -r 用户名 |
创建系统用户 |
useradd -g 组名 用户名 |
创建用户时指定用户所属分组 |
useradd -r -s || sbin || nologin 用户名 |
创建系统用户并免登录 |
Passwd |
给当前用户设置密码 |
passwd 用户名 |
给指定用户设置密码(输入两次) |
userdel 用户名 |
删除用户,只删除该用户在/etc/passwd文件中的信息 |
userdel -r 用户名 |
删除用户同时删除该用户在home下的家目录 |
su 用户名 |
切换用户(由root用户切换到普通用户无需输入密码,反则需密码) |
sudo 命令 |
给普通用户提权(需root提前在/etc/sudoers文件里给普通用户提权) |
分组管理
/etc/group 这个文件保存的是分组的信息
groups 用户名 |
查看指定用户所属分组 |
groupadd 组名 |
创建分组 |
groupadd -r 组名 |
创建系统分组 |
groupdel 组名 |
删除分组(若分组中存在用户,不可删除) |
文件权限
chgrp 组名 文件 |
修改文件所属组 |
chown 用户名 文件 |
修改文件所有者 |
chmod 权限值 文件 |
修改3类用户对文件的权限 |
权限由9个字符组成,每3个一组
前3个字符,对所有者设置的权限,r表示只读,用4表示;w表示可写,用2表示;x表示执行权限,用1表示
中间3个字符,对所属组内用户的权限,r表示只读,用4表示;w表示可写,用2表示;x表示执行权限,用1表示
后3个字符,对其他用户的权限,r表示只读,用4表示;w表示可写,用2表示;x表示执行权限,用1表示
常见权限:644、755、777(最高权限)
进程管理
/etc/init.d/ 所有守护进程脚本,若要开机自启动,则将该进程加入其中
/etc/rc.local/ 若某些进程未提供守护进程的管理方式,但需其开机启动,将启动命令加入此文件夹
ps -e |
列出当前运行的程序/进程 |
ps aux |
列出进程的详细信息 |
ps -e | grep xxx |
过滤某个进程 |
kill pid |
终止进程(例:kill 1235) |
有时可能会将进程的id保存在文件中,后缀常是.pid,终止该进程时则用kill `cat xxx.pid`
守护进程
chkconfig |
查看一直运行的程序 |
0-6,分别指在不同状态下的启动方式
0,表示关机状态下
6,表示重启时状态
chkconfig --list 进程 |
单独查看某个守护进程 |
chkconfig --level xxxx 进程 off||on |
设置守护进程的运行方式 |
service 进程 start||stop||restart |
启动/停止/重启进程(只针对守护进程) |
定时任务
/var/spool/cron/ 保存定时任务
根据时间计划执行一些进程,定时执行(制定时间计划,设置执行命令)
定时任务原理:系统默认运行了一个守护进程:crond(该服务会定时查看crontab里有无该执行的任务,若时间符合就会执行)
时间节点书写格式:
7 固定的7个时间单位
5,7 时间列表,5和7时间单位
1-5 时间范围,1到5时间单位
* 每,每个时间单位
*/7 每7个时间单位
crontab -e |
触发一个编辑器,定义时间计划及要执行的命令(分 时 日 月 周 命令) |
例:每天晚上3点定时备份数据库 0 3 * * * mysqldump -uroot -proot hytc>xxx
每隔2个小时提醒我休息 0 */2 * * * alert
每个工作日(1-5)下午6点发送 0 18 * * 1-5 sendmail
每周一9:30开始发送上周总结 30 9 * * 1 sendmail
每一分钟把当前时间写入到date文件中 */1 * * * *date>>date.txt
date |
命令,获取当前的时间 |
shell命令
命令解释器,将用户输入的命令找到该命令对应的文件
whereis 命令 |
查找指定命令的路径 |
ctrl+a |
移动到命令开头 |
ctrl+e |
将光标移动到命令结尾 |
ctrl+c |
终止当前进程(撤销要执行的命令) |
>> |
输出重定向(默认一个命令会将内容输出到控制台,若需写入文件,则>>文件名) |
| |
管道符(将 | 前面的命令的输出作为 | 后面的输入) |
& |
后台运行,不在控制台显示 |
例:ps -e | grep sshd 先查询所有的进程,再从中过滤出sshd这个进程
网络连接类型
/etc/sysconfig/network-scripts/ifcfg-eth0 保存虚拟机的网络地址配置文件
Bridge 桥接
将物理主机作为一个虚拟交换机(桥梁),实现虚拟机(centos)和外部网络进行连接
不能和宿主电脑一样的ip地址
NAT 网络地址转换
虚拟机无需设置静态IP,只需使用DHCP功能自动获取IP,该IP为虚拟,可减少IP地址占用量
Host-Only 仅主机模式
虚拟电脑(centOS)仅可与主机(宿主电脑win)进行通讯,不可连接外网
环境变量
/etc/profile 保存环境变量(多个用冒号隔开)
系统运行时,定义的一些变量,通常用来保存一些命令的位置。通过echo $PATH输出目前有哪些环境变量,若需添加新的环境变量,在文件中新增即可
注:多个环境变量用:隔开
只能使用root用户执行source命令
执行source/etc/profile命令,让环境变量生效
例:export PATH="$PATH:/home/admin"
挂载光盘
mount 目录 |
设备挂载点(目录) |
umount 设备 |
取消挂载 |
安装软件
rpm安装
Redhat Linux体系里面的软件安装包,以.rpm后缀,常称为rpm包管理
rpm -ivh 包名称 |
安装软件 |
rpm -e 安装包名称 |
卸载安装包 |
rpm -uvh 安装包名称 |
更新包 |
rpm -qa 安装包名称 |
查询安装文件 |
yum安装
通过rpm方式进行安装,需解决依赖关系
yum方式会自动解决安装包之间的依赖,并进行安装;需确定yum源,即当需要一个依赖文件时,去哪找此安装包
yum源:
基础来源,网络
光盘来源,挂载的光盘
yum remove 安装包 |
卸载安装包 |
yum update 安装包 |
更新安装 |
configure |
配置安装路径 |
make |
编译 |
make install |
安装 |
source 目录 |
让环境生效 |
上一篇: 基于DCL的单例懒汉模式实现
下一篇: Shell批量获取hive库中的建表语句