操作系统架构

应用程序
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打印目录

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删除目录

rmdir text 删除空目录

rm删除

rm a 删除文件
rm -r 删除目录
rm -f 强制删除

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

ping 127.0.0.1 获取动态地址

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模式

最基本要求:修改文件

三种模式:

命令模式:
  1. vi进来就是命令模式

编辑模式:
  1. 在命令模式下输入aioAIO任意一个进入,在左下角有“--插入--”,Esc回到命令模式

末行模式:
  1. 在命令模式下输入:,执行完末行命令、两次Esc回到命令模式

命令模式下光标移动:
  1. H,J,K,LW按下一个单词字首移动,E按下一个单词词尾移动,B按上一个单词字首

移动光标到某一行:
  1. 英文冒号行号+G,文件末尾G,文件首行H,文件中间M,文件最后L

显示行号:
  1. :+set nu(末行模式)

退出

:q退出vi、:w保存、:wq保存并退出vi、:q!强制退出、:wq!强制保存退出
复制yy 3yy复制3行、粘贴p、删除dd,3dd删除3行,可粘贴p,x单字符删除
撤销u、重做ctrl+r

查找
  1. /自上向下,n同向下一个查找,N反向查找 ?自下向上,n同向下一个查找,N反向查找

替换
  1. %s/pwd/abc/g %表示范围,整个文档都替换,也可以指定行范围110<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用户添加

  1. cat /etc/passwd 查看用户信息(查看添加用户是否成功)<br /> cat /etc/group 查看用户组信息(查看添加组是否成功)<br /> useradd 用户添加 如:useradd test<br /> useradd -g root test1 新增用户,给用户指定组,root是组,test1是用户名<br /> ggroup的缩写)<br /> useradd -d /home/abc test2 dhome_dir缩写)

usermod修改用户

  1. usermod -g root test 修改用户,修改用户所属的组,root是组,test是用户名<br /> ggroup的缩写)

userdel删除用户

  1. userdel test1 删除用户,不删除家目录和邮件<br /> userdel -r test1 删除用户,同时删除家目录和邮件(r remove缩写)<br /> passwd test 修改密码,如果没写test,默认修改当前用户密码(root用户操作)

groupadd增加用户组

  1. groupadd text 增加用户组

groupmod修改用户组

  1. groupmod -g root test 修改用户组(rootidtest为目标组名)<br /> ggroup的缩写)

groupdel删除用户组

  1. groupdel test 删除用户组

passwd修改密码

  1. passwd test 修改用户test的密码(root用户操作)

su - 切换用户

  1. su - test 切换test用户(每切换一次,都会有一个进程)<br /> exit退出

exit退出进程

权限管理(重要)

字母形式

如:rw-rw-r—
分三组,u(user)第一组(第一个rw-)属主(文件的主人)的权限,
g(group)第二组(第二个rw-)是同组的权限,
o(other)第三组(r—)其他用户的权限
每一组的三个字符的含义:
r 可读权限 - 表示没有权限
w 可写权限 - 表示没有权限
x 可执行权限 - 表示没有权限

数字形式

  1. rwx各自对应421<br /> rwx=r+w+x=4+2+1=7 <br /> r--=4+0+0=4

chmod修改权限(管理员)

  1. 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 /> Rrecursive递归 缩写)

chown修改属主(管理员)

  1. 要进入管理员用户进行修改<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 /> Rrecursive递归 缩写)

chgrp修改组(管理员)

  1. chgrp hlc abc 将文件abc的组改为hlc

文件的统计比较

wc统计数目

  1. 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排序(可以用做查看信息)

  1. 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找不同

  1. diff ls.txt ls2.txt 按行比较文件内容的不同 <br /> diff -c ls.txt ls2.txt 显示全部内容,并标出不同之处<br /> diff -u ls.txt ls2.txt 以合并的方式显示内容的不同之处

file查看文件类型

  1. file test 输出文件类型

ln链接

  1. ln -s ls.txt lnls2 创建软链接<br /> ln ls.txt lnls3 创建硬链接(同步的独立两个文件,任意修改一个文件,另一个文件也同步变化,但源文件不存在,链接无影响)

文件查找

sd 硬盘——sda、sdb、sdc等

find 查找文件

  1. 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 按照文件大小查找 文件单位kMG<br /> find -name 'ln*' -exec ls -l { } \ ; 查找的文件并查看详细信息

查找并删除
  1. 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-release

    which查找路径

    查找可执行的文件、工具,从PATH中查找
    which mv 查找命令路径,按照PATH去查找

    whereis查找命令和帮助手册

    whereis mv

    whoami查看本次登录用户

    whoami

    w查看当前主机的登录信息

    打包压缩

    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综合查看(动态)

    1. top 可以查看CPU使用情况

    free查看内存

    1. free -h 内存单位换算为可读<br /> free -m MB为单位显示内存<br /> free -g G为单位显示内存

    修改主机名(root权限)

    hostname临时修改

    1. hostname name 临时修改

    永久修改vi

    1. vi /etc/sysconfig/network HOSTNAME=mylinux<br /> vi /etc/hosts 修改127.0.0.1 mylinux

    reboot重启操作系统

    1. reboot

    shutdown停止系统

    1. shutdown -h now 关闭服务器

    网络管理

    ping检测网络的连通性

    1. ping baidu.com

    ifconfig查看修改ip、掩码等

    1. 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查看端口

    1. netstat -anp | grep 22 查看端口监听情况
    kill -9 $PID 端口被占用时,解决方法(面试问题)

    ssh root@127.0.0.1 ssh客户端,可以连接sshd服务。

    route查询路由

    scp跨服务器拷贝

    1. scp hlc@127.0.0.1:/home/hlc/123.txt /tmp/ 跨主机拷贝

    防火墙启停

    systemctl 管理服务的程序
    1. 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文件是设置环境变量的,操作系统上所有用户的环境变量
    环境配置
    1. 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
    客户端连接服务端
    mysql

    tomcat配置

    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-img1.6.0.41-img1.13.13.1.el6_8.x86_64
[root@centos6 ~]#
[root@centos6 ~]# rpm -e —nodeps java-1.7.0-openjdk-img1.7.0.181-img2.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