赞
踩
欢迎各位关注我的个人微信公众号:赶令,将会定期更新大数据相关知识及个人心得
Linux中一切皆文件
内核 + 文件系统 + shell = Linux
bin:放Linux上常用的命令
dev:放设备的目录
etc:Linux配置文件目录
home:普通用户会在该目录下创建属于自己的目录
root:管理员用户家目录
media:即插即用型的设备的挂载目录
光盘自动挂载到media目录下
mnt:挂载目录
将硬盘中的分区(C/D/E)与目录进行关联
/datas/cpan 《- C分区
/datas/Dpan 《- D分区
/datas/Epan 《- E分区
opt:可选目录
usr:放安装的应用程序
sbin:只有管理员才能执行的命令
var:Linux日志默认存储目录
ls : list,用于列举一个目录或者文件
ls [-ald] file_path
a:所有的:列举包含隐藏文件
.开头的为隐藏文件
l:长格式查看详细信息
ls -l = ll
d:列举本身
.为本身
cd:change directory 改变目录
用于切换工作目录
cd target_path
./为本身或当期目录,…/文上一级目录
相对路径:相对当前路径,依次进行访问
more target_file:分页查看文件内容
more /shell/startserver.sh
绝对路径:当访问文件或者目录时,从/目录开始访问
cd /shell/
more startserver.sh
pwd:print work directory 打印当前工作目录
clear:用于清屏
快捷键:Ctrl+l
whereis:用于查看某个命令的位置
whereis more
history:用于查看自己运行过的命令
创建文件夹 创建文件夹 创建文件夹
mkdir [-p] dir_path
mkdir /root/test01
mkdir -p /root/test02/test
p :表示递归创建 p:表示递归创建 p:表示递归创建
创建文件 创建文件 创建文件
touch file_path
touch test01/file1
r m − r f f i l e / d i r rm -rf file/dir rm−rffile/dir
r :递归,用于删除目录 r:递归,用于删除目录 r:递归,用于删除目录
f :确认文件 f:确认文件 f:确认文件
vi/vim:Linux中的文本编辑工具
i :进入插入模式 i:进入插入模式 i:进入插入模式
y y :复制当前行 yy:复制当前行 yy:复制当前行
10 y y :复制从当前开始的十行 10yy:复制从当前开始的十行 10yy:复制从当前开始的十行
p :粘贴 p:粘贴 p:粘贴
d d :剪切当前行 dd:剪切当前行 dd:剪切当前行
10 d d :剪切从当前行开始的十行 10dd:剪切从当前行开始的十行 10dd:剪切从当前行开始的十行
G :跳到最后一行 G:跳到最后一行 G:跳到最后一行
g g :跳到第一行 gg:跳到第一行 gg:跳到第一行
10 g g :跳到第 10 行 10gg:跳到第10行 10gg:跳到第10行
o :在下一行进行插入 o:在下一行进行插入 o:在下一行进行插入
O :在上一行进行插入 O:在上一行进行插入 O:在上一行进行插入
u :撤销上一步 u:撤销上一步 u:撤销上一步
退出插入模式进入命令模式: e s c 退出插入模式进入命令模式:esc 退出插入模式进入命令模式:esc
进入命令模式:按esc
q:退出
wq:保存退出
!:强制的
x:保存退出
X:加密
set nu:显示行号
1,$s/nologin/1234/g
1:从第一行开始
$:最后一行
s:替换
g:如果一行出现多个,全部替换
cat:一次性读取所有文件内容
cat /etc/passwd
cat -n /etc/passwd
显示行号
more:分页查看,一页一页的显示
只能向下翻页,最后自动退出
less:分页查看
按q退出,可以上下翻页
head:查看文件的前多少行
head [-n] file_path
head -10 /etc/passwd
t a i l :查看文件的后多少行 tail:查看文件的后多少行 tail:查看文件的后多少行
t a i l [ − n ] f i l e tail [-n] file tail[−n]file_ p a t h path path
t a i l − 10 / e t c / p a s s w d tail -10 /etc/passwd tail−10/etc/passwd
− F :动态查看该文件的末尾 -F:动态查看该文件的末尾 −F:动态查看该文件的末尾
$光标闪烁,等待更新 $
C t r l + c 退出 Ctrl+c退出 Ctrl+c退出
cp [-r] source_path target_path
cp /etc/passwd /root/
cp /etc/passwd /root/passwd2
$ -r表示递归,可以复制文件夹下的所有目录及文件,目标文件夹如果没有则递归创建$
拷贝过程中可以直接重命名
移动剪切:也可以实现重命名
mv source_path target_path
No such file or directory
意思:没有对应的文件或者目录
原因:
1-真的没有该文件或者目录,路径写错了
2-没有权限
Permission denied
意思:没有权限
原因:没有权限
解决:修改权限
-bash:cdd : command not found
错误:命令没有找到
原因
1-命令错了
cdd /
2-语法不对
cd/
默认用户:root 管理员用户
默认组:root
Linux默认自带的用户的id都在500以内,用户自己创建的用户id从500开始
用户配置文件:/etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码:用户id:组id:组名称:家目录:使用的shell类型
-o:or 或者条件
useradd fuyun
-r:删除时是否同时删除家目录
passwd fuyun
usermod -l NewUser -d /home/NewUser -m OldUser
-l 修改用户名
-d 修改登录后使用的路径
-m 修改登录名称的同时将目录名称一同修改
su - root
记得退出:exit
groupadd
groupdel
chgrp
groupmod -n newGroup oldGroup
所属用户
|所有者 |同组用户 |其他人 | 所有人 |
|---- |----- |------ |---- |
| u | g | o | a |
权限
|读 |写 |执行 |没有权限 |
|---- |----- |------|---- |
|r |w |x | - |
drwxr-xr-x:表示一个文件的所有权限
|d |rwx |r-x |r-x |
|---- |---- |---- |---- |
|文件类型 |所有者 |同组用户 |其他人 |
回到顶部chmod:用于修改某个文件或者目录权限的
chmod o+w /passwd
chmod a+x /passwd
chmod u+x,g-x /passwd
|r |w |x |
|— |— |---- |
|4 |2 |1 |
rwxrwxrwx:777
chmod 755 /passwd
chown:用于修改某个文件或者目录的所有者的
chown -R username:groupname file_path
− R :表示递归,用于修改目录时,将目录下所有的文件一起更改 -R:表示递归,用于修改目录时,将目录下所有的文件一起更改 −R:表示递归,用于修改目录时,将目录下所有的文件一起更改
shutdown -h now
halt
init 0
reboot
init 6
visudo:用于配置sudo,只有管理员能通过该命令分配权限给普通用户
root ALL = (ALL) ALL
用户名 从什么地方登陆 以什么身份 执行什么命令
需求:配置rdedu用户拥有启动防火墙的权限
rdedu ALL=(root) /sbin/service iptables start
测试:
sudo service iptables start
rdedu ALL=(root) NOPASSWD:ALL
grep 'root' /etc/passwd
.:表示当前目录
…:表示上一级目录
~:代表家目录
|:管道符,用于数据流的转接
stdin
stdout
cat /etc/passwd | grep 'root'
>:输出重定向,覆盖
grep 'root' /etc/passwd > /grep_root.txt
>>:输出重定向,追加
grep 'root' /etc/passwd >> /grep_root.txt
回到顶部<:输入重定向
基本上在shell脚本里使用
command1 < infile > outfile
:同时替换输入和输出,执行command1,从文件infile读取内容,然后将输出写入到outfile中
&:表示后台运行
command &
\:换行符
`:执行符号
用执行符号包裹命令,将命令先执行后返回
man top
man yum
按q退出查看
格式:find 路径 条件
find /etc -name init*
条件:
-name
*:匹配多个字符
?:匹配单个字符
ls /etc/init*
ls /etc/init??
-size:
find /etc -size +50(b,k,M,G)
+:大于
-:小于
并列条件和或者条件
-a:and 并列条件
-o:or 或者条件
find /etc -size +500k -a -size -1000k
-atime n:查询文件最后访问时间
n表示n*24小时之前
-ctime n:查询文件状态最后改变时间
-mtime n:查询文件数据最后修改的时间
-type f/d:查询文件或文件夹的类型
-user:查询文件的所有者
-group:查询文件的组
stat:查看文件信息
du [-sh] dir_path
s:表示总的
h: 人性化显示单位
wc [-lwc] file_path
l:行
wc -l /grep.txt
w:单词
wc -w /grep.txt
c:字节
wc -c /grep.txt
m:字符
可以统计多件文件
wc /grep.txt /root/install.log
查看每个分区的磁盘利用率
挂载信息
插入硬盘
查看硬盘信息
fdisk -l
对硬盘进行分区
- 分区:
主分区
- 1
扩展分区(建立逻辑分区)
- 1
```fdisk /dev/sdb```
回到顶部格式化
mkfs.ext4 /dev/sdb1
挂载
- 临时挂载
mount /dev/sdb1 /primary_part
- 永久挂载
vim /etc/fstab
/dev/sdb1 /primary_part ext4 defaults 0 0
ifconfig:用于查看和配置网络信息
/etc/sysconfig/network-scritps/ifcfg-eth0
route -n
:查看路由
![图片46:
每个应用程序启动以后会开放相应的端口
netstat -atunlp | grep 22
service:用于管理Linux中所有系统安装的服务
service service_name start|stop|status|restart
linux中通过service管理的服务程序地址:/etc/init.d/
常见服务:
iptables:防火墙
network:网络
service network restart
NetworkManager:图形化界面的网络管理服务
sshd:安装登录访问服务
chkconfig:设置开机启动
chkconfig service_name on|off|--list
chkconfig iptables --list
chkconfig iptables off:关闭防火墙
chkconfig service_name on
top:Linux中的任务管理器
free:用于查看内存
free -m
ps:process 用于查看当前所有的进程
ps -ef
kill :用于对服务发送信号的
关闭进程:
kill -9 pid
kill -9 1680
jps:java process
专门用于查看java进程的
tcp更安全,发送第一个信息后等待对方确认收到后再发送后面的信息,发送时间缓慢
udp更快速,将所有信息发送给对方,不管对方收到没有,所以会导致信息丢失,不安全
windows:rar/zip
Linux:gzip、bzip2、zip
.tar.gz/tgz/.tar.bz2
压缩类型:snappy、lzo、lz4
gzip:压缩为gzip格式
后缀:.gz
压缩:gzip file_path
gzip passwd
解压:gunzip file.gz
gunzip passwd.gz
特点:
1-压缩完源文件不存在了
2-不支持压缩文件夹
bzip2:压缩格式为bz2
后缀:.bz2
压缩:bzip2 file_path
bzip2 passwd
解压:bunzip2 file.gz
bunzip2 passwd.bz2
特点:
1-压缩完源文件不存在了
2-不支持压缩文件夹
tar -cvf test02.tar test02
tar命令是调用了gunzip命令的,对只有一个压缩内容的文件来解压的时候才用tar, 而如果压缩包里有多个文件被压缩了
tar -xf /root/test02.tar -C /
tar -zcvf /test02.tar.gz test02
tar -tvf /test02.tar.gz
tar -zxvf /test02.tar.gz -C /tmp
将上面的命令中的z改为j,即为bzip2格式的压缩和解压
压缩:tar -zcvf 压缩后的文件的路径 压缩谁
解压:tar -zxvf 解压谁 -C 解压到哪
查看:tar -tvf 压缩文件路径
z:gzip格式
j:bzip2格式
c:打包
x:解包
v:显示过程
f:档名,文件名,f后面必须直接跟文件名
t:text,查看
C:指定解压的路径
c/x/t:一条命令中不能同时存在
回到顶部如果压缩包里有多个文件被压缩了,可以采用unzip命令去解压
解压到当前文件:unzip a.zip
解压到指定文件:unzip a.zip -d a
- window类型
exe、jar、msi、zip(免安装)- Linux
rpm:Redhat系列的软件包管理工具
dpkg:Debian系列的软件包管理工具
压缩:免安装,直接配置即可
- 源码:
先要安装编译需要的依赖- c/c++:
执行configured脚本文件:预编译
make:编译
make install :安装- java:
- maven
编译:mvn complie
打包:mvn package
安装:mvn intall
清除:mvn clean
rpm包:每个软件厂商都会提供对应的软件的rpm包的版本
xxxxx.rpm
yum-presto-0.6.2-1.el6.noarch.rpm
yum-utils-1.1.30-30.el6.noarch.rpm
zd1211-firmware-1.4-4.el6.noarch.rpm
zenity-2.28.0-1.el6.x86_64.rpm
zip-3.0-1.el6.x86_64.rpm
zlib-1.2.3-29.el6.i686.rpm
zlib-1.2.3-29.el6.x86_64.rpm
zlib-devel-1.2.3-29.el6.i686.rpm
zlib-devel-1.2.3-29.el6.x86_64.rpm
zsh-4.3.10-7.el6.x86_64.rpm
rpm文件名称格式
zlib-1.2.3-29.el6.x86_64.rpm
rpm的名称-版本.操作系统.操作系统位数.rpm
rpm -qa | grep zlib
rpm -ivh file_path(完整的rpm文件名称)
rpm -ivh /media/CentOS_6.6_Final/Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
i:install安装
v:显示详细过程
h:标记
zlib-lib.rpm
zlib-util.rpm
zlib-deve.rpm
zlib.rpm
rpm -e zlib-devel-1.2.3-29.el6.x86_64
e:卸载
− − n o d e p s :不考虑依赖 --nodeps:不考虑依赖 −−nodeps:不考虑依赖
rpm -e --nodeps tzdata-java-2014g-1.el6.noarch java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64 java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64
rpm -U package
rpm -ql package_name
rpm -ql zlib-1.2.3-29.el6.x86_64
查询某个命令来自于哪个安装包
rpm -qf /bin/ls
####2.1 软件仓库:yum源
列举的当前yum中所有可安装或者已安装的程序
只想查看已安装的程序
yum list installed
y:表示全部yes
yum install -y gcc
yum install -y lrzsz
yum remove lrzsz
定义变量时等号两边不能有空格
语义可读
系统变量大写
没有数据类型
${a}
$a
/etc/profile
系统环境变量:PATH= P A T H : PATH: PATH:JAVA_HOME\bin
每个用户在自己的家目录下有一个配置文件:
~/.bash_profile
$0:执行的文件名称
$#:参数的个数
$*:所有的参数
$?:上一条命令执行的结果
0:上一条命令正确执行了
*:匹配多个字符
?:匹配单个
大部分用于这些命令:ls find cp rm
[]:某个范围的单个字符
[0-9]:表示0-9之间的任意一个字符
[a-z]
[A-Z]
.:单个字符
*:匹配多个
.*:匹配多个字符
^:以什么开头:^root.*bash$
中括号中表示非
[^ ]*
$:以什么结尾
grep
grep 'r..t' passwd
grep '^root' passwd
grep '[0-9]:[0-9]' passwd
sed:专门用于对Linux中文本行的处理
sed -i '1d' passwd
sed 's/nologin/8888/g' passwd
得到ip地址:
ifconfig | grep 'inet addr' | grep -v '127.0.0.1' | sed 's/inet addr://g' | sed 's/Bcast.*//g' | sed 's/ //g'
awk:专门用于对Linux中文件列的处理
awk -F ':' '{print $3}' passwd
&&:与连接,第一个成功了,第二个才执行
||:或连接,第一个失败了,第二个才执行
;:无连接关系
[ $a = $b ]
[ $a = $b ];echo $?
[ $a \> $b ];echo $?
[ $a \&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt; $b ];echo $?
[ $a != $b ];echo $?
-z:判断变量是否为空,空返回true,非空返回false
-n:判断变量是否不为空,不为空返回true
[]:
-eq:等于
-ne:不等于
-gt:大于
-ge:大于等于
-lt:小于
-le:小于等于
[ $a -eq $b ];echo $?
(()):高级语言
(($a==$b))
!= >= <= < >s
-f:判断是否是一个文件
[ -f /etc ];echo $?
-d:判断是否是一个目录
-e:判断是否存在
-w:判断是否有可写 权限
-r:
-x:
$((a+b))/$(($a+$b))
$[ $a + $b ]
获取当前系统时间
date
获取当前格式化时间
date +"%Y-%m-%d %X"
修改时间(必须为管理员账号才能修改,普通用可以用sudo)
date -s "2018-09-12 18:22:45"
获取前一天时间
date -d '-1 day' +"%Y-%m-%d"
获取前两天时间
date -d '2 days ago' +"%Y-%m-%d"
获取前两年时间
date -d '2 year ago' +"%Y-%m-%d"
1-必须声明头部,指定shell的类型
#!/bin/bash
2-运行脚本,必须有可执行的权限
chmod u+x location_var.sh
for:第一种
for 变量 in 集合
do
执行的命令
done
第二种
for((i=1;i<10;i++))
do
执行的命令
done
while:
while [表达式]
do
done
if [条件表达式]
then
执行的命令
fi
if [条件表达式]
then
执行的命令
else
执行的命令
fi
if [条件表达式]
then
执行的命令
elif [条件表达式]
then
执行的命令
……
else
执行的命令
fi
并列条件
if [条件1] && [条件2] if [条件1] || [条件2]
if [ 条件1 -a 条件2] if [ 条件1 -o 条件2]
case :类似于java中的switch case
case 变量 in
value1)
怎么样?
;;
value2)
怎么样?
;;
*)
怎么样?
;;
esac
执行脚本的方式:
1-直接执行文件
2-使用sh命令执行
sh -x script.sh
service crond status
at:简单的定时任务,不好用
crontab:可以实现分钟级别的精准任务调度
crontab -e : 编辑定时任务
* * * * * command
分钟 小时 日 月 周
00-59 00-23 1-31 1-12 0-7 sh /tmp/test.sh
每天凌晨3点执行脚本
00 03 * * * sh /tmp/test.sh
每周日中午12点30执行该程序
30 12 * * 7 sh /tmp/test.sh
每两个小时执行一次
00 */2 * * *
每天5点和7点执行一次
00 5,7 * * *
每天5点到7点
00 5-7 * * *
crontab -l :列举当前所有的定时任务
crontab -r : 删除所有的定时任务
crontab -u root -f /tmp/test.txt:
使用test.txt文件作为root用户的定时任务
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。