操作系统架构
应用程序
shell和库函数
系统调用(system call)
内核(kernel)
底层硬件(cpu,内存,硬盘,网卡)
常用端口
SSH安全登录 端口22 特点:secure shell,进行了加密,提供了远程登录功能
FTP文本传输协议 端口21
TELNET远程登录 端口23 特点:明文不安全,提供远程登录功能
linux系统结构
目录 应放置文件内容
bin 二进制文件的目录(就是可执行程序的目录)
boot 系统启动时需要读取的目录
dev “存放设备文件的目录( device ) Linux中,设备分为两种:块设备( block)、字符设备( character )。硬盘、软驱、光驱都属于“块设备”,鼠标、健盘都属于“字符设备”。”
etc 系统的配置文件(系统的信息存放在这里,比如我们的帐号以及密码)
home 普通用户的主目录,类似于Windows的C:\Documents and Settings\Administrator下的目录
root 超级用户的主目录,也就是root的主目录,类似于C:\Documents and Settings\Administrator
initrd 初始化的目录,比如我们希望系统开机的时候配置—下IP
lib 库函数的目录(Library ) ,类似“外挂”目录
lost+found 系统出错时,会存放一些丢失的文件在这个目录里
media 存放—些可删除的设备文件
mnt 存放一些临时需要挂载(mount)的设备
opt 类似于windows的Programfiles目录,一般是用来安装程序的。optional(可选)
proc 特殊目录。这里的所有文件都不是在硬盘里的,而是在内存里的。也就是这个目录的文件都是内存的真实映射。
sbin 类似于bin目录。区别在于sbin目录的东西都是给superuser的,即superuser’s bin
selinux SecureLinux 关于安全策略的配置
srv 服务需要取的数据目录
sys跟proc类似,也是记录和内核相关的信息。同样不占硬盘空间
tmp 临时目录temporary
usr 类似于前面的opt目录,但是存放在这个地方的软件都是很重要的。相当于windows里C:\WINDOWS和C:\Program Files的综合体。Usr=Unix Software Resource.
var 常态性变动的文件,比如缓存、mysql文件、mail的数据
绝对路径和相对路径
绝对路径:是从盘符开始的路径
相对路径:是从当前路径开始的路径
cd路径转移
cd 切换当前目录
cd /home/ 绝对路径
cd alsa 相对路径
cd 回到家目录
cd ~ 回到家目录
cd - 回到历史目录
cd .. 回到上级目录
/root 家目录
pwd打印目录
查看帮助help,info,man
help 例: ls —help
info cd 空格翻页,q退出
man cd 空格翻页,q退出
ls查看
ls 查看当前目录文件信息
ls /usr/bin/ (后面可以跟绝对路径也可以跟相对路径,也可以跟多个路径)
ls -a (a all的缩写)查看隐藏目录/文件,(隐藏文件 是以.开头)
ls -l (ll)查看文件详细信息。(l,format=long长整型,format=verbose详细,缩写)
ls -t 按时间排序(t,sort=time缩写)
ls -r 倒叙排序(r,reverse倒序 缩写)
ls -h 将文件大小以易读的方式展示出来(自动单位换算)(h,human-readable缩写)
(a,l,t,r可连在一起使用:-altr,查看所有文件信息,并按照时间倒序显示)
mkdir创建目录
mkdir -p abc/a/b 如果上级目录不存在就自动创建上级目录(p,parents缩写)。
mkdir g h i 创建多个目录
mv移动覆盖
mv abc a 若a文件夹存在,则将abc文件移动到a中;若不存在,则将abc文件重命名为a;
若a存在,且为文件,则命令执行失败
mv text.txt e.txt 用text.txt文件将e.txt覆盖,e.txt名字不变,内容为text.txt文件内容
mv -u ppp text.txt 当原文件ppp比text.txt还新的时候才会覆盖,否则可运行,无操作(u,update)
rmdir删除目录
rm删除
cp复制
cp a.txt a1.txt 拷贝a.txt文件为a1.txt
cp -r homework homework2 拷贝目录
cp -s aa.txt lntest(相对路径) 创建一个软链接(类似于win快捷方式)
cp -s /home/centos7/aa.txt ln2test (绝对路径)创建一个软链接(类似于win快捷方式)
cp -d lntest ln3test 拷贝一个链接
文件管理
touch新建文件
touch test.txt 新建文件
touch test.txt 若文件存在,更新文件访问时间和修改时间,若不存在,创建一个空文件
cat查看
cat /etc/centos-releaase 查看文件内容
cat ls.txt ll.txt 将两个文件内容拼接后,显示到屏幕上
cat -n ls.txt 添加行号(空行也算)
cat -b ls.txt 添加行号(空行不算)
重定向符
重定向符 覆盖(文件内容)
> lll.txt 创建或覆盖一个新的空文件
>> 重定向符 追加
>> l.txt 创建或添加文件head输出
head ls.txt 默认输出前10行
head -n 12 ls.txt(head -12 ls.txt)输出前12行tail动态查看
- tail(重点)tail ll.txt 默认查看末尾10行
- tail -n 5 ll.txt (tail -5 ll.txt)查看最后5行
- tail -f ping.txt 动态查看日志
- tail -5f ping.txt
more分屏查看
more ping.txt 分屏查看
more +5 -10 从第5行开始,每页显示10行
ctrl+f 下翻页 ctrl+b 上翻页 ctrl+d 下翻半页 ctrl+u 上翻半页q退出
less分屏查看
less ls.txt 分屏查看/ 查找字符串 n下一个查找到的字符串,N反向查找字符串
文本编辑
vi==vim模式
三种模式:
命令模式:
vi进来就是命令模式
编辑模式:
在命令模式下输入aioAIO任意一个进入,在左下角有“--插入--”,Esc回到命令模式
末行模式:
在命令模式下输入:,执行完末行命令、两次Esc回到命令模式
命令模式下光标移动:
H,J,K,L;W按下一个单词字首移动,E按下一个单词词尾移动,B按上一个单词字首
移动光标到某一行:
英文冒号行号+G,文件末尾G,文件首行H,文件中间M,文件最后L
显示行号:
:+set nu(末行模式)
退出
:q退出vi、:w保存、:wq保存并退出vi、:q!强制退出、:wq!强制保存退出
复制yy 3yy复制3行、粘贴p、删除dd,3dd删除3行,可粘贴p,x单字符删除
撤销u、重做ctrl+r
查找
/自上向下,n同向下一个查找,N反向查找 ?自下向上,n同向下一个查找,N反向查找
替换
%s/pwd/abc/g %表示范围,整个文档都替换,也可以指定行范围1,10<br />将/home/web/改为#homet#web#:<br />%s/\/home \/web\//thome#web#/g <br />:%s#/home/web/##home #web##g <br />s固定格式 <br />/表示分隔符,#也可作分隔符 <br />g表示全局,如果没有g,每一行替换第一个匹配到的字符串,加上g后,会替换所有的字符串
用户、用户组管理(管理员)
进入管理员用户su - root
sshd服务端文件
useradd用户添加
cat /etc/passwd 查看用户信息(查看添加用户是否成功)<br /> cat /etc/group 查看用户组信息(查看添加组是否成功)<br /> useradd 用户添加 如:useradd test<br /> useradd -g root test1 新增用户,给用户指定组,root是组,test1是用户名<br /> (g,group的缩写)<br /> useradd -d /home/abc test2 (d,home_dir缩写)
usermod修改用户
usermod -g root test 修改用户,修改用户所属的组,root是组,test是用户名<br /> (g,group的缩写)
userdel删除用户
userdel test1 删除用户,不删除家目录和邮件<br /> userdel -r test1 删除用户,同时删除家目录和邮件(r remove缩写)<br /> passwd test 修改密码,如果没写test,默认修改当前用户密码(root用户操作)
groupadd增加用户组
groupadd text 增加用户组
groupmod修改用户组
groupmod -g root test 修改用户组(root为id,test为目标组名)<br /> (g,group的缩写)
groupdel删除用户组
groupdel test 删除用户组
passwd修改密码
passwd test 修改用户test的密码(root用户操作)
su - 切换用户
su - test 切换test用户(每切换一次,都会有一个进程)<br /> exit退出
exit退出进程
权限管理(重要)
字母形式
如:rw-rw-r—
分三组,u(user)第一组(第一个rw-)属主(文件的主人)的权限,
g(group)第二组(第二个rw-)是同组的权限,
o(other)第三组(r—)其他用户的权限
每一组的三个字符的含义:
r 可读权限 - 表示没有权限
w 可写权限 - 表示没有权限
x 可执行权限 - 表示没有权限
数字形式
r、w、x各自对应4、2、1<br /> rwx=r+w+x=4+2+1=7 <br /> r--=4+0+0=4
chmod修改权限(管理员)
chmod u+x abc 给文件abc的属主增加可执行权限<br /> chmod u-x abc 给文件abc的属主减去可执行权限<br /> a=ugo (all)所有的<br /> chmod a-r,o+w abc<br /> chmod 777 abc 给文件abc增加所有权限<br /> chmod -R 777 de/ 给文件de增加所有的权限(目录下文件全都跟着改)<br /> (R,recursive递归 缩写)
chown修改属主(管理员)
要进入管理员用户进行修改<br /> chown root abc 将文件abc的属主(用户名)改为root<br /> chown root:root abc 将文件abc的属主(用户)和组改为root<br /> chown : test abc 将文件abc的组给改为test <br /> chown -R root:root abc 将文件abc及其目录下文件的属主(用户)全部改为root<br /> (R,recursive递归 缩写)
chgrp修改组(管理员)
chgrp hlc abc 将文件abc的组改为hlc
文件的统计比较
wc统计数目
wc ls.txt 统计文件的行数、单词数、字节数<br /> wc -l ls.txt 统计文件的行数<br /> wc -w ls.txt 统计文件的单词数(含空白,分隔)<br /> wc -c ls.txt 统计文件的字节数<br /> wc -m ls.txt 统计文件的字符数,汉字数目<br /> ls |wc | 管道符,将前一个命令的输出数据传递到下一个命令的输入数据
sort排序(可以用做查看信息)
sort ls.txt 默认按照升序排序<br /> sort test1.txt test2.txt 将文件拼接后按照首字母顺序排序<br /> sort -r ls.txt 按照倒序排序<br /> sort -k 5 ls.txt -n(sort -nk 5 ls.txt) 按照第5列数字大小排列
diff找不同
diff ls.txt ls2.txt 按行比较文件内容的不同 <br /> diff -c ls.txt ls2.txt 显示全部内容,并标出不同之处<br /> diff -u ls.txt ls2.txt 以合并的方式显示内容的不同之处
file查看文件类型
file test 输出文件类型
ln链接
ln -s ls.txt lnls2 创建软链接<br /> ln ls.txt lnls3 创建硬链接(同步的独立两个文件,任意修改一个文件,另一个文件也同步变化,但源文件不存在,链接无影响)
文件查找
sd 硬盘——sda、sdb、sdc等
find 查找文件
find -name '*txt' 按照文件名查找文件<br /> find -type l 按照文件类型查找 <br /> d 目录,f 文件,l 软连接,b 块设备,c字符设备, p 管道<br /> find -name '*txt' -maxdepth 3 查找深度<br /> find -user root 按属主(用户)查找<br /> find -group test 按组查找<br /> find ~/ -perm 755 按照权限查找 <br /> find -mtime 2 (时间轴,方向向右为减,向左为加)按照时间查找文件,查找48小时到72小时内修改的文件<br /> atime 访问时间 mtime 修改时间(ll 命令看到的是修改时间) ctime 修改了文件的属主、权限的时间<br /> find -size 2k 按照文件大小查找 文件单位k、M、G<br /> find -name 'ln*' -exec ls -l { } \ ; 查找的文件并查看详细信息
查找并删除
find -name cmd.txt -exec rm -rf { } \ ; 对查找的文件并删除<br /> find -name test.txt -delete<br /> find -name test.txt | xargs rm -rf<br />find -name '*txt' -a -size 2k (and)前面条件和后面条件同时成立<br />find -name '*txt' -o -size 2k (or) 前面条件和后面条件有一个成立<br />find -not -name '*txt' 查找不是txt的文件
通配符
- *匹配多个字符
- ? 匹配一个字符
- [] 匹配括号内的任意一个字符 find -name ‘[me]e*’ 满足m或e即可
- [ a - z ]匹配范围 find -name ‘[a-z]e*’ 满足a-z范围内即可
grep查找pattern(表达式,字符串)过滤
grep tail cmd.txt 查找文件中tail字符串
grep tail txt
grep -r tail 递归查找,子目录也查找
grep -c tail cmd.txt 统计文件出现tail字符串的次数
grep -i tail * 在文件中查找tail字符串,不区分大小写查看Lnuix版本号
cat /etc/centos-releasewhich查找路径
查找可执行的文件、工具,从PATH中查找
which mv 查找命令路径,按照PATH去查找whereis查找命令和帮助手册
whereis mvwhoami查看本次登录用户
whoamiw查看当前主机的登录信息
打包压缩
tar打包解包压缩解压
tar cvf text.tar *txt 将当前目录下所有txt文件打包生成text.tar文件
c 打包,v 打包过程(文件名),f 指定一个tar包名字
tar xvf test.tar 解包命令,x 解包,v 和 f 同上
tar czvf services.tar.gz services 先打包,再压缩;z 压缩,c、v、f 同上
tar xzvf services.tar.gz -C:/tep/ 解压并解包,指定目录gzip压缩
gzip services.tar 压缩并把源文件删除zip压缩
zip service.zip service 压缩文件unzip解压
unzip service.zip 解压文件系统资源
进程管理
ps进程
ps -ef 查看运行的进程
UID 用户标识
PID 进程编号
PID parent process identification 父进程的标识
TTY 远程连接终端编号
TIME 进程运行时间
CMD 当前正在执行的任务kill强制结束进程及子进程
kill -9 PID资源查看
top综合查看(动态)
top 可以查看CPU使用情况
free查看内存
free -h 内存单位换算为可读<br /> free -m 以MB为单位显示内存<br /> free -g 以G为单位显示内存
修改主机名(root权限)
hostname临时修改
hostname name 临时修改
永久修改vi
vi /etc/sysconfig/network 把HOSTNAME=mylinux<br /> vi /etc/hosts 修改127.0.0.1 mylinux
reboot重启操作系统
reboot
shutdown停止系统
shutdown -h now 关闭服务器
网络管理
ping检测网络的连通性
ping baidu.com
ifconfig查看修改ip、掩码等
ifconfig ens33 192.168.222.155 修改ip地址<br /> ifconfig ens33 down 关闭网卡<br /> ifconfig ens33 up 打开网卡<br /> 网卡配置文件:centos redhat<br /> /etc/sysconfig/network-scripts/ifcfg-ens0
netstat查看端口
netstat -anp | grep 22 查看端口监听情况
kill -9 $PID 端口被占用时,解决方法(面试问题)
ssh root@127.0.0.1 ssh客户端,可以连接sshd服务。
route查询路由
scp跨服务器拷贝
scp hlc@127.0.0.1:/home/hlc/123.txt /tmp/ 跨主机拷贝
防火墙启停
systemctl 管理服务的程序
systemctl start|stop|restart|status|disable|enable network|firewalld start 启动,stop 停止服务,restart 重启服务,disable 关闭自启, enable 打开自启。 network 网络服务, firewalld是防火墙
df -h 查看磁盘使用情况,按分区查看
du -sh -s 合并计算 查看文件或目录的大小
配置jdk
查询安装包
rpm -ga lgrep jdk查询详细信息
rpm -ql java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64强制卸载
rpm -e —nodeps java-1.8.0-openjdk-headless-1.8.0.242.b08-1.el7.x86_64
rpm -e —nodeps copy-jdk-configs-3.3-10.el7_5.noarch
rpm -e —nodeps java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64查询安装包
rpm -ga lgrep jdk安装rpm包的命令
rpm -ivh jdk-8u11-linux-x64.rpm查询安装包
rpm -ga lgrep jdk设置环境变量
[rootcentos7 setup]# cp /etc/profile /etc/profile_20200108
[rootecentos7 setup]# vi /etc/profile
profile文件是设置环境变量的,操作系统上所有用户的环境变量环境配置
export JAVA_HOME=/usr/java/default/<br /> export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$UAVA_HOME/lib/tools.jar<br /> export PATH=$PATH:$JAVA_HOME/bin
使环境变量生效
source /etc/profile检查java有没有装好
java -version安装数据库
yum 切换源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo清理缓存
yum clean all生成缓存
yum makecache安装mariadb(mysql)
yum -y install mariadb-server启动mysql数据库
systemctl start mariadb.server查看数据库状态
systemctl status mariadb查看数据库进程
ps -ef | grep mysqld查看端口是否监听
netstat -anp | grep 3306客户端连接服务端
mysqltomcat配置
cp apache-tomcat-7.0.82.zip ~ —-拷贝文件
unzip apache-tomcat-7.0.82.zip —-加压缩
mv apache-tomcat-7.0.82 tomcat —-改名
cd tomcat/bin/
chmod a+x *sh —增加可执行权限
./startup.sh —启动tomcat
ps -ef |grep tomcat —检查端口
netstat -anp |grep 8080 —检查进程
suqi项目安装
su -
[root@centos6 yum.repos.d]# cd /home/setup/
[root@centos6 setup]#
[root@centos6 setup]# mysql
mysql> source init_database.sql
mysql>
mysql> show databases;
mysql>
mysql> exit
[root@centos6 setup]#
[root@centos6 yum.repos.d]#
[root@centos6 yum.repos.d]# exit
[hlc@centos6 bin]$
[hlc@centos6 bin]$ cd
[hlc@centos6 ~]$
[hlc@centos6 ~]$ cd tomcat/webapps/
[hlc@centos6 webapps]$
[hlc@centos6 webapps]$ cp /home/setup/suqi-v1.0.2.3.war suqi.war
[hlc@centos6 webapps]$
[hlc@centos6 webapps]$ cd suqi/WEB-INF/
[hlc@centos6 WEB-INF]$
[hlc@centos6 WEB-INF]$ vi config.txt
[hlc@centos6 WEB-INF]$
jdbcUrl = jdbc:mysql://192.168.1.27/suqi?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
jdbcUrl = jdbc:mysql://127.0.0.1:3306/suqi?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
[hlc@centos6 WEB-INF]$
[hlc@centos6 WEB-INF]$ ps -ef |grep tomcat
[hlc@centos6 WEB-INF]$
[hlc@centos6 WEB-INF]$ kill 11588
[hlc@centos6 WEB-INF]$
[hlc@centos6 WEB-INF]$ ps -ef |grep tomcat
[hlc@centos6 WEB-INF]$
[hlc@centos6 WEB-INF]$ cd ~/tomcat/
[hlc@centos6 tomcat]$ bin/startup.sh
[hlc@centos6 tomcat]$
[hlc@centos6 logs]$ tail -f catalina.out
卸载命令
—杀死tomcat进程—-
[hlc@centos7 ~]$ ps -ef |grep tomcat
[hlc@centos7 ~]$ kill 126274
—停止数据库—
systemctl stop mariadb
—删除tomcat目录—
rm -r tomcat
—卸载数据库—
yum -y remove mariadb
[hlc@centos6 setup]$ rpm -qa |grep jdk
[hlc@centos6 setup]$
[hlc@centos6 setup]$ su - root
[root@centos6 ~]#
[root@centos6 ~]# rpm -e java-1.6.0-openjdk-
1.6.0.41-
1.13.13.1.el6_8.x86_64
[root@centos6 ~]#
[root@centos6 ~]# rpm -e —nodeps java-1.7.0-openjdk-
1.7.0.181-
2.6.14.10.el6.x86_64
[root@centos6 ~]#
[root@centos6 ~]# rpm -e copy-jdk-configs-3.3-9.el6.noarch
vi /etc/profile —删除三个环境变量
source /etc/profile
