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 ;
给f1创建一个符号(软)链接f3: ln -s f1 f3 颜色会有区别 ,
echo 输入字符串,在源文件中写入字符串 echo "****" >> f1
源文件中发生改变,链接文件一样的会有改变,如果删除源文件f1 ,硬链接 f2还在,软链接f3已经标红失效了
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 或者 x ! 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
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