Linux笔记整理

Linux

是一个操作系统,一切皆文件:读、写、(权限)

Linux内核:Ubuntu、entOS 、RedHat 可考红帽认证工程师

Kali linux:安全渗透测试使用!

通常服务器使用LAMP(Linux+Apache+MySQL+PHP) 或

LNMP(Linux+Nginx+MySQL+PHP)组合

1.安装CentOS

可本地安装 或 云服务器(阿里云)

本地装在 虚拟机 VMware上面,先安装VMware;

注意:Linux磁盘分区的时候需要自定义分区,注意分区名 /boot /home

Linux开机会启动许多程序,在Windows中叫做服务,在Linux中叫做 守护进程(daemon)

基础命令: Linux中没有错误 就代表操作成功

sync 将数据同步到因盘中

shutdown 关机

reboot 重启

所有的文件都挂在在 / 根目录下

ls / 查看根目录下的所有文件

/bin : bin是Binary的缩写,这个目录存放着最经常使用的命令

/dev : 是Device(设备)的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的,挂载第三方

/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户名的账号命名的

/lib:这个目录里存放着系统最基本的动态连接共享库,类似于Windows里的DLL文件(基本依赖,不要动)

/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里面的内容。我们可以把一些本地文件挂载在这个目录下。

/proc: 虚拟目录,系统内存的映射(不用管)

/run:是一个临时文件系统,存储系统启动以来的信息,当系统重启时,这个目录下的文件应该被删掉或清除

/srv:该目录存放一些服务启动之后需要提取的数据

/tmp:这个目录是用来存放一些临时文件的。用完即丢的文件,比如安装包

/var:这个目录中存放着在不断扩充的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件

/boot:这里是存放启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件(不要动)

/etc :用来存放所有的系统管理所需要的配置文件 和子目录。

/media: Linux系统会自动识别一些设备,例如U盘、光驱等等,识别后,linux会把识别的设备挂载到这个目录下

/opt:这是给主机额外安装软件所摆放的目录。比如安装一个ORACLE数据库则可以直接放在这个目录下,默认是空的。

/root: ls -a a代表查看全部文件;该目录为系统管理员,也称作超级权限者的用户主目录

/sbin: s 就是Super User的意思,这里存放的是系统管理员使用的系统管理程序

/sys:这是linux内核的很大变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs

/usr: 非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录

[root@centos7 local]# cd /
[root@centos7 /]# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
[root@centos7 /]# cd usr
[root@centos7 usr]# ls
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
[root@centos7 usr]# cd local
[root@centos7 local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@centos7 local]#
​

/usr/bin:系统用户使用的应用程序

/usr/sbin: 超级用户使用较高级的管理程序和系统守护程序

/usr/src:内核源代码默认放置的目录

/lost +found:一般情况下是空的,当系统非法关机后,这里就存放了一些文件(存放突然关机的一些文件)

服务器中的 /www:存放服务器网站相关的资源,环境,网站的项目


常用的基本命令

1.目录管理

绝对路径 都是以 / 开头、相对路径,对于当前目录该如何寻找 .. / ../

cd :切换目录命令

cd .. 返回上一级目录 cd ./ 当前目录 ls:列出目录

-a 参数:all 查看 查看全部文件,包括隐藏文件

-l 参数:列出所有的文件,包含文件的属性和权限,没有隐藏文件

所有的命令可以组合使用

[root@centos7 /]# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
[root@centos7 /]# ls -al
总用量 28
dr-xr-xr-x.  17 root root  224 4月  15 23:04 .
dr-xr-xr-x.  17 root root  224 4月  15 23:04 ..
lrwxrwxrwx.   1 root root    7 4月  15 22:59 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 4月  15 23:05 boot
drwxr-xr-x.  20 root root 3300 4月  16 14:52 dev
drwxr-xr-x. 145 root root 8192 4月  16 14:52 etc
drwxr-xr-x.   4 root root   31 4月  16 21:27 home
lrwxrwxrwx.   1 root root    7 4月  15 22:59 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 4月  15 22:59 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 4月  11 2018 media
drwxr-xr-x.   2 root root    6 4月  11 2018 mnt
drwxr-xr-x.   2 root root    6 4月  16 15:53 opt
dr-xr-xr-x. 216 root root    0 4月  16 14:52 proc
dr-xr-x---.  14 root root 4096 4月  16 14:54 root
drwxr-xr-x.  42 root root 1260 4月  16 14:53 run
lrwxrwxrwx.   1 root root    8 4月  15 22:59 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 4月  11 2018 srv
dr-xr-xr-x.  13 root root    0 4月  16 14:52 sys
drwxrwxrwt.  20 root root 4096 4月  16 15:46 tmp
drwxr-xr-x.  13 root root  155 4月  15 22:59 usr
drwxr-xr-x.  21 root root 4096 4月  15 23:05 var
[root@centos7 /]#
​

