shell介绍
常用的shell种类:ash、bash、ksh、zsh、csh等,Ubuntu默认使用bash
查看当前shell种类:
echo $SHELL
改变shell种类:
$sh
$bash
$ash
$csh
概述
线上查询及帮助命令(1个)
man
目录操作命令(6个)
pwd cd ls mkdir rmdir tree
文件操作命令(7个)
touch rm cp mv rename find ln
文件查看及处理命令(21个)
cat less more head tail tac cut paste sort uniq wc iconv file diff chattr lsattr rev vimdiff
文件打包压缩命令(3个)
gzip tar unzip
信息显示命令(12个)
uname hostname dmesg uptime stat du df top free w date(查看系统时间)
搜索文件命令(4个)
find which whereis locate
用户管理命令(10个)
useradd userdel passwd chage usermod id su sudo visudo groupadd
基本网络操作命令(10个)
telnet ssh scp wget ping route ifconfig ifup ifdown netstat
深入网络操作命令(6个)
mail mutt nslookup dig
有关磁盘空间的命令(6个)
mount umount df fsck dd
查看系统信息的命令(7个)
ps top kill
系统管理相关命令(9个)
free vmstat mpstat iostat sar chkconfig last
系统安全相关命令(13个)
umask chgrp chmod chown lsattr ps whoami
查看系统用户登陆信息命令(6个)
w who users last lastlog fingers
查看硬件相关命令(6个)
ethtool mii-tool dmidecode dmesg lspci
其它(14个)
echo yum watch alias unalias clear history eject time nohup nc xargs
监视CPU、内存、I/O、进程、负载
top free vmstat sar ipcs ipcrm uptime
关机
shutdown -h now ——>立刻关机(生产常用)
shutdown -h +1 ——>1 分钟以后关机
halt ——>立即停止系统,需要人工关闭电源
poweroff ——>立即停止系统,并且关闭电源
重启
reboot(生产常用)
shutdown -r +1 ——>1 分钟以后重启
注销
logout
exit(生产常用)
ctl+d ——>快捷键(生产常用)
进程管理:(16个)
bg:后台运行
jobs:显示后台程序
kill,killall,pkill:杀掉进程
crontab:设置定时
pstree:显示进程状态树
top:显示进程
nice:改变优先权
nohup:用户退出系统之后继续工作
strace:跟踪一个进程的系统调用
ltrace:跟踪进程调用库函数的情况
vmstat:报告虚拟内存统计信息
危险的系统命令:
mv rm dd fdisk parted
linux 四剑客(4 个)
grep egrep sed awk
命令详解
# 为超级管理员 ; $ 为普通用户 ; 清空屏幕:clear
pwd:查看当前用户所在的路径
history 打印用户操作命令的历史记录
特殊字符
1> 重定向,会清除文件里所有以前数据
1>> 追加重定向,在文件结尾加入内容,不会删除已有的文件内容
<0 输入重定向
<<0 追加输入重定向
标准输入:0,使用<或<<数据流向从右向左
正常输出:1,使用>或>>。数据流向从左向右
错误输出:2,使用2>或2>>
\ 转义字符
.. 上级目录
. 当前目录
| 管道(把前一个命令的输出交给后一个程序继续处理)
~ 用户的家目录,针对root,~就代表 /root
/ 根目录,以及绝对路径表示
;命令分隔符
` 命令替代符,总是成对出现: echo ‘ls -l’ #将命令’ls -l ’的结果显示出来
{} 输出字母、字符或者数字序列
! 取反
-a 并且
-o 或者
!+字母,表示调用最近一次以此字母开头的命令;
!!表示使用最近一次操作的命令
+数字,表示调出历史的第几条命令
-用户上一次所在目录,-由OLDPWD变量控制
# 注释标识
快捷键
tab 命令、路径补全
Ctrl+c 终止当前命令或程序
Ctrl+d 退出当前用户环境
Ctrl+a 使光标移动到开头
Ctrl+e 使光标移动到结尾
Ctrl+u 删除光标以前的内容
Ctrl+k 删除光标以后的内容
Ctrl+l 清屏
基础正则表达式
? 单个任意字符
* 通配一个或多个任意字符
[] 指定范围
! 排除符号
sed -ir ‘s#(可以用正则)#\1#g’ regan.txt #正则部分不用转义
系统相关:
uname (-r 内核;-m 32/64位;-n 主机名; -a 所有) 打印系统信息
hostname 查看主机名
service network restart 重启网络
sudo ufw status 查看防火墙状态
/etc/init.d/iptables stop ==service iptables stop 关闭防火墙
netstat -lntup 显示被使用的端口信息
netstat -apn | grep 8080 查看8080端口信息
netstat -atln 查看网络端口信息
用户管理:
adduser [参数] [用户名] 添加用户
passwd [参数] [用户名] 更改用户密码
whoami 查看当前用户
su - regan 切换当前用户(- 表示携带环境变量一起切换)
finger [参数] [用户名] 显示用户信息
usrmod [参数] [用户名] 修改用户登录信息
id [参数] [用户名] 显示用户id
chfn [参数] [用户名] 修改用户个人信息
deluser [参数] [用户名] 删除用户
组管理命令
addgroup [参数] [用户组名] 添加用户组
goups [用户组名] 显示用户组
groupmod [参数] [用户组名] 修改用户组信息
delgroup [参数] [用户组名] 删除用户组
权限概述
- rw - r- -r - - root root 184905
- rw - r- -r - - 表明了权限与用户和用户组的关系,除了第一位表示文件类型以外,剩余9位以3位为一组,分别表示文件归属用户的权限、归属用户组的权限、其他用户权限。root root 代表了文件的拥有者和该用户所归属的用户组。
权限的表示方法: r 100 4 ; w 010 2 ; x 001 1
因此- rw - r- -r - -可以表示为644
权限管理
chmod [参数] [文件名/目录名] #修改文件或目录的权限
chmod 755 hadoop:hadoop container-executor 将文件设置为755权限
chown [参数] [用户名.<组名>] [文件名/目录] #修改文件或目录归属的用户或用户组
chown hadoop:hadoop hadoop-2.7.2-src/* 将目录下所有文件指定为hadoop组的hadoop用户
chgrp [参数] [组名] [文件/目录名] #修改文件或目录的归属组
参数 -R :递归处理
配置文件:
/etc/shadow 密码文件
/etc/group 用户组文件
/etc/sudoers 权限文件
该文件只能由root用户,以命令”visudo”进行修改:
root ALL=(ALL) ALL
%admin ALL=(ALL) ALL
第一栏为用户名或组名,组名必须以%开头
第二栏为该规则适用的主机
第三栏指出该用户能够以什么身份来执行命令,ALL代表所有用户
第四栏指出该用户能够以第三栏指定的用户执行什么命令,ALL代表所有命令
visudo 编辑sudo配置文件
目录:
cd ==change directory #切换路径,例如:# cd /home
ls -l ==list #显示文件;-l 长格式显示;-d 显示目录
mkdir -p #创建目录,例如:# mkdir data,递归创建目录和文件
du -h --max-depth=1 # 查看当前目录下所有文件的大小
文件:
touch #创建文件,例如:# touch regan.txt
vi/vim #编辑器
:set nu 显示行号
:5 定位到第5行
:$ 定位到最后一行
/hadoop 定位到hadoop,n 到下一个定位点
echo #打印输出
echo > #将文本写入到文件(会先清除源文件内容)
echo >> #将文本追加到文件末尾(不会清除源文件内容)
cat -n 文件名 #显示文件的内容
特殊用法:增加内容
cat >>/data/regan.txt<
文件内容:
wc [参数] [文件名] : 统计文件的字数、字节数、行数等信息
comm [参数] [文件1] [文件2] : 逐行比较两个已排序文件的差异,并将结果显示出来
diff [参数] [文件1] [文件2] :逐行比较两个文件的异同处、用户及权限管理
vimdiff txt1 txt2 #比较两个文件的区别,并高亮显示
less(=cat) 按屏(空格,pgup,pgdn)或行(回车)查看内容
more 按屏(空格)或行(回车)查看内容(不能向上翻)
head #取文件的前n行,默认前10行,取前三行 -n 3,简写是-3
tail #取文件的最后n行,默认最后10行,取最后三行,-n 3 -f跟踪一个文件尾部的实时变化
cp -a dir1 dir2 # 复制文件1给文件2,例如:cp -a regan.txt /home/data
-r :递归,用于复制目录
-p:保持属性
-a:相当于-pdr
-i :将提示确认
进程:
利用ps命令可以查看当前所有运行着的进程信息:ps [参数]
-f :产生某个进程的一个完整信息清单
-e :显示进程的完成清单
-a:显示所有用户的进程清单
-u:产生某个特定用户的的进程清单
-t :产生与某个特定终端联系的进程清单
-w:显示进程命令完整行信息
-x:显示后台运行进程
当ps命令不带参数时,只显示与控制终端相关的进程的基本信息
top命令动态显示运行中的进程
利用top命令动态显示进程信息时,可以更改显示顺序,常用命令如下:
按“P”键可根据CPU使用率排序
按“M”键可根据内存使用率排序
按“T”键可根据运行时间的长短排序
按“Q”键可退出查看模式
nice命令设置进程运行优先级
进程优先级一般为-20~19,-20为最高优先级,修改进程的nice值可以修改进程的优先级。系统进程的优先级默认为0
语法:nice [-n] [command] [arguments]
其中,-n表示进程的优先级,command表示要执行的命令,arguments是command所带的参数
eg: nice --12 processname
renice命令修改进程的优先级
该命令只有root用户能使用
语法:renice [优先级] [-g<进程群组名称>...] [-p<进程号>...] [-u<用户名称>...]
eg: renice -12 76864
kill命令终止进程
语法:kill [-signal] PID
signal为信号的值
终止进程(kill不带参数时,发送的即为此信号)
kill命令的常用方法:
kill -STOP 4385 #停止4385进程,但不退出
kill -CONT 4385 #重新开始4385进程
kill -9 4385 #强制终止4385进程
killall命令终止所有同名进程
语法:killall [-signal] [进程名称]
eg: killall -9 processname #终止系统中所有的名为processname的进程
mv #移动目录或文件,例如:# mv /data /root
rm -f #删除文件或目录,-f 强制删除,-fr 删除目录
生产场景尽量不要使用rm,如果非要用,一定要先cp备份
替代方法:
mv 移动至临时目录。回收站。
find删除:find /root/data/ -type f -exec rm -f {} \;
find /root/data/ -type f|xargs rm -f
find /root/data/ -type f ! -name “regan.txt” |xargs rm -f
rmdir #删除空目录
find [路径] -name [关键字] :按名字匹配关键字在路径下查找
find ./data/ -type f -name “test1.text" | xargs sed -i ‘s#oldboy#oldgirl#g’
将data目录下的所有test1.txt文件找出来,并将其中的oldboy替换为oldgirl
find /root/data/ -type f -a -type d -name “*.txt”
sed*****(stream editor) #擅长取行
sed ‘/oldboy/’ regan.txt 获取含有oldboy的行
sed -n ‘/oldboy/d’ regan.txt 输出除了old以外的内容
-n取消sed的默认输出
-i 改变文件内容
d删除,p打印
sed -n ‘20,30p’ regan.txt 取第20到30行并打印
sed替换*
sed -i ‘s#oldboy#oldgirl#g’ regan.txt 将oldboy替换为oldgirl
s 代表查找替换;
g(global)对所有内容中符合条件的内容替换;-
i 改文件内容
# 分隔符,可用其他符号替换
awk***** 擅长取列
awk -F ‘:’ ‘{print $2}’ 文件 #$2表示第二列,-F指定以:分割
awk ‘{if(NR<31 && NR>19) printf $2 “\n”}’ regan.txt
NR代表行号,\n换行
$NF代表最后一列
$0 表示整行
grep #擅长过滤,把想要的和不想要的分离开
grep -ir “Ubuntu” /usr : 在/usr下递归查找内容包括Ubuntu关键字的文件,忽略大小写
grep “oldboy” regan.txt #获取包含oldboy的所有行
grep -v “oldboy” regan.txt #获取除了oldboy以外的所有行
-B 显示匹配行的前n行
-A 显示匹配行的后n行
-C 显示匹配行的前后各n行
-o 只显示匹配到的内容本身,而不是整行
-i 不区分大小写
-E 过滤多个字符串 ,例:grep -E “3306|1521” /etc/services
例:grep -B 30 -A 10 regan.txt 显示regan.txt的第20到30行
yum #linux里的包管理器,帮助解决依赖问题
yum install tree(包名)-y #下载tree包,然后调用rpm命令安装tree包
如果需要依赖包,将自动下载安装
rpm -ivh #安装、显示输出、以可读方式展示
rpm -ivh 包名.rpm #提前下载好,最大问题,依赖问题不好解决
rpm -qa tree #查看tree包的状态
tree #显示目录树结构
alias #查看以及定义别名
alias oldboy=’echo “i am regan”’
别名生效的位置:针对root用户:/root/.bashrc
所有用户生效:/etc/bashrc或/etc/profile定义
使别名生效:source /etc/profiles
unalias 命令名 #取消别名
\cp 或 全路径 cp #在取消别名的条件下复制
seq -s “=” m p n ==打印从数字m到n步长为p的序列
-s “=” #用=连接序列。例:seq -s “=” 1 2 10 #输出为1=3=5=7=9
链接:硬链接和软链接
硬链接利用Linux为每个文件分配的物理编号,即iNode建立的,因此硬链接不能跨越文件系统。软链接是利用文件的路径名建立链接。
ln sourcefile targetfile : 创建一个targetfile文件,其通过软链接指向sourcefule
压缩和解压缩:
zip [参数] [压缩文件名.zip] [被压缩文件列表]
unzip [参数] [压缩文件名.zip]
uzip 包名.zip 解压包
tar [参数] [压缩文件名] [被压缩文件列表] #tar的优势在于,将归档和压缩融合在一起同时完成
tar -zxvf 包名.tar.gz 解压包
dpkg
dpkg -l krb5* 显示所有安装包,名字以krb开头
定时任务
①上传可执行jar包,并编写执行脚本:
#!/bin/bash
cd /home/hadoop/Timing_plan/
/home/hadoop/jdk8/bin/java -jar MongodbToHBase_content_update.jar
②编辑crontab文件
00 19 * * * hadoop /home/hadoop/Timing_plan/MongodbToHBase_content_update.sh
③重启定时服务
/etc/init.d/cron restart