共计 27636 个字符,预计需要花费 70 分钟才能阅读完成。
前言
在这个只有 cangls 和小白两人的小房间中,开展了一次对于学习办法的探讨。
小白:cangls 啊,我想求教一个问题,您是如何记住那么多 linux 命令的。
cangls:我啊,他人都看我的小电影,我也不晓得啊!可能是举的例子多了,就记住了一些呗。
此次写作灵感源于一本心理学方面的书籍,对话体的形式使用切当,的确很吸引人。
灵魂拷问?老手如何学 linux?如何从老手到生手?如何玩转 linux?linux 大神如何把握那么多命令?趣味学习 linux,理解一下。基于实战演练,同时突出重点。2 万 5 千字的长文,是否真材实料,无妨先珍藏再评论。
换个角度对待这个问题,linux 大神都是从小白开始的,没有人一开始就是大神。
只是他人 使用的比拟多 ,自然而然记住了更多的命令, 从而更善于总结学习办法。
如果你是 Linux 运维人员,或者是刚入门的编程人员。依据本人的工作经验以及自学总结的内容,篇幅很长,退出了不少示例代码。但很具体哟!置信你肯定有所播种的。
注释
7 年前,我还是一个连 linux 是个啥都不晓得的笨小孩,然而当初靠着自学积攒的常识也能在日常工作中满足刚需,还教会了新来的共事不少小技巧。先上点趣味性的常识,俗称扫盲,领有一颗爱学习(闷骚)的心。
01 第一夜
以 linux 为根底将常识串联起来,退出了一些集体经验总结,仅供参考哟!当然,你能够将此篇文章推送你的亲朋好友,当做是学习 linux 的入门课程。
集体倡议,如果感觉倡议不到位,能够疏忽掉。请间接看注释,置信会有播种的
在给他人倡议的时候,心愿能从别人的角度去思考。不要上来间接甩一个教程或者视频过来,这样对新人是很不敌对的。
首先,咱们应该养成自学的良好习惯。最优的办法往往是去官网查阅文档 ,其次通过各大论坛,再就是搜索引擎。但官网文档大体都是英文版的,小白往往也是爱莫能助, 记得多用词典查阅并积攒。然而,当初 linux 有简体中文版反对,咱们在搭建学习环境的时候能够抉择简体中文。当你学到深处的时候,发现还是官网文档最靠谱。
搭建环境 , 倡议是真机配合虚拟机工具部署 linux 服务器 (Redhat 系列、Ubuntu、Fedora、Debian 等等) 应用,放心大胆的测试,再也不必放心服务器被本人弄解体了。终端管理工具举荐 tabby(github 上有),尽管目前终端不反对中文字符输出,但它是开源收费的。对于以何种 linux 的发行版进行学习,心愿不要去跟风,听风就是雨,要依据本身理论状况而定。如果非要我举荐,那就是举荐 Redhat 系列的 Centos 或者 Ubuntu 系列,教程和资源多呗。给出我之前写的稀烂的教程 linux 养成达人之入门实际图文超具体(工欲善其事,必先利其器篇),心愿对你有所帮忙( 基于 centos6.5 的):
https://blog.csdn.net/Tolove_dream/article/details/103823216
对于 centos7 的能够参考这篇文章:
https://blog.csdn.net/Tolove_dream/article/details/116085467
接着说 linux 简体中文版 ,劣势在于我看帮忙命令的时候有一部分是中文的,这就对咱们的学习有大大大的益处。当你提这个问题的时候,应该是对 linux 这个极具魅力的操作系统有很大的趣味。有趣味那就好办了,你会思考如何学习对本人更为无利。此时就会去翻阅文档, 最初发现还是官网文档最为有用,学会积攒教训。缓缓的从小白到新手,这之间有一段艰巨的路须要单独走完,享受这一过程的美好之处。
已经你是不是在各大论坛或者博客网站都能看到这样一些内容,从删库到跑路。寰球绝大部分的服务器啊,基本上都是采纳 linux 服务器的,没有权限你还想删库到跑路?当然只是开个玩笑,咱都是遵纪守法的五好青年。
后面的删库到跑路,只是为了引出 linux 另一大魅力所在权限足够通明。如果在权限这方面玩的相当纯熟,那你能够存不少 cang 老师的作品哟。我能本人观赏,他人却看不到,想想就刺激。谈到 cang 老师,大家满眼放光目不转睛直呼外行。咱就皮一下,这不是为了引起你学习的趣味吗。
做了很多铺垫,这里就具体的聊聊我本人的学习过程。将以对话模式展现,小白与 cangls 日日夜夜的对话。cangls 是啥?别问我,问就是不晓得,只可意会不可言传。
一、学习办法的探讨
在这个只有 cangls 和小白两人的小房间中,开展了一次对于学习办法的探讨。
小白:cangls 啊,我想求教一个问题,您是如何记住那么多 linux 命令的。
cangls:我啊,他人都看我的小电影,我也不晓得啊!可能是举的例子多了,就记住了一些呗。
小白:是这样啊!那能具体说说吗,我很感兴趣。
cangls:好啊,那咱就相互探讨探讨。
这这这,啥状况?我狐疑你两不仅在开车,而且还搞色彩,还超速了。好了,玩归玩闹归闹,言归正传。
小白:我想查看一下以前放的学习材料(小电影)
cangls:应用 ls 命令即可查看目录和文件。
# 不带参数
$ ls
# - a 参数,查问所有,蕴含带. 暗藏的
$ ls -a
# - l 参数,长格局显示:显示所属组、所有者,批改工夫以及文件名
$ ls -l
小白:我想给文件夹改个名字,羞羞。
cangls:好办,应用 mv 命令就能解决。
$ mv cangls bols
小白:那我想挪动到另一个文件夹呢?
cangls:同样能够应用 mv 命令,但要接门路哟!
$ mv /opt/cangls /home/cangls/av
小白:cangls 呀,我目前存的文件过多,想集中分类解决。
cangls:你是想,将多个文件寄存到同一个目录吧。mkdir 命令新建文件夹能够满足你,记得用下面的 mv 命令转移学习材料。
$ mkdir /home/cangls/av
此时的小白看了看工夫,曾经记不起这是多少次来求教 cangls 了。cangls 教了小白一个很鸡肋的但很实用的命令。
cangls:小白啊,晓得明天是往年的第多少天吗?
小白:我不记得了,看看手机就晓得了。
cangls:不必那么麻烦,用 linux 自带的命令 cal 即可查看。
$ cal -jy
cangls 此时看小白趣味不减反增,于是介绍了帮忙命令 help 和 man 来不便小白自学。
下面的对话模式,是不是很乏味。当你心烦意乱的时候,无妨静下心来试试。找一个本人感兴趣的方向,去验证这些命令。如果你感兴趣的话,我之前写的局部文章兴许会对你有肯定的帮忙。
cangls 和小白的对话并没有完结,在这个只有两人的小房间中,到底产生了啥,请接着看。
02 第二夜
第一夜对学习办法进行了探讨,如何一步步晋升本人学习的趣味。第二夜 cangls 与小白持续开展对于 linux 根本命令的探讨。
cangls:小白啊,你来了,看来还是有不少疑难吧!
小白:是的,尽管上次你说了一些对于 linux 的帮忙命令,我还是有些摸不着头脑。
cangls:没关系,上面我给你带来了具体的帮忙命令的解说,学习办法很重要哟!
小白此时拿出了本人的小本本,开始记录了起来 …
二、根本命令的探讨
留神:# 符号示意 root 用户登录,$ 符号示意普通用户登录。
1、帮忙命令(重点)
这种办法是其中一种伎俩,将其输入到某个文件,而后总结起来。再 通过 scp 命令传到本地记录到小本本上。
[root@cnwangk ~]# ls --help > helpcmd.txt
[root@cnwangk ~]# man ls >> helpcmd.txt
#借助本地的终端管理工具,应用 scp 命令取到 Windows 本地桌面,即从近程传回本地
$ scp root@192.168.245.131:/root/helpcmd.txt ~/Desktop/
root@192.168.245.131's password:
helpcmd.txt 100% 21KB 3.8MB/s 00:00
留神:> 符号是重定向输出会笼罩原始文件的内容,>> 符号也是重定向输出到指定文件,然而是追加进去。
1.1、help 命令
如下所示,间接输出 help 命令就会输入很多提醒,或者在应用的命令前面加上参数 --help
进行操作。
$ help
$ ls --help
下面的第一条命令代表着间接输出 help 命令,也会反馈一些帮忙文档进去。第二种形式,则是以具体的命令 ls
应用 --help
帮忙命令获取指定命令的帮忙文档。
1.2、man 命令
1.2.1、man 的级别作用
参数 | 作用 |
---|---|
1 | 查看命令的帮忙 |
2 | 查看可被内核调用的函数的帮忙 |
3 | 查看函数和函数库的帮忙 |
4 | 查看非凡件的帮忙(次要是 /dev 目录下的文件) |
5 | 查看配置文件的帮忙 |
6 | 查看游戏的帮忙 |
7 | 查看其它杂项的帮忙 |
8 | 查看系统管理员可用命令的帮忙 |
9 | 查看和内核相干文件的帮忙 |
例如:查看 passwd 的配置文件帮忙、查看 null 的非凡件的帮忙、查看 ifconfig 系统管理员可用命令的帮忙。
$ man 5 passwd
$ man 4 null
$ man 8 ifconfig
man
命令,获取指定命令的帮忙,展现 ls 命令全部内容帮忙手册。
$ man ls
查看命令领有哪个级别的帮忙,man -f
命令相当于 whatis
命令。
$ man -f
[root@cnwangk ~]# man -f
whatis 什么?$ whatis
查看命令相干的所有帮忙。man -k
命令,相当于apropos
命令。例如:
$ man -k
$ apropos
#查看 passwd 的帮忙命令
$ apropos passwd
1.2.2、man 命令的具体展现
间接在终端输出 man 命令,会提醒您须要什么手册页?这里以查看 ls 命令的帮忙手册为例子进行解说示例阐明,列举了局部示例。
tips:输出 q 间接退出帮忙手册。
[root@cnwangk ~]# man
您须要什么手册页?#进入 ls 命令的帮忙文档
$ man ls
LS(1) General Commands Manual LS(1)
NAME
ls, dir, vdir - 列目录内容
提要
ls [选项] [文件名...]
POSIX 规范选项: [-CFRacdilqrtu1]
GNU 选项 (短格局):
[-1abcdfgiklmnopqrstuxABCDFGLNQRSUX] [-w cols] [-T cols] [-I pattern] [--full-time] [--format={long,verbose,commas,across,verti‐
cal,single-column}] [--sort={none,time,size,extension}] [--time={atime,access,use,ctime,status}] [--color[={none,auto,always}]]
[--help] [--version] [--]
形容(DESCRIPTION)程序 ls 先列出非目录的文件项,而后是每一个目录中的“可显示”文件。如果 没有选项之外的参数【译注:即文件名局部为空】呈现,缺省为 "."(当前目录)。选项“-d”使得目录与非目录项同样看待。除非“-a”选项呈现,文 件名以“.”开始的文件不属“可显示”文件。以当前目录为准,每一组文件(包含非目录文件项,以及每一内含文件的目录)别离按文件名比拟程序排序。如果“-l”选项存在,每组文件前显示一摘要行: 给出该组文件长度之和(以 512 字节为单位)。输入是到规范输入(stdout)。除非以“-C”选项要求按多列输入,输入将是一行一个。然而,输入到终端时,单列输入或多列输入是不确定的。能够别离 用选项“-1”或“-C”来强制按单列或多列输入。-C 多列输入,纵向排序。-F 每个目录名加“/”后缀,每个 FIFO 名加“|”后缀,每个可运行名加“*”后缀。-R 递归列出遇到的子目录。-a 列出所有文件,包含以 "." 结尾的隐含文件。
以上就是 man
帮忙命令的解说,置信你会爱上 linux 中的帮忙命令的。这回该明确了,linux 大神是如何记住那么多命令的吧!
2、常见目录作用的探讨
选项 | 作用 |
---|---|
/ | 根目录 |
/bin |
命令保留目录(普通用户就能够读取的命令) |
/boot | 启动目录,启动相干文件 |
/dev |
设施文件保留目录 |
/etc | 配置文件保留目录 |
/home | 普通用户的家目录 |
/lib | 零碎库保留目录 |
/mnt | 零碎挂载目录 |
/media | 挂载目录 |
/root |
超级用户的家目录 |
/tmp | 长期目录 |
/sbin |
命令保留目录(超级用户能力应用的目录) |
/proc | 间接写入内存 |
/sys | |
/usr | 系统软件资源目录 |
/usr/bin | 系统命令(普通用户) |
/usr/sbin | 系统命令(超级用户) |
/var |
零碎相干文档内容 |
3、最罕用的命令总结
3.1、学习办法小结
最罕用的命令往往也是最根本的命令,这里也同样以增删改查(CURD)进行解说。如果要人为的细分,这里给出一种学习的思路,能够依照如思维导图所示:
graph LR
Linux 命令分类 --> linux 服务治理
Linux 命令分类 --> linux 软件装置治理
Linux 命令分类 --> linux 网络管理
Linux 命令分类 --> linux 系统管理
Linux 命令分类 --> linux 零碎权限
当然也能够依照如下形式去总结:
graph TD
Linux 命令分类 --> 文件治理
Linux 命令分类 --> 文档编辑
Linux 命令分类 --> 文件传输
Linux 命令分类 --> 磁盘治理
Linux 命令分类 --> 磁盘保护
Linux 命令分类 --> 网络通讯
Linux 命令分类 --> 系统管理
Linux 命令分类 --> 零碎设置
Linux 命令分类 --> 备份压缩
Linux 命令分类 --> 备份治理
列举一些罕用的命令,先做简略的介绍,在脑海中有个印象。上面持续做具体介绍。
$ ls #查看文件和目录
$ ll #等价于 ls -l
$ cat #查看具体内容
$ cd #切换目录
$ mkdir # 新建文件夹
$ touch # 新建文件
$ cp #复制文件
$ mv #挪动或者重命名文件
$ vim #linux 下的一种编辑文件的伎俩,文中会具体介绍。$ rm #删除文件
$ chmod #赋予权限
$ chown #扭转文件所有者
3.2、命令具体介绍
ls 命令 ,查看目录以及文件命令,上面不会全副展现进去,只 展现一部分内容。
# 不带任何参数
[root@cnwangk ~]# ls
anaconda-ks.cfg av cangls.av history.txt scp_test
#加上参数 -l,应用较长格局列出信息
[root@cnwangk ~]# ls -l
drwxr-xr-x 2 root root 23 1 月 4 20:21 av
-rw-r--r-- 1 root root 10 1 月 4 20:16 cangls.av
# - a 参数,不暗藏任何以. 开始的我的项目
[root@cnwangk ~]# ls -a
. .bash_history .bash_profile .cache .config .. av .bash_logout .bashrc cangls.av .ssh .viminfo
ll 命令,是 ls - l 的缩略模式,相当于起了别名。以长格局列出信息,蕴含权限、文件所有者、日期、文件名。
$ ll
drwxr-xr-x 2 root root 23 1 月 4 20:21 av
-rw-r--r-- 1 root root 10 1 月 4 20:16 cangls.av
-rwxr-xr-x 1 root root 78 1 月 19 21:23 hello.sh
cat 命令,查看文件的内容,新建了一个 hello.sh 脚本作为演示,展现脚本的内容。
[root@cnwangk ~]# cat hello.sh
#!/bin/bash
echo "hello cangls"
echo hello linux
echo create btrfs filesystem
cd 命令,这个就不必做过多介绍,大家都很相熟这个命令了。
# 切换到 opt 目录下
$ cd /opt
#返回上一层
$ cd ..
#进入以后用户家目录
$ cd ~
mkdir 命令,新建目录,新建一个 cangls 的合集目录。
[root@cnwangk ~]# mkdir canglsList
[root@cnwangk ~]# ls
anaconda-ks.cfg cangls.av canglsList hello.sh
touch 命令,新建一个 cangls.avi 文件
$ touch cangls.avi
cp 命令,复制命令,能够是单个文件也能够是目录。将 cangls.avi 文件复制到新建的 canglsList 目录中。
[root@cnwangk ~]# cp cangls.avi /root/canglsList/
[root@cnwangk ~]# ls /root/canglsList/ #查看复制后 cangls 文件汇合目录
cangls.avi
mv 命令,挪动或者重命名。当文件门路雷同时,咱们就会批改重命名;不同门路时,则为剪切。我将 cangls.avi 文件重命名为 acngls.mp4。而后将 cangls.mp4 文件挪动到 canglsList 目录下。
[root@cnwangk ~]# mv cangls.avi cangls.mp4
[root@cnwangk ~]# ls
anaconda-ks.cfg av cangls.av canglsList cangls.mp4 hello.sh
[root@cnwangk ~]# mv cangls.mp4 /root/canglsList/
[root@cnwangk ~]# ls
anaconda-ks.cfg av cangls.av canglsList hello.sh history.txt scp_test
[root@cnwangk ~]# ls /root/canglsList/
cangls.avi cangls.mp4
最终查看在 /root/ 目录下 cangls.mp4 部件了,此时曾经被我挪动到 canglsList 汇合目录中了。
vim 命令,这里做简略演示,上面会做具体的阐明。输出 hello cangls,应用 cat 展现内容。
[root@cnwangk ~]# vim /root/canglsList/cangls.avi
[root@cnwangk ~]# cat /root/canglsList/cangls.avi
hello cangls
rm 命令,删除命令。演示,删除 cangls.av 文件。
[root@cnwangk ~]# ls #查看我有 cangls.av 这个文件
anaconda-ks.cfg av cangls.av canglsList hello.sh
[root@cnwangk ~]# rm cangls.av #删除,须要输出确认
rm:是否删除一般文件 "cangls.av"?y
[root@cnwangk ~]# rm -rf cangls.av #强制删除,并递归删除,不须要确认
[root@cnwangk ~]# ls
anaconda-ks.cfg av canglsList hello.sh
chmod 命令,简略的介绍赋予权限命令,个别 755 和 644 比拟罕用的。给 cangls.sh 输出点内容,而后赋予权限。
[root@cnwangk ~]# echo echo "hello cangls" > cangls.sh
[root@cnwangk ~]# cat cangls.av
hello cangls
[root@cnwangk ~]# ll #查看 cangls.sh 脚本权限
-rw-r--r-- 1 root root 13 1 月 19 22:50 cangls.sh
[root@cnwangk ~]# chmod 755 cangls.sh
[root@cnwangk ~]# ll #比照权限变为了 rwx-rx-rx,对应数字就是 755
-rwxr-xr-x 1 root root 13 1 月 19 22:50 cangls.sh
#执行脚本 cangls.sh
[root@cnwangk ~]# ./cangls.sh
hello cangls
chown 命令,扭转文件所有者,将 cangls.sh 文件所以者从 root 改为 test 用户。
[root@cnwangk ~]# chown test cangls.sh
[root@cnwangk ~]# ll
-rwxr-xr-x 1 test root 18 1 月 19 22:55 cangls.sh
集体依据多年经验总结,认为工作中最最最罕用的一些命令,以上就列举这么多了。还有其它常用命令,请接着往下浏览。
4、其它常用命令
4.1、挂载命令格局
mount
[-t 文件系统] [-o 非凡选项] 设施文件名 挂载点
参数 | 作用 |
---|---|
-t | 文件系统,退出零碎文件类型来指定挂载的类型,能够是 ext3、ext4、iso9660、xfs、btrfs等文件系统 |
-o | 非凡选项,能够指定挂载的额定选项 |
4.2、查问与挂载
查问零碎中曾经挂载的设施,mount
命令。
# 查问零碎中曾经挂载的设施
$ mount
#列举我本人测试环境下曾经挂载的局部设施,Redhat7 系列
#我测试应用是 btrfs 文件系统
/dev/sdb2 on /data type btrfs (rw,relatime,space_cache,subvolid=5,subvol=/)
#零碎默认挂载所应用文件系统格局 xfs
/dev/sda2 on /home type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
下面列举我本人测试环境下曾经挂载的局部设施,Redhat7 系列。顺带一提,Redhat7 开始举荐应用 xfs 文件系统,我所演示的也蕴含了 xfs
文件系统挂载的,同样也有下面介绍过的 btrfs
文件系统。
局部参数阐明,如下表格所示:
参数 | 作用 |
---|---|
mount -a | 根据配置文件 /etc/fstb 的内容,主动挂载 |
atime/noatime | 更新拜访工夫 / 不更新拜访工夫。拜访分区文件时,是否更新文件的拜访工夫,默认为更新。 |
async/sync | 异步 / 同步,默认为异步 |
auto/noauto | 主动 / 手动,执行 mount - a 命令时,是否会主动装置 /etc/fstb 文件内容挂载,默认主动。 |
defaults | 定义默认值,相当于 rw ,suid ,dev ,exec ,auto ,nouser ,async 这七个选项。 |
exec/noexec | 执行 / 不执行,设定是否容许在文件系统中执行可执行文件,默认 exec 容许。 |
remount | 从新挂载已挂载的文件系统,个别用于指定批改非凡权限。 |
rw/ro | 读写 / 只读,文件系统挂载时,是否具备读写权限,默认rw。 |
suid/nosuid | 具备 / 不具备 suid 权限,设定文件系统是否具备 suid 和 sgid 的权限,默认具备。 |
user/nouser | 容许 / 不容许普通用户挂载,设定文件系统是否容许普通用户挂载,默认不容许,只有 root 能够挂载分区。 |
usrquota | 写入代表文件系统反对用户磁盘配额,默认不反对。 |
grpquota | 写入代表文件系统反对组磁盘配额,默认不反对。 |
对于磁盘挂载,如果感兴趣的话,能够参考我在 github 或者 gitee 上整顿的文章。在代码库中的 linux 文件夹中,同样整顿了 PDF 文件格式的文章便于浏览,目前还在整顿欠缺中。
集体 github 仓库地址,个别会先更新 PDF 文件,而后再上传 markdown 文件。如果拜访 github 太慢,能够拜访 gitee 进行克隆。
https://github.com/cnwangk/SQL-study
4.2.1、挂载光盘
首先建设挂载点,命令如下:
$ mkdir /mnt/cdrom/
挂载光盘,这里阐明下:只是习惯在 mnt 下建设,media 下建设也行。
简略介绍:/dev/sr0 是要挂载的文件,/mnt/cdrom 是挂载存储的磁盘门路
$ mount -t iso9660 /dev/cdrom /mnt/cdrom/
$ mount /dev/sr0 /mnt/cdrom/
卸载命令,设施文件名或者挂载点,比方卸载新增磁盘挂载的 sdb
$ umount /dev/sdb
4.2.2、挂载 U 盘
查看 U 盘设施文件名,fdisk -l
查看磁盘列表
$ fdisk -l
$ mount -t vfat /dev/sdb1 /mnt/usb/
4.3、用户登录查看命令
查看用户登录信息
$ w
[root@cnwangk ~]# w
21:31:12 up 1:39, 1 user, load average: 0.00, 0.04, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.245.1 19:52 0.00s 0.28s 0.02s w
如上所示,输出 w 命令查看到我的登录信息。只有 1 个用户,我用 ssh 登录的,本机虚拟机中并没有登录。命令输入如下所示:
4.3.1、命令输入
参数阐明,作用如下表格所示:
参数 | 作用 |
---|---|
USER | 登录的用户名 |
TTY | 登录终端 |
FROM | 从哪个 IP 地址登录 |
LOGIN@ | 登录工夫 |
DILE | 用户闲置工夫 |
JCPU | 与该终端连贯的所有过程占用的工夫。这个工夫里并不包含过来的后台作业工夫,但包含以后正在运行的后台作业占用工夫 |
PCPU | 以后过程所占用工夫 |
WHAT | 以后正在运行的命令 |
w | 查问登录用户,显示零碎工夫和运行工夫,用户个数以及均匀负载。 |
4.3.2、查看登录用户信息
命令输入:用户名,登录终端,登录工夫(登录起源 IP 地址)
# 查看用户信息
$ who
[root@cnwangk ~]# who #查看以后用户信息
root pts/0 2022-01-19 19:52 (192.168.245.1)
#查看以后用户
$ whoami #查看以后用户身份是 root
[root@cnwangk ~]# whoami
root
查看到以后用户为 root,登录终端 pts/0,登录时键与 IP:2022-01-19 19:52 (192.168.245.1),虚拟机搭建的环境。
查问以后登录和过来登录的用户信息
last 命令默认读取 /var/log/wtmp
文件数据。命令输入:用户名,登录终端,登录 IP,登录工夫,退出工夫(在线工夫)
$ last
root tty1 Sun Jan 5 21:47 - 21:50 (00:02)
reboot system boot 3.10.0-514.el7.x Sun Jan 5 21:44 - 21:59 (7+00:15)
能够看到记录的我最长远的一次登录信息,工夫的确有点久了,基本上很晚才应用的。
查看所有用户最初一次登录工夫
#lastlog 命令默认读取 /var/log/lastlog 文件内容
#命令输入:用户名,登录终端,登录 IP,最初一次登录工夫
$ lastlog
[root@cnwangk ~]# lastlog
用户名 端口 来自 最初登陆工夫
root pts/0 192.168.245.1 三 1 月 19 22:52:46 +0800 2022
bin ** 从未登录过 **
下面的中文显示,我在装置的时候抉择了简体中文版,对于初学者来说几乎太敌对了。
查看网络状态 ,个别比拟关注的是ESTABLISHED
状态
$ netstat -an | grep ESTABLISHED
[root@cnwangk ~]# netstat -an | grep ESTABLISHED
tcp 0 0 192.168.245.131:22 192.168.245.1:3579 ESTABLISHED
4.4、解压缩命令
只介绍一些罕用的,比方压缩命令 zip、gzip;解打包命令 tar。
4.4.1、压缩命令
例如:zip、gzip。将 canglsAVList 压缩成 canglsAVList.zip 格局,将 bolsAVList 压缩成 bolsAVList.gz 格局。
zip -r canglsAVList > cangls.zip
gzip -c bolsAVList > bolsAVList.gz
4.4.2、解打包命令 tar
解压一个 redis
的源码包
$ tar -zxvf redis-6.0.8.tar.gz
打包命令 tar -zcvf,将 redis-6.0.8-bak 打包成 tar 包
$ tar -zcvf redis-6.0.8-bak > redis-6.0.8-bak.tar
而后再将 redis-6.0.8-bak.tar 压缩成.gz 格局
$ gzip redis-6.0.8-bak.tar > redis-6.0.8-bak.tar.gz
4.5、搜寻命令
4.5.1、locate 命令
locate 命令 前面只能接文件名,例如,咱搜寻一下 cangls 的文件。嚯,还不少啊:
locate cangls
[root@cnwangk opt]# locate cangls
/root/cangls.av
/root/cangls.sh
/root/canglsList
/root/canglsList/cangls.avi
/root/canglsList/cangls.mp4
locate 命令所搜寻的后盾命令,不是及时更新,这时能够应用 updatedb 命令 更新:
$ updatedb
locate 命令配置文件 /etc/updatedb.conf
配置文件
- PRUNE_BIND_MOUNTS:开启搜寻限度
- PRUNEFS=””:不搜寻的系统文件
- PRUNENAMES=””:不搜寻的文件类型
- PRUNEPAEHS=””:不搜寻的门路
4.5.2、命令搜寻命令
命令搜寻命令,比方 wheris、which 以及 find 命令。
此处,着重讲一下 find 命令的应用:
不辨别大小写,搜寻 cangls.sh 脚本
$ find /root -iname cangls.sh
依照所有者搜寻
$ find /root -user root
查找 10 天前批改的文件
find /var/log -mtime +10
查找 /etc
目录下大于 1M 的文件
find /etc -size +1M
查找 i 节点为 26267295 的文件,直呼外行,啥时候新增了个 bols 的小电影。
[root@cnwangk ~]# find . -inum 26267295
./bolsList
查找 /etc/ 目录下大于 100KB 且小于 200KB 的文件
find /etc -size +100k -a -size -200k
- - a 相当于 and,逻辑与,两个条件都满足
- - o 相当于 or,逻辑或,两个条件满足一个即可
查找 /etc/ 目录下大于 100KB 且小于 200KB 的文件,并且显示详细信息
#-exec/-ok 命令
#{}\; 对搜寻后果执行操作
find /etc -size +100k -a -size -200k -exec ls -lh {} \;
grep字符串搜素命令
- grep [选项] 字符串 文件名,在文件当中匹配合乎的字符串
- -i,疏忽大小写
- -v,排除指定字符串
依据文件大小匹配,anaconda-ks.cfg 文件时 Redhat 系列装置就自带的文件。
$ grep "size" anaconda-ks.cfg
part swap --fstype="swap" --ondisk=sda --size=2000
part /boot --fstype="xfs" --ondisk=sda --size=200
part / --fstype="xfs" --ondisk=sda --size=16278
part /home --fstype="xfs" --ondisk=sda --size=2000
find 与 grep 的区别
- find 命令:在零碎当中搜寻符合条件的文件名,如需匹配,应用通配符,通配符是齐全匹配。
- grep 命令:在文件当中搜寻符合条件的字符串,如需匹配,应用正则表达式进行匹配,正则表达式是蕴含匹配。
5、关机与重启命令
5.1、关机命令
一般而言关机和重启命令都不会赋予权限给普通用户,只有 root 用户才有权限执行。
$ shutdown
# shutdown -h now #立刻关机
参数 | 作用 |
---|---|
-c | 勾销前一个关机命令 |
-h | 关机 |
-r | 重启 |
其它关机命令:halt,poweroff,init 0
留神:应用服务器时,不要轻易去应用关机命令。一旦应用了,会造成不必要的麻烦。
5.2、重启命令
一般而言关机和重启命令都不会赋予权限给普通用户,只有 root 用户才有权限执行。
# 重启命令 1, 立刻重启,同样能够接指定世界以及距离多久重启
$ shutdown -r now
#重启命令 2, 立刻重启
$ reboot
留神 :应用logout
命令登出 shell,养成良好的习惯退出登录
其它重启命令:reboot,init 6
03 第三夜
第二夜的常识有点多,小白还有点没消化过去。
cangls:小白,你来啦。我白吗?我大吗?我难看吗?别走了,我这里 …
小白:啥?一脸懵逼 …
此时小白的心田实在想法:不要认为我不懂,咱为学习忍了。真的又大又白,天天引诱我。
cangls:不逗你玩了,咱回到正题,昨天的知识点有点多,心愿上来好好消化。明天会带来 linux 进阶方面的小技巧。
小白:点了拍板,认真的凝听着。
三、进阶罕用
1、scp 命令
1.1、语法
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 ... [[user@]host2:]file2
1.2、应用办法
简略来看:scp [可选参数] 本地文件 目标目录
scp /root/av/local_file.av remote_username@ip:/root/av
scp [可选参数] 本地目录 目标目录
scp -r /root/av/ remote_username@ip:/root/
命令格局介绍
# 复制文件格式, 本地到近程服务器
scp local_file remote_username@remote_ip:remote_directory
#或者
scp local_file remote_username@remote_ip:remote_file
#或者
scp local_file remote_ip:remote_directory
#或者
scp local_file remote_ip:remote_file
复制目录命令格局
# 复制命令格局, 本地到近程服务器
scp -r local_directory remote_username@remote_ip:remote_directory
#或者
scp -r local_directory remote_ip:remote_directory
具体操作,请参考的博文:【SCP 命令】平安又快捷的 linux 小技巧 scp 命令
2、路由命令
以下是对一些罕用的路由命令(网络配置工具)进行简略的介绍。
2.1、ifconfig 命令,展现内容如下:
tips:咱们判断网络环境的时候,dropped参数值是很重要的,个别失常状态是 0,如果掉包数字则会回升。
[root@cnwangk ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:38:38:ab:fe txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.245.131 netmask 255.255.255.0 broadcast 192.168.245.255
inet6 fe80::b314:8248:917a:d808 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:47:be:5f txqueuelen 1000 (Ethernet)
RX packets 14160 bytes 1053042 (1.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7652 bytes 713027 (696.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 1474 bytes 91198 (89.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1474 bytes 91198 (89.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ifconfig 最常见的作用就是看设置的 ip 地址以及 dns 和网关,其实就是看网卡设置的参数。当你看到 docker 的时候,没错,我装置了 docker 环境。
2.2、ip 命令应用,如下所示:
[root@cnwangk ~]# ip addr list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:47:be:5f brd ff:ff:ff:ff:ff:ff
inet 192.168.245.131/24 brd 192.168.245.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::b314:8248:917a:d808/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:38:38:ab:fe brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
#ip 命令同样能够配合 route 命令应用
[root@cnwangk ~]# ip route list
default via 192.168.245.2 dev ens33 proto static metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.245.0/24 dev ens33 proto kernel scope link src 192.168.245.131 metric 100
ip 命令同样能够配合 route 命令应用,独自应用 route 命令同样能够起到配置作用。
下图是我之前制作的一个简略的思维导图,原本是要放在防火墙常识外面的,当初同样实用。没有放原图,原图太大了,放大了一点也同样能看清楚哟!
3、防火墙命令
这里,我只介绍 firewalld 命令行模式,对于具体操作阐明请参考博文:【Redhat 系列 linux 防火墙工具】firewalld 与 iptables 防火墙工具的强烈碰撞
1.1、区域抉择
以后操作系统装置实现后,防火墙会设置一个默认区域,将接口退出到默认区域中。用户配置防火墙的第一步是获取默认区域并批改,对于操作如下:
查看以后零碎中所有区域
firewall-cmd --get-zones
查看以后默认的区域
firewall-cmd --get-default-zone
查看以后已激活的区域
firewall-cmd --get-active-zones
获取接口 ens33 所属区域
firewall-cmd --get-zone-of-interface=ens33
批改接口所属区域
firewall-cmd --permanent --zone=internal --change-interface=ens33
1.2、firewalld 服务治理
从新加载防火墙配置
firewall-cmd --reload
重启防火墙(redhat 系列)
systemctl restart firewalld.service
长期敞开防火墙
systemctl stop firewalld.service
开机启用防火墙
systemctl enable firewalld.service
开机禁止防火墙
systemctl disable firewalld.service
查看 firewalld 的运行状态
firewall-cmd --state
1.3、firewalld 凋谢端口
公共区域(public)设置凋谢 21 端口永恒失效并写入配置文件(参数:–permanent)
# 参数:--permanent,设置即立即失效并且写入配置文件
firewall-cmd --zone=public --add-port=21/tcp --permanent
查问防火墙端口 21 是否凋谢
firewall-cmd --zone=public --query-port=21/tcp
移除凋谢的端口 21
firewall-cmd --zone=public --remove-port=21/tcp --permanent
1.4、区域规定批改
查问防火墙规定列表
firewall-cmd --zone=public --list-all
新增一条区域规定 httpd 服务
firewall-cmd --permanent --zone=internal --add-service=http
验证规定
firewall-cmd --zone=internal --list-all
4、过程相干命令
过程相干命令次要介绍四个
- ps -aux | grep [服务名]
- ps -ef | grep [服务名]
- ps -le | grep [服务名]
- top
如果没有装置 httpd 服务,Redhat 系列能够应用 yum 命令进行装置,在 Ubuntu 系列能够通过apt install
。apt 是 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
$ yum -y install httpd
查看过程罕用的 ps 命令,以 httpd 过程进行演示。这里只介绍工作中比拟实用的。
# 应用 -ef 参数查看 httpd 过程
$ ps -ef | grep httpd
[root@cnwangk ~]# ps -ef | grep httpd
root 1329 1 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2216 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2218 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2219 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2220 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2221 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2222 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 2276 2226 0 13:38 pts/0 00:00:00 grep --color=auto httpd
#应用 -aux 参数查看 httpd 过程
$ ps -aux | grep httpd
[root@cnwangk ~]# ps -ef | grep httpd
root 1329 1 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2216 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2218 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2219 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2220 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2221 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 2222 1329 0 13:37 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 2276 2226 0 13:38 pts/0 00:00:00 grep --color=auto httpd
#以长格局查问 httpd 过程
$ ps -le | grep httpd
[root@cnwangk ~]# ps -le | grep httpd
4 S 0 1329 1 0 80 0 - 104198 poll_s ? 00:00:00 httpd
5 S 48 2216 1329 0 80 0 - 70677 poll_s ? 00:00:00 httpd
5 S 48 2218 1329 0 80 0 - 105278 SYSC_s ? 00:00:00 httpd
5 S 48 2219 1329 0 80 0 - 105278 ep_pol ? 00:00:00 httpd
5 S 48 2220 1329 0 80 0 - 105278 SYSC_s ? 00:00:00 httpd
5 S 48 2221 1329 0 80 0 - 105278 SYSC_s ? 00:00:00 httpd
5 S 48 2222 1329 0 80 0 - 105278 SYSC_s ? 00:00:00 httpd
查看过程,当然 top 命令 也应该理解,不带任何参数就能看到一些过程相干的。比方服务器以后工夫、运行天数、用户数量、负载平衡、工作总数、多少过程在运行和休眠、进行以及僵尸过程zombie、cpu 的利用率、内存占用状况以及缓存、缓冲的状况。查看间接应用 top 即可,退出按 q 键。
$ top
top - 13:41:24 up 5 min, 1 user, load average: 0.06, 0.28, 0.16
Tasks: 193 total, 1 running, 192 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 98.7 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1877588 total, 940396 free, 481804 used, 455388 buff/cache
KiB Swap: 2047996 total, 2047996 free, 0 used. 1235960 avail Mem
查看过程,pstree 命令 也必不可少,以树状构造展现出了我部署的 vsftpd 以及监控零碎服务zabbix。
$ pstree
├─vsftpd
├─zabbix_agentd───5*[zabbix_agentd]
├─zabbix_proxy
└─zabbix_server───33*[zabbix_server]
过程切实无奈失常完结,那就采取暴力手段kill 命令,强行敞开。
$ kill -1 3033 #重启过程
$ kill -9 3034 #强制杀死过程
对于过程的就讲这么多,讲太多了不好消化,更多详细描述能够参考自己的历史博文。
5、零碎权限
零碎权限,如果非要分类,大抵可分为:根本权限、非凡权限。
权限分配原则:对文件来讲:最高权限为 x
(执行); 对目录来讲:最高权限为w
(写)。接着以 cangls 这个文件进行演示,别离带你看权限用数字的代表含意,rwx 加起来就是 7:
- r 对应的数字权限为:4,读权限
- w 对应的数字权限为:2,写权限
- x 对应的数字权限为:1,执行权限
[root@cnwangk ~]# chmod 711 cangls.av
[root@cnwangk ~]# ll cangls.av
-rwx--x--x 1 root root 13 1 月 19 22:49 cangls.av
[root@cnwangk ~]# chmod 722 cangls.av
[root@cnwangk ~]# ll cangls.av
-rwx-w--w- 1 root root 13 1 月 19 22:49 cangls.av
[root@cnwangk ~]# chmod 744 cangls.av
[root@cnwangk ~]# ll cangls.av
-rwxr--r-- 1 root root 13 1 月 19 22:49 cangls.av
通过下面的演示对 cangls.av 这个文件赋予权限 711、722、744 进行测试。711 对应的权限-rwx--x--x
、722 对应的权限-rwx-w--w-
、744 对应的权限:-rwxr--r--
,当然这样设置是没有意义的,为了演示进行测试演示数字代表的含意。
tips:还有一种形式是 ugo 模式,作为理解就行。
04 第四夜
cangls:还记得前三天咱们探讨了哪些 linux 方面的常识吗?
小白:当然记得,我都记在笔记本上了,上面进行了复述:
- 学习办法;
- linux 根本命令,最重要的是帮忙命令的使用;
- linux 进阶的小技巧,比方:scp 平安文件传输命令、路由命令、firewalld 防火墙命令等等;
- linux 过程相干命令:ps -ef、ps -aux、top;
- linux 零碎权限命令:chmod。
cangls:接下来会有一点小插曲,对服务器部署我的项目的一些常识进行解说,比方 Javaweb 我的项目。
小白:好耶,我很感兴趣!
四、Java 相干
基于理论工作中的使用,介绍一些 web 我的项目和服务器相干的常识。当你看到我的文章或多或少会呈现 Java 相干的常识的时候,请不要诧异。我其实是一个糟糕 Java 码农,就是这么神奇。好吧,我抵赖本人连半吊子都算不上,只是有一段时间的 CURD 教训。而在 Linux 上操作的教训反而比我主学的 Java 教训还要丰盛,得益于多年的自学以及与服务器和虚拟机打交道。
1、jar 包服务和 war 包服务
将 Java 程序通过中间件在后盾运行,& 符号就是将程序放入后盾执行
$ java -jar demo-1.0.jar &
jar 包或者 war 包在中间件后盾运行,优化版本,将日志输入到指定文件 demo-1.0.log。jvm 在 client 模式下运行,默认 Xmx 大小为 64M,而在 server 模式下默认 Xmx 大小为 1024M,默认 Xms 大小为 1M,而在 server 模式下默认 Xms 大小为 128M。
$ nohup java -server -Xms256M -Xmx2048M -jar demo-1.0.jar &> demo-1.0.log &
当你遇到控制台 日志输入乱码 的时候,此时不要慌,请沉着思考。当然有 解决方案 ,那就是在控制台执行Java -jar
命令时指定固定的编码,比方 utf- 8 编码。
$ java -jar -Dfile.encoding=utf-8 demo-1.0.jar &
$ nohup java -server -Xms256M -Xmx2048M -jar -Dfile.encoding=utf-8 demo-1.0.jar &> demo-1.0.log &
集体倡议:基于理论工作解决。再怎么去优化,机器始终是机器,内存始终要耗费。如果不能开释,须要采取人为的干涉伎俩,比方定期重启服务器。很多问题找了很多起因仍旧解决不掉,然而重启服务器就迎刃而解了,就是这么神奇。
2、tomcat 中间件优化
限度堆内存,具体依据服务器和真机的内存计算优化,上面常识给出示例值。
$ set JAVA_OPS = -Xms800m -Xmx1024m -XX:PermSize=800m -XX:MaxPermSize=1024m
https 自签证书配置
<!-- 自签证书配置,证书明码 keystorePass,key 蕴含文件 keystoreFile=""-->
<!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:\\company-workspace\\mykeys\\tomcat.keystore"
keystorePass="123456"
truststoreFile="D:\\company-workspace\\mykeys\\tomcat.keystore"
truststorePass="123456"
/>-->
谈到 tomcat 中间件,个别自然而然的就联想到 nginx 中间件。个别不倡议间接在 tomcat 中间接配置,反而应用 nginx 做一层反向代理,而后在 nginx 中设置 ssl。
nginx 中间件配置简略介绍
负载平衡,能够通过加权重实现轮询。
upstream tomcat {
server 192.168.0.233:8080;
server 192.168.0.233:8888;
server 192.168.0.233:9999;
}
配置 ssl 参考
server
{
listen 80;
listen 443 ssl;
server_name 192.168.245.130;
#ssl set begin
#优雅的编写 rewrite 规定
#rewrite ^ https://www.nginx.org$request_uri?;
#重定向转发到 https
#proxy_redirect http:// $scheme://;
#301 重定向
#return 301 https://$server_name$request_uri;
#http 申请重定向到 https 申请, 非标准 433 端口采纳
#error_page 497 https://$host$uri?$args;
#ssl 设置 off 或者屏蔽
ssl off;
ssl_certificate ssl/server.crt;# 服务端证书
ssl_certificate_key ssl/server.key;# 服务端私钥
ssl_session_cache shared:SSL:1m;# 设置共享会话缓存大小
ssl_session_timeout 5m;# 配置 session 无效工夫 5 分钟
ssl_prefer_server_ciphers on;# 优先采取服务器算法
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;# 启用指定协定
#加密算法
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
#ssl_verify_client on;# 开启客户端证书校验
#ssl_client_certificate ssl/ca.crt;# 设置验证客户端证书
#ssl_verify_depth 6; #校验深度
#ssl_trusted_certificate ssl/ca.crt;# 设置 CA 为受信赖证书
#ssl set end
location / {
#配置 proxy_set_header 申请头
proxy_pass_header User-Agent;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://tomcat;
proxy_redirect http:// https://;
}
3、国产中创中间件优化
解决 JDK 不残缺的两种计划:
- 第一种:下载完整版的 JDK;
- 第二种:应用 as 外部自带的编译器,如下所示进行调整。
找到 java-config
配置那一栏,在 \<jvm-options> 退出如下参数。
<jvm-options>-Dorg.apache.jasper.compiler.disablejsr199=true</jvm-options>
或者批改 as/domains/domain1/config/
目录下的 domain.xml,将 false 批改为true。
<jvm-options>-Dorg.apache.jasper.compiler.disablejsr199=false</jvm-options>
05 第五夜
通过前四夜的深入探讨,此时的小白曾经具备了一些 linux 基本知识的使用,对于我的项目上线和保护也有了肯定的理解。
cangls:置信小白同学当初曾经对 linux 基本知识有了肯定的理解,并可能使用到工作中。
小白:cangls,这还是得感谢您的仔细教诲,是有那么一丢丢的成就感。
cangls:学习就是要有这种劲头,好样的!明天再给你传授我多年收藏的独家秘笈:vim 工具的应用。
小白:好耶,独家秘笈?莫非是九阳神功,还是玉女心经?体现出满怀期待的样子。
cangls:想啥呢?是 linux 中的编辑神器,用好了 vim 对你的工作有大大大的益处哟!
小白:原来如此,开始拿出了本人的小本本记录 …
五、vim 的应用
1、vim 简略应用
接着下面的例子 hello.sh 脚本持续讲。
$ vim hello.sh #开始编辑脚本
在 hello.sh 脚本中写入一段内容:
tips:进入后按 i 键进行插入内容。
#!/bin/bash
echo "hello cangls"
echo hello linux
echo create btrfs filesystem
按 ESC,输出:wq 保留退出,而后执行脚本:
[root@cnwangk ~]# ./hello.sh
hello cangls
hello linux
create btrfs filesystem
执行脚本,会发现刚刚通过 vim
输出的 hello cangls
曾经失效了。
如果没有权限,通过 root 用户赋予权限:
# 赋予读和执行权限
chmod 755 /hello.sh
2、玩转 vim
凭集体应用经验总结一些罕用到的快捷键命令
参数 | 作用 |
---|---|
i | 进行编辑,插入内容 |
:wq | 保留并退出 |
:q! | 不保留并退出 |
shirt + pgup | 上翻页 |
shift + pgdown | 下翻页 |
/ | 搜寻内容 |
:set number | 显示行数 |
ESC | 退出编辑 |
更多命令参数能够参考,man vim,弱小的帮忙命令 man。
附上一个 vim 的键盘图,来自菜鸟教程,能够去菜鸟教程下载原图。
06 第六夜
通过前五夜的间断战斗,小白仍旧斗志昂扬。
cangls:小白同学啊,看你明天仿佛遇到什么难题了吧!
小白:是的,我最近浏览了 linux shell 相干的文章,然而有很多纳闷。
cangls:能具体形容一下吗?
小白:是这样的,对基本知识和用法有些困惑。
cangls:没关系,明天正是要给你传授 shell 方面的基本知识,心愿对你有所帮忙。
小白:此时拿出了小本本开始记录着 …
六、shell 脚本
1、shell 概述
- shell 的两种次要语法类型有
Bourne
和C
,这两种语法彼此不兼容。Bourne 家族次要包含:sh、ksh、Bash、psh、zsh; - C 家族次要包含:csh、tcsh。
Bash 中其它特殊符号,如下表格所示:
选项 | 符号含意 |
---|---|
‘ ‘ | 在单引号中所有特殊符号,如 ”$” 和 ”`”(反引号)都没有非凡含意 |
” “ | 双引号。在双引号中所有特殊符号除 ”$ “、”、”、”\” 外都无非凡含意。”$”、”、”、”\” 领有 ” 调用变量的值 ”、” 援用命令 ” 和 ” 本义符 ” 的含意 |
“ | 反引号括起来的是系统命令,在 Bash 中会优先执行它。和 $()作用一样,举荐应用 $(),反引号容易误导。 |
$() | 与反引号作用雷同,用来援用系统命令。 |
# | 在 shell 脚本中,# 代表正文。 |
$ | 用于调用变量的值,如果须要调用 name 的值时,须要应用 $name 获取变量的值。 |
\ | 本义符,跟在 \ 之后的特殊符号将失去非凡含意,变为一般字符。例如:$ 将输入 ”$” 符号,则不会作为变量援用。 |
2、shell 脚本根本编写
# 编写一个简略的 linux 脚本,应用 vim 命令
vim /home/hello.sh
#留神一个规范的 shell 脚本必须加上:#!/bin/bash
#!/bin/bash
echo "hello world" >> /root/hello.log #将 hello world 追加到 hello.log 这个文件中
#赋予读和执行权限
chmod 755 /hello.sh
#应用 sh hello.sh 命令执行
sh hello.sh && ./hello.sh
3、别名与快捷键
3.1、查看与设定别名
alias
别名 = ‘ 原命令 ’,设定命令别名,当然这样设置只会 长期失效。
alias
命令,查看系统命令中所有的命令别名,例如我集体装置的零碎别名查看如下:
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
别名永恒失效与删除别名
写入环境变量配置文件,永恒失效。
# 写入以后用户的环境变量,Ubuntu 下能够这样设置
$ vi ~/.bashrc
#Redhat7 系列
[root@cnwangk ~]# vi ~/.bash_profile
下面别离介绍了 Ubuntu 下的环境变量和 Redhat7 系列的以后用户环境变量批改。我之前也有写过博文,在这篇文章中:【linux 环境变量】秒懂 linux 配置全局与以后用户环境变量,同样也上传到了我的 github 和 gitee 仓库,微信公众号也有公布哟。
删除别名
$ unalias 接别名
命令失效程序
- 第一顺位执行用绝对路径或相对路径执行的命令
- 第二顺位执行别名
- 第三顺位执行 Bash 的外部命令
- 第四顺位执行依照 $PATH 环境变量定义的目录查找程序找到的第一个命令
4、历史命令
间接在终端输出 history 命令,就能够看到本人输出的历史命令。
$ history
history
[选项][历史命令保留文件]
- -c:清空历史命令
- -w:把缓存中的历史命令写入历史命令保留文件~/.bash_history
历史命令的调用
- 应用上、下箭头调用以前的历史命令
- 应用 ”!n” 反复执行第 n 条命令
- 应用 ”!!” 反复执行上一条命令
- 应用 ”! 字符串 ” 反复执行最初一条以该字符串结尾的命令
5、输入重定向
最根本的 echo
用法演示,将 hello world 输入到 hello.sh 脚本中,如果对 echo 命令不相熟,能够应用我下面介绍过的 man
帮忙命令进行查找。例如:
$ man echo
- e 参数介绍:反对反斜线管制的字符转换
$ echo "hello world" > hello.sh
[root@cnwangk ~]# cat hello.sh
hello world
#输出一段字符串到 hello.sh 脚本
[root@cnwangk ~]# echo -e "echo"hello linux"\necho"create btrfs filesystem"" > hello.sh
[root@cnwangk ~]# chmod 755 hello.sh #赋予 755 权限
[root@cnwangk ~]# sh hello.sh #执行脚本
hello linux
create btrfs filesystem
控制字符作用,如下表格所示:
参数 | 作用 |
---|---|
\a | 输入正告音 |
\b | 退格键,向左删除 |
\n | 换行符 |
\r | 回车键 |
\t | 制表符,TAB 键 |
\v | 垂直制表符 |
\0nnn | 依照八进制 ASCII 码输入字符。其中 0 为数字零,nnn 为三位八进制数。 |
\xhh | 依照十六进制 ASCII 码输入字符。hh 是两位十六进制数。 |
例如,示意以追加模式将苍老师输入到 av
文件中。嘿嘿,咱就骚一下。
echo "cangls" >> av.avi
规范输入重定向,作用如下表格所示:
命令格局 | 作用 |
---|---|
命令 > 文件 | 以笼罩的形式,把命令的正确输入到指定的文件或设施当中 |
命令 >> 文件 | 以追加的形式,把命令的正确输入到指定的文件或设施当中 |
谬误命令 2> 文件 | 以笼罩的形式,把命令的谬误输入到指定的文件或设施当中 |
谬误命令 2>> 文件 | 以追加的形式,把命令的谬误输入到指定的文件或设施当中 |
正确输入和谬误输入同时保留,作用如下表格所示:
命令格局 | 作用 |
---|---|
命令 > 文件 2>&1 | 以笼罩的形式,把命令的正确和谬误输入保留在同一个文件中 |
命令 >> 文件 2>&1 | 以追加的形式,把命令的正确和谬误输入保留在同一个文件中 |
命令 &> 文件 | 以笼罩的形式,把命令的正确和谬误输入保留在同一个文件中 |
命令 &>> 文件 | 以追加的形式,把命令的正确和谬误输入保留在同一个文件中 |
命令 >> 文件 1 2>> 文件 2 | 把正确的输入到文件 1 中,谬误的输入到文件 2 中 |
wc 命令
wc
[选项][文件名],输入文件中的行数、单词数、行数
示例,统计 hello.sh 的行数,统计有两行,与下面的演示对应起来了。
$ wc -l
[root@cnwangk ~]# wc -l hello.sh #统计 hello.sh 的行数,统计有两行,与下面的演示对应起来了。2 hello.sh
最初总结出实用的几种,以追加的模式把谬误和正确的后果输入到文件中:
- 命令 >> file 2>&1
- 命令 &>> file
- 命令 >> file1 2>> file2
6、管道符
6.1、命令格局,如下表格所示:
命令格局 | 作用 | ||||
---|---|---|---|---|---|
命令 1 \ | 命令 2 | 命令 1 的正确输入作为命令 2 的操作对象 | |||
;,格局 1:命令 2 | 多个命令程序执行,命令之间没有任何逻辑关系 | ||||
&&,命令 1 && 命令 2 | 逻辑与,当命令 1 正确执行,命令 2 才会执行;命令 1 无奈正确执行,命令 2 不会执行 | ||||
\ | \ | ,命令 1\ | \ | 命令 2 | 逻辑或,当命令 1 非正确执行,命令 2 才会执行;命令 1 正确执行,命令 2 不会执行 |
6.2、linux 中的通配符,局部整顿如下表格所示:
参数 | 作用 |
---|---|
* | 匹配任意内容 |
? | 匹配任意一个字符 |
[] | 匹配任意一个中括号内的字符,例如 [abc] 代表匹配一个字符,可能是 a,也可能是 b 或 c。 |
[-] | 匹配中括号里的任意一个字符,- 代表一个范畴,例如:[a-z]代表匹配一个小写字母。 |
[^] | 逻辑非,匹配不是中括号里的一个字符,例如:[^0-9]代表匹配一个非数字的字符。 |
继续更新优化中 …
总结
能看到这里的,都是帅哥靓妹。以上就是此次文章的所有内容的,心愿能对你的工作有所帮忙。感觉写的好,就拿出你的一键三连。如果感觉总结的不到位,也心愿能留下您贵重的意见,我会在文章中进行调整优化。
原创不易,转载也请表明出处和作者,尊重原创 。本文会不定期上传到 gitee 或者 github 以及公布到微信公众平台。 我的微信公众号与其余平台昵称同样是龙腾万里 sky。认准龙腾万里 sky,如果看见其它平台不是这个 ID 收回我的文章,就是转载的。
linux 系列文章:linux 小技巧 scp 命令、linux 磁盘治理 曾经上传至 github 和 gitee。
集体 github 仓库地址,个别会先更新 PDF 文件,而后再上传 markdown 文件。如果拜访 github 太慢,能够拜访 gitee 进行克隆。
https://github.com/cnwangk/SQL-study
集体 gitee 仓库地址,个别会先更新 PDF 文件,而后再上传 markdown 文件。
https://gitee.com/dywangk/SQL-study
<H5 align=center>by 龙腾万里 sky </H5>