cd ../home 相对路径

[root@centos7 /]# cd usr
[root@centos7 usr]# cd ../home
[root@centos7 home]# cd ../usr
[root@centos7 usr]# ls
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
[root@centos7 usr]#

cd ~ 进入用户目录 pwd显示当前用户所在的目录

[root@centos7 home]# cd ~
[root@centos7 ~]# pwd
/root
[root@centos7 ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@centos7 ~]#
​

mkdir 创建一个目录 蓝色的是文件夹 ,白色的是文件

mkdir -p 递归创建目录

[root@centos7 home]# mkdir -p test2/haha/h
[root@centos7 home]# ls
eric  test1  test2
[root@centos7 home]# cd test2
[root@centos7 test2]# ls
haha
[root@centos7 test2]# cd haha
[root@centos7 haha]# ls
h
[root@centos7 haha]# cd ..
[root@centos7 test2]# cd..
bash: cd..: 未找到命令...
[root@centos7 test2]# cd ..
[root@centos7 home]# ls
eric  test1  test2
[root@centos7 home]# rm -rf test2
[root@centos7 home]# ls
eric  test1
​

rmdir 删除空的目录 如果存在文件 先删除文件,可以递归删除多个目录 rmdir -p test1/test/ha

cp 拷贝文件至目录 到新的地方 如果文件重复就选择覆盖或者放弃

rm 移除文件或者目录 rm -f 忽略不存在的文件,强制删除 不会提示

rm -r 递归删除

rm -i 互动,删除的时候询问是否删除

rm -rf 强制递归删除某文件 或者 rm -rf /根目录下的所有文件

mv 移动文件或目录 也可以重命名文件

-f 强制移动 -u 只替换已经更新过的文件

[root@centos7 home]# ls
eric  test1  test2
[root@centos7 home]# mv eric test1
[root@centos7 home]# ls
test1  test2
[root@centos7 home]# cd test1
[root@centos7 test1]# ls
eric
[root@centos7 test1]# mv eric home
[root@centos7 test1]# ls
home
[root@centos7 test1]# cd ../
[root@centos7 home]# ls
test1  test2
[root@centos7 home]# ls
test1  test2
[root@centos7 home]# cd test1
[root@centos7 test1]# ls
home
[root@centos7 test1]# mv home eric
[root@centos7 test1]# ls
eric

基本属性

[root@centos7 /]# ls -ll
总用量 28
lrwxrwxrwx.   1 root root    7 4月  15 22:59 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 4月  15 23:05 boot
drwxr-xr-x.  20 root root 3300 4月  16 14:52 dev
drwxr-xr-x. 145 root root 8192 4月  16 14:52 etc
drwxr-xr-x.   5 root root   44 4月  16 21:59 home
lrwxrwxrwx.   1 root root    7 4月  15 22:59 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 4月  15 22:59 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 4月  11 2018 media
drwxr-xr-x.   2 root root    6 4月  11 2018 mnt
drwxr-xr-x.   2 root root    6 4月  16 15:53 opt
dr-xr-xr-x. 217 root root    0 4月  16 14:52 proc
dr-xr-x---.  14 root root 4096 4月  16 14:54 root
drwxr-xr-x.  42 root root 1260 4月  16 14:53 run
lrwxrwxrwx.   1 root root    8 4月  15 22:59 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 4月  11 2018 srv
dr-xr-xr-x.  13 root root    0 4月  16 14:52 sys
drwxrwxrwt.  20 root root 4096 4月  16 15:46 tmp
drwxr-xr-x.  13 root root  155 4月  15 22:59 usr
drwxr-xr-x.  21 root root 4096 4月  15 23:05 var

第一个字母是d 表示是一个目录 - 则是文件 ,若是 l 表示为链接文档(link file) 相当于快捷方式,后面会有 ->表示指向的是哪个文件, b 则表示为装置文件里面的可供存储的接口设备 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标

接下来的字符中,以三个为一组,且均为 rwx , r代表read,w代表write,x代表execute,这三个权限的位置不会改变,如果没有权限就会出现 [-]。每个文件的属性由左边第一部分10个字符来确定:

第一组为 :属主权限(哪个主人),第二组为属组权限(比如 管理组、游客组,可以自己创建各个组),第三组为其他用户权限

l rwx rwx rwx
d r-x r-x r-x
d rwx r-x r-x
d rwx r-x r-x
d rwx r-x r-x

后面的数字是文件数量 , 第一个root 是 属主(谁创建的),第二个root 代表是哪个用户组(属组) ,后面是大小 ,时间

chgrp 更改文件属组, 一般不改

charp -R 属组名 文件名 -R 递归更改文件属组 一般不会去更改

chown 更改文件属主,也可以同时更改文件属组

chown -R 属主名 文件名

chown -R 属主名 数组名 文件名

chmod 更改文件9个属性(必须要掌握)

chmod -R xyz 文件或目录

常用数字,或者符号

r:4 w:2 x:1 chmod 777 表示属性都有rwx rwx rwx ;chmod 666 rw-rw-rw-

chmod 770 filename

[root@centos7 home]# ls
eric  test1  test2
[root@centos7 home]# ls -ll
总用量 0
drwxr-xr-x. 2 root root  6 4月  16 21:59 eric
drwxr-xr-x. 2 root root  6 4月  16 21:59 test1
drwxr-xr-x. 3 root root 16 4月  16 21:48 test2
[root@centos7 home]# chmod 777 eric
[root@centos7 home]# ll
总用量 0
drwxrwxrwx. 2 root root  6 4月  16 21:59 eric
drwxr-xr-x. 2 root root  6 4月  16 21:59 test1
drwxr-xr-x. 3 root root 16 4月  16 21:48 test2

更改回去

[root@centos7 home]# chmod 755 eric
[root@centos7 home]# ll
总用量 0
drwxr-xr-x. 2 root root  6 4月  16 21:59 eric
drwxr-xr-x. 2 root root  6 4月  16 21:59 test1
drwxr-xr-x. 3 root root 16 4月  16 21:48 test2

文件内容查看

cat : 由第一行开始显示文件内容

tac : 从最后一行开始显示,可以看出tac是cat 倒着写

nl :显示的时候,顺道输出行号

more : 一页一页的显示文件内容

less : 与more 类似,但是比more更好的是,他可以往前翻页

head : 只看头几行

tail 只看尾巴几行

可以使用man 来查看各个命令的使用文档 如:man cp 。

网络配置目录: cd /etc/sysconfig/network-scripts

[root@centos7 /]# cd etc/sysconfig
[root@centos7 sysconfig]# ls
anaconda    ebtables-config   ksm              qemu-ga        samba
atd         fcoe              libvirtd         radvd          saslauthd
authconfig  firewalld         man-db           raid-check     selinux
autofs      grub              modules          rdisc          smartmontools
cbq         init              netconsole       readonly-root  sshd
cgred       ip6tables-config  network          rpcbind        sysstat
chronyd     iptables-config   network-scripts  rpc-rquotad    sysstat.ioconf
console     irqbalance        nfs              rsyncd         virtlockd
cpupower    kdump             ntpd             rsyslog        virtlogd
crond       kernel            ntpdate          run-parts      wpa_supplicant
[root@centos7 sysconfig]# cd network-scripts
[root@centos7 network-scripts]# ls
ifcfg-ens33  ifdown-isdn      ifup          ifup-plip      ifup-tunnel
ifcfg-lo     ifdown-post      ifup-aliases  ifup-plusb     ifup-wireless
ifdown       ifdown-ppp       ifup-bnep     ifup-post      init.ipv6-global
ifdown-bnep  ifdown-routes    ifup-eth      ifup-ppp       network-functions
ifdown-eth   ifdown-sit       ifup-ib       ifup-routes    network-functions-ipv6
ifdown-ib    ifdown-Team      ifup-ippp     ifup-sit
ifdown-ippp  ifdown-TeamPort  ifup-ipv6     ifup-Team
ifdown-ipv6  ifdown-tunnel    ifup-isdn     ifup-TeamPort
​

ifconfig命令查看网络

[root@centos7 network-scripts]# cat ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="14b53c57-65ae-4366-b37e-e77dd6169571"
DEVICE="ens33"
ONBOOT="yes"
​

nl 看行号

[root@centos7 network-scripts]# nl ifcfg-ens33
     1  TYPE="Ethernet"
     2  PROXY_METHOD="none"
     3  BROWSER_ONLY="no"
     4  BOOTPROTO="dhcp"
     5  DEFROUTE="yes"
     6  IPV4_FAILURE_FATAL="no"
     7  IPV6INIT="yes"
     8  IPV6_AUTOCONF="yes"
     9  IPV6_DEFROUTE="yes"
    10  IPV6_FAILURE_FATAL="no"
    11  IPV6_ADDR_GEN_MODE="stable-privacy"
    12  NAME="ens33"
    13  UUID="14b53c57-65ae-4366-b37e-e77dd6169571"
    14  DEVICE="ens33"
​

用more命令查看 +空格键 可翻页 enter代表向下翻一行,在查看文件过程中,用 :f命令,可查看目前的行号配置,

         source "$i"
                                else
                                      source "$i" >& /dev/null
“csh.login”第 38 行
​

只能往下翻

more  csh.login
# /etc/csh.login
​
# System wide environment and startup programs, for login setup
​
if ( ! ${?PATH} ) then
        if ( $uid == 0 ) then
                setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
        else
                setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
        endif
else
        #add sbin directories to the path
        foreach p ( /usr/local/sbin /usr/sbin )
                switch (":${PATH}:")
                case "*:${p}:*":
                        breaksw
                default:
                        if ( $uid == 0

less与more类似,但是比more更好的是,可以往前翻页(空格翻页,上下键代表翻动页面,q为退出命令,查找字符串 / 要查询的字符(向下查询);?要查询的字符串(向上查找);查询出来结果后,用 n 代表继续查询下一个,N向上寻找)

               endsw
        end
endif
​
setenv HOSTNAME `/usr/bin/hostname`
set history=1000
​
/set  或者 ?set
​

head -n 行数 文件 : 只访问固定的几行

[root@centos7 etc]# head -n 20 csh.login
# /etc/csh.login
​
# System wide environment and startup programs, for login setup
​
if ( ! ${?PATH} ) then
        if ( $uid == 0 ) then
                setenv PATH "/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin"
        else
                setenv PATH "/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
        endif
else
        #add sbin directories to the path
        foreach p ( /usr/local/sbin /usr/sbin )
                switch (":${PATH}:")
​

tail -n 20 csh.login 看最后的20行

[root@centos7 etc]# tail -n 20 csh.login
                endsw
        end
endif
​
setenv HOSTNAME `/usr/bin/hostname`
set history=1000
​
if ( -d /etc/profile.d ) then
        set nonomatch
        foreach i ( /etc/profile.d/*.csh /etc/profile.d/csh.local )
                if ( -r "$i" ) then
                                if ($?prompt) then
                                      source "$i"
                                else
                                      source "$i" >& /dev/null
                                endif
                endif
        end
        unset i nonomatch
endif
​

tail -f info.log -f代表循环读取 不停的去读取追踪

监视某文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出

Linux链接的概念

硬链接: A - - B 假设B是A 的硬链接,他们两个指向了同一个文件,允许一个文件拥有多个路径,即使将A删掉,B依然可用;用户可以通过这种机制,建立硬链接到一些重要文件上,防止误删。

软链接:类似Windows下的快捷方式,删除了源文件,快捷方式也访问不了!

创建链接: ln 命令

touch 命令创建一个文件;

 直接给f1 link一个硬链接f2 : ln  f1  f2 ;

Linux笔记整理_第1张图片

 给f1创建一个符号(软)链接f3: ln -s f1 f3   颜色会有区别  ,

Linux笔记整理_第2张图片

 echo 输入字符串,在源文件中写入字符串  echo "****" >> f1 

Linux笔记整理_第3张图片

源文件中发生改变,链接文件一样的会有改变,如果删除源文件f1 ,硬链接 f2还在,软链接f3已经标红失效了

 Linux笔记整理_第4张图片

 VIM编辑器

vi 的升级版 vim ; vim通过一些插件可以实现和IDE一样的功能 (查看内容,编辑内容,保存内容) 如果这个文件不存在则会新建一个这个名字的文件,如果存在则会直接进入此文件

三种使用模式:

1.命令模式 (Command mode) :

可以通过vi / vim直接创建一个文件,并且会进去

[root@centos7 /]# cd home
[root@centos7 home]# vim practic.txt

i 切换到输入模式,以输入字符

x 删除当前光标所在处的字符

切换到底线命令模式,以在最底一行输入命令,如果是编辑模式,需要先按ESC键退出编辑模式

2.输入模式 (Insert mode) :

hello World!! Command mode!!
按了i键后,左下角会变为insert模式,就可以在这里面进行内容编辑
~
~
​

在输入模式中 正常的一些文本输入操作是可以的

3.底线命令模式 (Last line mode) :

在底线命令模式之下,q键为退出程序,w 保存文件 ,保存并退出为 wq 或者 ! ESC可退出底线命令模式

[root@centos7 home]# vim practice.txt
[root@centos7 home]# cat practice.txt
hello World!! Command mode!!
按了i键后,左下角会变为insert模式,就可以在这里面进行内容编辑
​
[root@centos7 home]#
[root@centos7 home]# cat practice.txt
hello World!! Command mode!!
了i键后,左下角会变为insert模式,就可以在这里面进行内容编
保存退出除了用wq,还可以用x退出。

[root@centos7 home]#

:set nu 显示行号,设定之后,会在每一行的前缀显示该行行号

:set nonu 与set nu 相反,为取消行号

数字 + Space 键 :横向快捷切换光标,数字为字符数

数字 + Enter 键:光标向下移动 n 行

/ +字符 向光标之下寻找某个字符串,通过 n 和 N进行向后 或者向上搜寻动作

?+字符 向光标之上寻找某个字符串

u 复原上一个动作,撤销之前的步骤

[Ctrl] + r 重做上一个动作

 添加一个用户
[root@centos7 home]# useradd -m xie
[root@centos7 home]# ls
eric  f2  practice.txt  test1  test2  xie
[root@centos7 home]#
删除用户 且目录页一起删除
[root@centos7 home]# userdel -r xie
[root@centos7 home]# ls
eric  f2  practice.txt  test1  test2
[root@centos7 home]# cat /etc/passwd

修改用户

usermod

[root@centos7 home]# ls
eric  lina  practice.txt  test1  test2
[root@centos7 home]# usermod -d /home/233 lina
修改完毕之后查看配置文件即可 

虽然没有233文件,但是查看etc配置还是修改成功了的。

通过 usermod -d /home/lina lina   修改命令将lina用户移回原来的位置,选择此用户,

su lina : 通过切换用户的命令,会发现有变化,$表示普通用户的权限 如图,exit可退出此用户

[root@centos7 home]# ls
eric  lina  practice.txt  test1  test2
[root@centos7 home]# su lina
[lina@centos7 home]$
[lina@centos7 home]$ exit
exit
[root@centos7 home]# ls
eric  lina  practice.txt  test1  test2
[root@centos7 home]#

 通过hostname 查看当前用户名  ,hostname +名字 :修改主机名
[root@centos7 home]# hostname
centos7
[root@centos7 home]# hostname TRUMP
[root@centos7 home]# hostname
TRUMP

磁盘管理

df (列出文件系统整体的磁盘使用量) df -h 显示容量单位为M

[root@centos7 /]# df
文件系统                       1K-块    已用     可用 已用% 挂载点
devtmpfs                      914476       0   914476    0% /dev
tmpfs                         931500       0   931500    0% /dev/shm
tmpfs                         931500   10436   921064    2% /run
tmpfs                         931500       0   931500    0% /sys/fs/cgroup
/dev/mapper/centos_192-root 17811456 5199640 12611816   30% /
/dev/sda1                    1038336  189040   849296   19% /boot
tmpfs                         186300      12   186288    1% /run/user/42
tmpfs                         186300       0   186300    0% /run/user/0
[root@centos7 /]# df -h
文件系统                     容量  已用  可用 已用% 挂载点
devtmpfs                     894M     0  894M    0% /dev
tmpfs                        910M     0  910M    0% /dev/shm
tmpfs                        910M   11M  900M    2% /run
tmpfs                        910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos_192-root   17G  5.0G   13G   30% /
/dev/sda1                   1014M  185M  830M   19% /boot
tmpfs                        182M   12K  182M    1% /run/user/42
tmpfs                        182M     0  182M    0% /run/user/0

du(检查磁盘空间使用量)du -a 可看到隐藏的 及子文件夹

[root@centos7 home]# du
0       ./test1
0       ./test2
0       ./eric
4       .
[root@centos7 home]# du -a
0       ./test1
0       ./test2
0       ./eric
4       ./practice.txt
4       .

du -sm /* 检查根目录下每个目录所占用的容量

[root@centos7 /]# du  -sm /*
0       /bin
153     /boot
0       /dev
46      /etc
1       /home
0       /lib
0       /lib64
0       /media
0       /mnt
0       /opt
du: 无法访问"/proc/3703/task/3703/fd/3": 没有那个文件或目录
du: 无法访问"/proc/3703/task/3703/fdinfo/3": 没有那个文件或目录
du: 无法访问"/proc/3703/fd/3": 没有那个文件或目录
du: 无法访问"/proc/3703/fdinfo/3": 没有那个文件或目录
0       /proc
5       /root
11      /run
0       /sbin
0       /srv
0       /sys
1       /tmp
3980    /usr
945     /var

使用Linux挂载我们的一些本地磁盘或者文件

挂载:mount /dev/w /mnt/w 将外部设备 w 挂载到我们的mnt目录下来实现访问

卸载:umount (-f 强制卸载 )+挂载位置

如果装了JDK,可以使用java中的一些命令来查看信息

进程管理

1.在Linux中,每一个程序都有自己的一个进程,每一个进程都有一个id号!

2.每个一个进程都会有一个父进程!

3.进程可以有两种存在方式:前台!后台运行!

4.一般的话服务都是后台运行的,基本的程序都是前台运行的

命令:

ps 查看当前系统中正在执行的各种进程的信息!

ps  -**:   

   -a 显示当前终端运行的所有的进程信息(包括其他用户的进程)

   -u 用户以及其他详细信息

   -x 显示后台运行进程的参数!

# 查看所有的进程
ps -aux|grep mysql   
ps -aux|grep java
# | 管道符 ,A|B 可以将A命令的结果作为输出 来操作B命令
# grep 过滤,查找文件中符合条件的字符串!

ps -xx | grep 进程名!过滤进程信息!

ps -ef:可以查看到父进程的信息

例如:ps -ef|grep mysql 查看父进程我们一般可以通过目录树结构来查看!

进程树

pstree -p:显示父id -u:显示用户组

结合用:pstree -pu

[root@centos7 /]# pstree -pu
systemd(1)─┬─ModemManager(706)─┬─{ModemManager}(710)
           │                   └─{ModemManager}(726)
           ├─NetworkManager(847)─┬─dhclient(3238)
           │                     ├─{NetworkManager}(852)
           │                     └─{NetworkManager}(857)
           ├─VGAuthService(733)
           ├─abrt-watch-log(697)
           ├─abrt-watch-log(700)
           ├─abrtd(693)
           ├─accounts-daemon(722)─┬─{accounts-daemon}(734)
           │                      └─{accounts-daemon}(739)
           ├─alsactl(724)
           ├─at-spi-bus-laun(1694,gdm)─┬─dbus-daemon(1699)───{dbus-daemon}(1700)
           │                           ├─{at-spi-bus-laun}(1695)
           │                           ├─{at-spi-bus-laun}(1696)
           │                           └─{at-spi-bus-laun}(1698)
           ├─at-spi2-registr(1703,gdm)─┬─{at-spi2-registr}(1704)
           │                           └─{at-spi2-registr}(1705)
           ├─atd(1189)
           ├─auditd(661)─┬─audispd(663)─┬─sedispatch(665)
           │             │              └─{audispd}(666)
           │             └─{auditd}(662)
           ├─avahi-daemon(728,avahi)───avahi-daemon(745)
           ├─boltd(1789)─┬─{boltd}(1792)
           │             └─{boltd}(1798)
           ├─colord(1888,colord)─┬─{colord}(1898)
           │                     └─{colord}(1902)
           ├─crond(1185)
           ├─cupsd(1169)
           ├─dbus-daemon(1690,gdm)───{dbus-daemon}(1691)
           ├─dbus-daemon(708,dbus)───{dbus-daemon}(714)
           ├─dbus-launch(1689,gdm)

结束进程:杀掉进程,等价于windows结束任务!

kill -9 进程id   如果java代码死循环了,既可以结束进程,可强制结束该进程!

环境安装

安装软件一般三种方式:rpm(jdk:在线发布一个SpringBoot项目) 、解压缩(tomcat启动并通过外网访问,发布网站)、yum在线安装(docker:直接安装运行)

jdk安装:

1.下载JDK rpm去

[root@centos7 eric]# ls
jdk-18_linux-x64_bin.rpm  jdk-8u51-linux-x64.tar.gz
​

2.安装java环境

1.检测当前系统是否存在java环境 java -version

[root@centos7 eric]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
​

如果有可以卸载

rpm -qa|grep jdk 检测jdk版本信息

rpm -e --nodeps jdk** 卸载

[root@centos7 eric]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
[root@centos7 eric]# rpm -qa|grep jdk
java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64
java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64
java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64
java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
copy-jdk-configs-3.3-10.el7_5.noarch
[root@centos7 eric]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
[root@centos7 eric]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64
[root@centos7 eric]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64
[root@centos7 eric]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64
[root@centos7 eric]#
[root@centos7 eric]# java -version
-bash: /usr/bin/java: 没有那个文件或目录
[root@centos7 eric]#

rpm -ivh rpm包 安装

[root@centos7 eric]# rpm -ivh jdk-18_linux-x64_bin.rpm
警告:jdk-18_linux-x64_bin.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID ec551f03: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:jdk-18-2000:18.0.1-ga            ################################# [100%]
[root@centos7 eric]# java -version
java version "18.0.1" 2022-04-19
Java(TM) SE Runtime Environment (build 18.0.1+10-24)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.1+10-24, mixed mode, sharing)

配置环境变量!

view  /etc/profile

root@centos7 /]# cd usr
[root@centos7 usr]# ls
bin  etc  games  include  java  lib  lib64  libexec  local  sbin  share  src  tmp
[root@centos7 usr]# cd java
[root@centos7 java]# ls
default  jdk-18.0.1  latest
[root@centos7 java]# cd jdk-18.0.1/
[root@centos7 jdk-18.0.1]# ls

配置环境变量路径 在文件末尾插入 JAVA的配置 export导出

unset i
unset -f pathmunge

JAVA_HOME=/usr/java/jdk-18.0.1
CLASSPATH=%JAVA_HOME%/lib;%JAVA_HOME%/jre/lib
export  CLASSPATH JAVA_HOME

保存退出!可以强制保存退出

让配置文件生效!命令 source /etc/profile

查看java版本 及是否有java命令

[root@centos7 eric]# java -version
java version "18.0.1" 2022-04-19
Java(TM) SE Runtime Environment (build 18.0.1+10-24)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.1+10-24, mixed mode, sharing)
[root@centos7 eric]# java
用法:java [options] <主类> [args...]
           (执行类)
   或  java [options] -jar  [args...]
           (执行 jar 文件)
   或  java [options] -m <模块>[/<主类>] [args...]
       java [options] --module <模块>[/<主类>] [ar

查看防火墙状态:systemctl status firewalld

开启防火墙服务:service firewalld start

重启:service firewalld restart

关闭:service firewalld stop

查看防火墙规则 :firewall-cmd --list-all  查看全部信息 firewall-cmd --list-ports 查看端口信息

开启端口:firewall-cmd --zone=public --add-port=80/tcp --permanent

[root@centos7 /]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
success
[root@centos7 /]# systemctl restart firewalld.service

重启防火墙:systemctl restart firewalld.service

--zone :作用域  --add-port=80/tcp 添加端口格式为:端口/通讯 协议 添加完后要重启防火墙

--permanent 永久生效,没有此参数重启后会失效

将打包好的java项目进行运行:

[root@centos7 eric]# ls
jdk-18_linux-x64_bin.rpm  jdk-8u51-linux-x64.tar.gz  snakeGame.jar
[root@centos7 eric]# java -jar snakeGame.jar

如果是后台运行 则用 nohup 代表后台执行程序

Tomcat安装

如果有war包需要放到tomcat中运行

1.下载tomcat  apache-tomcat-10.0.20.tar.gz

2.解压这个文件 : tar -zxvf  apache-tomcat-10.0.20.tar.gz

[root@centos7 eric]# ls
apache-tomcat-10.0.20.tar.gz  jdk-8u51-linux-x64.tar.gz
jdk-18_linux-x64_bin.rpm      snakeGame.jar
[root@centos7 eric]# tar -zxvf apache-tomcat-10.0.20.tar.gz

[root@centos7 eric]# ls
apache-tomcat-10.0.20         jdk-18_linux-x64_bin.rpm   snakeGame.jar
apache-tomcat-10.0.20.tar.gz  jdk-8u51-linux-x64.tar.gz

解压完成后多了一个tomcat蓝色的目录;

3.启动tomcat测试!windows里面是.bat文件,linuxs 是 .sh文件;

执行:./startup.sh     停止:. /shotdown.sh

进入tomcat的bin目录 找到文件 进行启动:

[root@centos7 eric]# cd apache-tomcat-10.0.20
[root@centos7 apache-tomcat-10.0.20]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@centos7 apache-tomcat-10.0.20]# cd bin
[root@centos7 bin]# ls
bootstrap.jar                 configtest.bat  migrate.sh        tomcat-native.tar.gz
catalina.bat                  configtest.sh   setclasspath.bat  tool-wrapper.bat
catalina.sh                   daemon.sh       setclasspath.sh   tool-wrapper.sh
catalina-tasks.xml            digest.bat      shutdown.bat      version.bat
ciphers.bat                   digest.sh       shutdown.sh       version.sh
ciphers.sh                    makebase.bat    startup.bat
commons-daemon.jar            makebase.sh     startup.sh
commons-daemon-native.tar.gz  migrate.bat     tomcat-juli.jar
[root@centos7 bin]# ./startup.sh
Using CATALINA_BASE:   /home/eric/apache-tomcat-10.0.20
Using CATALINA_HOME:   /home/eric/apache-tomcat-10.0.20
Using CATALINA_TMPDIR: /home/eric/apache-tomcat-10.0.20/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/eric/apache-tomcat-10.0.20/bin/bootstrap.jar:/home/eric/apache-tomcat-10.0.20/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

显示启动成功!

如果防火墙8080端口开了,这个时候可以直接访问  在浏览器中可以直接访问 服务器的tomcat

Linux笔记整理_第5张图片

 Docker(yum安装)

官网安装参考手册:https://docs.docker.com/engine/install/centos/

yum在线安装:

1.检测centos 版本

[root@centos7 /]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

2.安装我们的准备环境

yum -y install 包名   #yum  install 在线安装命令, -y 所有提示都选y
yum -y install gcc  
yum -y install gcc-c++

分别运行 yum -y install gcc 和 yum -y install gcc-c++后,

3.卸载以前的docker,官网有命令:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
[root@centos7 eric]# yum install -y yum-utils
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.nju.edu.cn
 * extras: mirrors.163.com
 * updates: mirrors.cqu.edu.cn
软件包 yum-utils-1.1.31-54.el7_8.noarch 已安装并且是最新版本
无须任何处理

4.安装yum-utils(管理repository及扩展包的工具,可提供yum操作性能)

也可用 sudo yum install -y yum-utils  

sudo是linux系统管理指令,是让普通用户具体系统管理员的权限执行操作。

Yum(全称为 Yellow dog Updater, Modified)是一个RedHat以及CentOS中的Shell软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

5.设置docker 安装镜像

sudo yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo

[root@centos7 bin]# yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@centos7 bin]#

6.安装docker-ce ( CE- Community Edition是社区版)

sudo yum -y install docker-ce docker-ce-cli containerd.io

7.启动docker  并查看进程

sudo systemctl start docker

[root@centos7 bin]# systemctl start docker
[root@centos7 bin]# ps -ef|grep docker
root      11726      1  0 16:05 ?        00:00:00 /usr/bin/dockerd -H fd:// --containe      rd=/run/containerd/containerd.sock
root      11899   5808  0 16:05 pts/1    00:00:00 grep --color=auto docker

8.检查docker版本  docker -v  及 docker version

[root@centos7 bin]# docker -v
Docker version 20.10.14, build a224086
[root@centos7 bin]# docker version
Client: Docker Engine - Community
 Version:           20.10.14
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        a224086
 Built:             Thu Mar 24 01:49:57 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.14
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       87a90dc
  Built:            Thu Mar 24 01:48:24 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.11
  GitCommit:        3df54a852345ae127d1fa3092b95168e4a88e2f8
 runc:
  Version:          1.0.3
  GitCommit:        v1.0.3-0-gf46b6ba
 docker-init:
  Version:          0.19.0

9.测试 hello-world

[root@centos7 bin]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:10d7d58d5ebd2a652f4d93fdd86da8f265f5318c6a73cc5b6a9798ff6d2b2e67
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

docker 的镜像: docker images

[root@centos7 bin]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   7 months ago   13.3kB

10.可设置docker自启动

sudo systemctl enable docker

用docker安装mysql

拉取最新的mysql

​​​​​​​[root@centos7 bin]# docker pull mysql
[root@centos7 bin]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
4be315f6562f: Pull complete
96e2eb237a1b: Pull complete
8aa3ac85066b: Pull complete
ac7e524f6c89: Pull complete
f6a88631064f: Pull complete
15bb3ec3ff50: Pull complete
ae65dc337dcb: Pull complete
654aa78d12d6: Pull complete
6dd1a07a253d: Pull complete
a32905dc9e58: Pull complete
152d41026e44: Pull complete
42e0f73ebe32: Pull complete
Digest: sha256:fc77d54cacef90ad3d75964837fad0f2a9a368b69e7d799665a3f4e90e600c2d
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
[root@centos7 bin]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         latest    f2ad9f23df82   2 days ago     521MB
hello-world   latest    feb5d9fea6a5   7 months ago   13.3kB

启动运行mysql镜像,docker run 用于启动一个容器

docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql

启动mysql

[root@centos7 bin]# docker start mysql
mysql

查看docker启动的服务

[root@centos7 bin]# docker  ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS                                                  NAMES
0f48c76edb01   mysql     "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

sudo docker exec -it mysql bash 进入容器

[root@centos7 bin]# docker exec -it mysql bash
root@0f48c76edb01:/# ls
bin   docker-entrypoint-initdb.d  home   media  proc  sbin  tmp
boot  entrypoint.sh               lib    mnt    root  srv   usr
dev   etc                         lib64  opt    run   sys   var

登录  mysql -uroot -proot

root@0f48c76edb01:/# mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

可设置开机自启动

docker update mysql --restart=always

用sqlyog去连接服务器的mysql

Linux笔记整理_第6张图片

你可能感兴趣的:(java基础知识点,java,centos,linux)