Linux系统安装管理-Live Writer

1. Linux通用

1.1. 时间设置

sudo apt-get -y install ntpdate

sudo cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

sudo ntpdate time1.aliyun.com

1.2. 网络-端口占用

Linux查看程序端口占用情况 netstat -apn | grep 8005

netstat -apn | grep 8005

Linux查看程序端口占用情况

今天发现服务器上Tomcat 8080端口起不来,老提示端口已经被占用。

使用命令:

ps -aux | grep tomcat

发现并没有8080端口的Tomcat进程。

使用命令:netstat –apn

查看所有的进程和端口使用情况。发现下面的进程列表,其中最后一栏是PID/Program name

发现8080端口被PID为9658的Java进程占用。

进一步使用命令:ps -aux | grep java,或者直接:ps -aux | grep pid 查看

就可以明确知道8080端口是被哪个程序占用了!然后判断是否使用KILL命令干掉!

方法二:直接使用 netstat   -anp   |   grep  portno

即:netstat –apn | grep 8080

linux的nginx停止命令一、从容停止

1、查看进程号

[root@LinuxServer ~]# ps -ef|grep nginx

2、杀死进程

[root@LinuxServer ~]# kill -QUIT 2072

linux的nginx停止命令二、快速停止

1、查看进程号

[root@LinuxServer ~]# ps -ef|grep nginx

2、杀死进程

[root@LinuxServer ~]# kill -TERM 2132

或 [root@LinuxServer ~]# kill -INT 2132

2. centos/redhat安装

2.1. 系统安装
2.1.1. 参考资料

https://www.cnblogs.com/haoliyou/p/7694868.html

2.1.2. 系统说明

centOS7没有32位版本,32位最高只能安装6.x。

一般是安装64位的,才能访问大于4G的内存,学习培训可使用32位的也没关系。

生产服务器建议安装CentOS-7-x86_64-Minimal-1611.iso版本

安装包选择:

CentOS-6.7-i386-LiveCD.iso 692M 07-Aug-2015 16:23

CentOS-6.7-i386-LiveDVD.iso 2G 07-Aug-2015 16:24 运行在内存的系统 一般用于体验 修改

CentOS-6.7-i386-bin-DVD1.iso 4G 04-Aug-2015 21:50 安装系统(包含大量软件)

CentOS-6.7-i386-bin-DVD2.iso 1G 04-Aug-2015 21:50 安装软件

CentOS-6.7-i386-minimal.iso 350M 04-Aug-2015 21:53 最小安装系统 需要的软件可以通过yum安装二进制包

CentOS-6.7-i386-netinstall.iso 187M 04-Aug-2015 21:44 网络安装方法

CentOS-7.0-1406-x86_64-DVD.iso              标准安装版,一般下载这个就可以了

CentOS-7.0-1406-x86_64-NetInstall.iso       网络安装镜像

CentOS-7.0-1406-x86_64-Everything.iso       对完整版安装盘的软件进行补充,集成所有软件。

CentOS-7.0-1406-x86_64-GnomeLive.iso        GNOME桌面版

CentOS-7.0-1406-x86_64-KdeLive.iso          KDE桌面版

CentOS-7.0-1406-x86_64-livecd.iso           光盘上运行的系统,类拟于winpe

(1)CentOS-xxxx-LiveCD.ios 和CentOS-xxxx-bin-DVD.iso有什么区别?前者只有700M,后者有3.8G。其差别不仅仅在大小上,其更本质的差别是,CentOS-xxxx-LiveCD.ios只能加载到内存里运行,不能安装,一般用于维护。CentOS-xxx-bin-DVD1.iso才可以安装到硬盘上。

(2)CentOS-xxx-bin-DVD1.iso,CentOS-xxx-bin-DVD2.iso分别是干什么的?前者是3.8G,后者是500M。其差别是DVD1是CentOS的安装文件,DVD2是CentOS的一些软件(就简单实用CentOS来说是不需要的)。

哪个版本:

当我们下载CentOS 7 时会发现有几个版本可以选择,如下:

1、CentOS-7-DVD版本:DVD是标准安装盘,一般下载这个就可以了。

2、CentOS-7-NetInstall版本:网络安装镜像。

3、CentOS-7-Everything版本:对完整版安装盘的软件进行补充,集成所有软件。

4、CentOS-7-GnomeLive版本:GNOME桌面版。

5、CentOS-7-KdeLive版本:KDE桌面版。

6、CentOS-7.0-livecd版本:光盘上运行的系统,类拟于winpe

稳定性:

CentOS 6.6和CentOS 7都很稳定,就像Windows XP和Windows 7一样,只是应用软件的兼容性有所不同,有些软件只能在6上运行,有些软件只能在7上运行。6的支持只到2020年,7的支持会到2024年。但是如果你已经安装了6,就地升级7是不行的,会有很大问题,所以从一开始就要选择好。7里最大的特色是增加了systemd,具体特点可以百度。

centos6支持时间:2020

centos7支持时间:2024

2.1.3. 下载系统文件

访问其官网,https://www.centos.org/,点击Get CentOS Now,点击alternative downloads,点击CentOS 7列表中的x86_64,点击http://mirrors.163.com/centos/7/isos/x86_64/,里边有几个不同的版本。其中这两个比较常用。其他的可以查看0_README.txt中查看各版本的区别。

• CentOS-7-x86_64-DVD-1611.iso :此镜像包含所有系统需要的软件安装包

• CentOS-7-x86_64-Minimal-1611.iso :最小的安装包,只有必要的软件

2.1.4. 加载系统安装盘

wps7E9D.tmp

第一行Install CentOS Linux 7的作用是安装CentOS 7系统。

第二行Test this media & install CentOS Linux 7,是先检测安装镜像文件的可用性,然后再安装CentOS 7。

第三行Troubleshooting用于处理一些故障问题,选择这一项,会进入一个内存操作系统,然后可以把磁盘上的系统挂载到这个内存操作系统上,这样方便我们去处理一些问题。

这里安装系统选择第一项,然后回车。

2.1.5. 安装配置

日期和时间选择亚洲深圳、上海或香港。

安装语言可以选择中文或英文。

键盘选择汉语(欧洲、日本键盘与中文键盘有差异)

英文语言

wps7E9E.tmp

中文语言

wps7E9F.tmp

2.1.6. 磁盘分区

磁盘分区使用默认分区。也可以自定义手动分区。

划分磁盘分区的规则,如果有要求就按要求来。如果没有就按照如下规则。

• /boot分区200M

• swap分区分内存的两倍,最多分8G,因为分多了也是浪费磁盘空间。

• /分区分20GB

• 剩余的空间给/data分区或/分区或其它分区。

2.1.7. 软件安装

软件选择可以选择控制台模式的最小安装(Minimal Install)或界面安装(GNOME Desktop),右栏可以不用选。

wps7EAF.tmp

wps7EB0.tmp

开始安装,并设置root密码和增加用户

wps7EB1.tmp

2.2. 软件与服务配置
2.2.1. 软件安装管理

红帽系列中,进行软件安装可以有三种方法,编译安装,rpm包安装,和yum源安装。其中yum方法安装最简单,因为它可以自动解决软件包之间的依赖关系

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

2.2.1.1. rpm安装

rpm源:

系统光驱

挂载系统光驱,然后在桌面或/run/media/oracle/路径下可找到光盘文件,包的详细路径为:

/run/media/oracle/CentOS 7 x86_64/Packages

网络下载

在线下载

rpm安装方法:

#rpm -ivh ksh-20120801-137.el7.x86_64.rpm

2.2.1.2. yum源

yum源可以来源于多种文件服务器:

http://

https://

ftp://

file:// 本地文件

yum源国内镜像站点:

阿里源 https://mirrors.aliyun.com/centos/7.3.1611/os/x86_64/

清华大学https://mirror.tuna.tsinghua.edu.cn/centos/7.3.1611/os/x86_64/

网易源http://mirrors.163.com/centos/7.3.1611/os/x86_64/

浙江大学http://mirrors.zju.edu.cn/centos/7.3.1611/os/x86_64/

注意:有repodata的目录的子目录为yum源的路径

2.2.1.3. yum源配置

配置说明:

#cat /etc/yum.conf

wps7EB2.tmp

在yum配置文件中的最后一行,有以下说明,意思是:让你的repo放在/etc/yum.repo.d目录中,并且以.repo结尾

配置项说明:

cachedir=/var/cache/yum/$basearch/$releasever #yum下载后的缓存目录

keepcache=0    #是否缓存,0为不缓存,1为缓存

debuglevel=2

logfile=/var/log/yum.log  #yum的安装日志

exactarch=1

obsoletes=1

gpgcheck=1  #默认是否进行gpg校验,0为不校验,1校验

plugins=1

installonly_limit=5

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum

distroverpkg=centos-release

配置步骤:

1.先切换到yum源中的配置目录cd /etc/yum.conf.d/
2.因为默认的yum源是CentOS-Base.repo,可以在此文件中修改,也可以将他修改后缀名,这里就修改后缀名吧

mv /etc/yum.conf.d/CentOS-Base.repo /etc/yum.conf.d/CentOS-Base.repo.bak

3.新建一个repo文件,命名为CentOS7.repo,如下配置:

[CentOS7-base]   #源名称[reponame],必填

name=CentOS-$releasever-base  #源描述,可以不填,但是会有提示

baseurl=file:///misc/cd/      #本地的光盘文件,可以有多个地址。必填

        https://mirrors.aliyun.com/centos/7.3.1611/os/x86_64/

gpgcheck=1                    #是否开启校验,在yum.conf中已经定义它默认值为1

enabled=1                     #是否禁用此yum源,默认为1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#如果开启yum源包校验,则需要导入RPM公钥

#相当于rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[aliyun_epel]   #这是Redhat的扩展包

name=ailiyun_yum_epel

baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64

gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7

gpgcheck=1

所以,在配置yum源时候,最少只需要两行即可,[reponame]和baseurl:

yum源配置脚本:

#!/bin/bash

#

SHELL_HOME=`cd $RELATIVE_PATH;pwd`

cd /etc/yum.repos.d/

mv CentOS-Base.repo CentOS-Base.repo.backup

cp ${SHELL_HOME}/CentOS-Base-zju.repo CentOS-Base.repo

sed -i 's/enabled=1/enabled=0/g' /etc/yum/pluginconf.d/fastestmirror.conf

yum makecache

yum update -y

2.2.1.4. 使用光盘做为yum源

挂载光盘。

进入/etc/yum.repos.d/目录,备份所有.repo文件到/etc/yum.repos.d/bak目录,并复制一份CentOS-Media.repo到/etc/yum.repos.d/目录,并修改包地址和使能操作,具体如下。

[c7-media]

name=CentOS-$releasever - Media

baseurl=file:///run/media/oracle/CentOS\ 7\ x86_64/

gpgcheck=1

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

输入命令#yum repolist,查看yum仓库配置报告正常,表示已经可以使用以安装光盘配置的yum仓库了

[root@localhost yum.repos.d]# yum repolist

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

c7-media                                                                                                                                        | 3.6 kB  00:00:00    

repolist: 3,971

安装一个软件试试:

[root@localhost yum.repos.d]# yum install samba

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

Resolving Dependencies

--> Running transaction check

---> Package samba.x86_64 0:4.7.1-6.el7 will be installed

--> Processing Dependency: samba-libs = 4.7.1-6.el7 for package: samba-4.7.1-6.el7.x86_64

--> Processing Dependency: samba-common-tools = 4.7.1-6.el7 for package: samba-4.7.1-6.el7.x86_64

---> Package pytalloc.x86_64 0:2.1.10-1.el7 will be installed

--> Finished Dependency Resolution

Total                                                                                                                                  2.8 MB/s | 1.4 MB  00:00:00    

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  Installing                                                                                                                   

Complete!

2.2.1.5. yum命令
yum命令选项

· --nogpgcheck:禁止进行gpgcheck

· -y: 自动回答为“yes”

· -q:静默模式

· --disablerepo=repoidglob:临时禁用此处指定的repo

· --enablerepo=repoidglob:临时启用此处指定的repo

· --noplugins:禁用所有插件

yum源列表

· yum repolist [all|enabled|disabled]:显示仓库列表

· yum grouplist:显示包组

· yum list {available|installed|updates} :显示包列表

· yum list vsftpd* 显示和vsftpd匹配的包

yum安装卸载

· yum install package

· yum restall package:重做

· yum update package:更新包

· yum check-update

· yum remove package1 [package2]

包组的安装基本和包的安装类似,只是在install,restall等操作前加上group即可。比如:yum -y groupinstall "Development Tools",如果有空格,要使用双引号包括。

yum查询

· yum info 查看程序包信息

· yum provides feature1

· yum search xxx :搜索带有某个关键字的安装包

yum 缓存

· yum makecache :构建缓存

· yum clean all:清除所有缓存

yum 历史

yum history:显示yum操作历史,是按照/var/log/yum.log进行的查找
yum history info 6查看第六条信息
yum history undo 6:撤销第六步,如果第六步是安装,则执行此命令,将删除第六步所安装的程序,。如果第六步是卸载,那么执行此命令,则进行安装卸载掉的程序
yum history redo 6:重做第六步

2.2.2. 基础应用环境

常用软件

yum install -y bind-utils traceroute wget man sudo ntp ntpdate screen patch make gcc gcc-c++ flex bison zip unzip ftp --skip-broken

防火墙

 防火墙设置:setup命令进入设置中,将fire wall中samba放开。

 设置SeLinux: setenforce Permissive

1 永久方法 – 需要重启服务器修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。

2 临时方法 – 设置系统参数使用命令setenforce 0附:setenforce 1 设置SELinux 成为enforcing模式setenforce 0 设置SELinux 成为permissive模式

  注:防火墙、SeLinux设置很重要,当你配置的samba共享不能访问时,要注意检查这两项。

解压缩

yum install –y unzip //解压缩工具

下载

yum install wget //从网络上自动下载文件的工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载

远程登录SSH

默认安装,可以直接SSH协议远程登录。

文件管理

yum -y install  vsftp

文件共享samba

A、检测安装了没有,如果安装了会打印版本信息:rpm -qa | grep samba

安装Samba服务端:yum -y install samba

安装Samba客户端: yum -y install samba-client

B、samba配置共享目录(例:将/home/share文件共享)

#vi /etc/samba/smb.conf

[share]       

workgroup = wheel       

netbios name = share       

path = /home/share       

browseable = yes       

writeable = yes

[qgtg]

  comment = qgtg share content

  path = /qgtg

  public = no

  writable = yes

  create mask = 0777

  directory mask = 0775

  available = yes

  browseable = yes

C、添加samba账号:smbpasswd –a share 之后两次输入密码

D、/etc/rc.d/init.d/smb start 或者 service smb restart 重启samba服务

2.2.3. 开发环境

yum install vim //强大的Vi编辑器,类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性

yum -y install  man

yum install gcc //一套由GNU工程开发的支持多种编程语言的编译器

yum install cpp

yum install gcc-c++

yum install make //makefile

yum install gdb //调试工具

yum -y install python //python脚本语言开发运行环境

2.2.4. 修改主机名

#hostnamectl set-hostname  compute1

2.2.5. 界面配置

桌面现在主要有两种,kde和gnome。kde适合客户端,装了很多应用,操作起来像Windows一样,gnome适合服务器端,更精简一些。

kde安装命令:

#yum -y groupinstall "X Window System" "Fonts" "Desktop"

gnome安装命令:

#yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

#yum groupinstall -y "GNOME Desktop"

图形界面切换:

图形界面切换到命令行模式:终端,输入init 3,然后输入用户的密码,从而关闭图形服务。

命令行模式切换到图形界面:输入init 5。

2.2.6. 网络设置

查看网络IP:#ip addr 或 #ifconfig

查看网络路由:#ip route show 或 #ifconfig

service network restart   #重启网络

ping www.baidu.com  #测试网络是否正常

修改网卡名:

CentOS 7.x系统中网卡命名规则被重新定义,可能会是”ifcfg-ens33”等,下面我们把网卡改为ifcfg-eth0这种。

       1、cd  /etc/sysconfig/network-scripts/

        mv  ifcfg-ens33  ifcfg-eth0  #修改名称

vi  ifcfg-eth0  #编辑

NAME=eth0   #修改

DEVICE=eth0   #修改

:wq! #保存退出

wps7EB3.tmp

2、vi /etc/sysconfig/grub  #编辑

  在”GRUB_CMDLINE_LINUX“变量中添加一句”net.ifnames=0 biosdevname=0“

3、运行命令:grub2-mkconfig -o /boot/grub2/grub.cfg  #重新生成grub配置并更新内核参数

4、添加udev的规则

  在”/etc/udev/rules.d“目录中创建一个网卡规则”70-persistent-net.rules“,并写入下面的语句:

SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="00:0c:29:1e:a3:77",ATTR{type}=="1" ,KERNEL=="eth*",NAME="eth0"

#ATTR{address}=="00:0c:29:1e:a3:77"是网卡的MAC地址

cd  /etc/udev/rules.d

vi  70-persistent-net.rules   #添加

SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="00:0c:29:1e:a3:77",ATTR{type}=="1" ,KERNEL=="eth*",NAME="eth0"

wps7EB4.tmp

shutdown -r now  #重启系统

  网卡已经更改为eth0

2.2.6.1. 动态网络设置

输入命令dhclient,让CentOS 7自动获取一个IP地址。正常情况下是不会有任何输出内容的。

输入命令ip addr,查看IP地址。注意英文字母的大小写,Linux系统是区分大小写的。

wps7EB5.tmp

可以看到,这台机器有两个IP地址。第一个地址127.0.0.1是回环地址,网卡名叫lo,Windows操作系统也有该地址,用来自己和自己通信。第二个地址是192.168.183.129,就是刚刚自动获取的IP地址,其中ens33是网卡的名字。

自动获取IP地址后,测试一下是否可以联网(centos能联网的前提是你的物理机可以联网)。输入ping -c 4 www.baidu.com。运行结果如图所示

wps7EC6.tmp

2.2.6.2. 静态网络设置

说明:CentOS 7.x默认安装好之后是没有自动开启网络连接的,所 以需要我们自己配置。

在命令行输入#vi  /etc/sysconfig/network-scripts/ifcfg-ens33  #编辑配置文件,添加修改或添加以下内容。
   BOOTPROTO=static#启用静态IP地址
ONBOOT=yes  #开启自动启用网络连接
IPADDR=192.168.1.73   #设置网关
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8

wps7EC7.tmp

配置脚本:

#!/bin/bash

#static

cd /etc/sysconfig/network-scripts

sed -i 's/ONBOOT=no/ONBOOT=yes/g' ifcfg-eth0

sed -i 's/dhcp/static/g' ifcfg-eth0

echo IPADDR=10.14.112.*** >> ifcfg-eth0

echo NETMASK=255.255.255.0 >> ifcfg-eth0

echo GATEWAY=10.14.112.1 >> ifcfg-eth0

echo DNS1=10.10.0.** >> ifcfg-eth0

service network restart

手动给Linux设置IP地址。输入vi /etc/sysconfig/network-scripts/ifcfg-ens33并且回车,vi是一个用来编辑文本的命令。ifcfg-en33这个文件就是网卡的配置文件,要修改IP地址,就得编辑这个文件。你的网卡配置文件名字可能不是这个,这个主要看你网卡的名字是什么。

回车后按字母i键,就可以编辑了。我们需要修改的内容有,将ONBOOT=no改为ONBOOT=yes,将BOOTPROTO=dhcp改为BOOTPROTO=static,并增加如下字符

IPADDR=192.168.183.129

NETMASK=255.255.255.0

GATEWAY=192.168.183.2

DNS1=119.29.29.29

ONBOOT设置为yes,表示网卡随系统一同启动。BOOTPROTO用来设置网卡的启动类型,dhcp表示自动获取IP地址,static表示手动设置静态IP地址。IPADDR指定IP地址(IP地址取决于前面自动获取的地址),NETMASK指定子网掩码,GETWAY指定网关,DNS1指定上网用的DNS IP地址,这个119.29.29.29是国内DNSpod公司提供的一个公共DNS。完成以上的更改后,按一下Esc键,然后输入“:wq”并回车,退出刚才的文档。然后重启网络服务,运行如下命令systemctl restart network.service,然后查看一下ip地址ip addr,再测试一下网络的连通性ping -c 4 www.baidu.com

A、修改对应网卡的IP地址的配置文件

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

IPV6INIT=no #关闭IPV6支持,当前一般不用

ONBOOT=yes #系统启动时激活此设备

BOOTPROTO=static #网卡获得ip地址的方式,为static或dhc

bootpIPADDR=192.168.1.129 #静态指定IP,指定了网卡对应的ip地址

NETMASK=255.255.255.0 #子网掩码

#NETWORK=192.168.1.1 #可以不设置,在下面2中设置好网关即可

B、设置网关

# vi /etc/sysconfig/network

NETWORKING=yes #表示系统是否使用网络HOSTNAME=CentOsMini #设置本机的主机名GATEWAY=192.168.1.1 #设置本机连接的网关的IP地址,这个是最主要的

C、设置DNS

# vi /etc/resolv.conf

nameserver 8.8.8.8 #google域名服务器nameserver 8.8.4.4 #google域名服务器

# service network restart  重启网络服务和网卡

# ifconfig/ip addr    可以查看网络设置

#ping 192.168.1.1 检查网关是否通

#ping www.baidu.com 检查域名解析是否正常

  网络设置好了,我们用Xshell远程登陆CentOs,方便操作,其实平时开发中也大多是远程登陆的。

CentOS修改IP地址

# ifconfig eth0 192.168.1.80

这样就把IP地址修改为192.168.1.80(如果发现上不了网了,那么你可能需要把网关和DNS也改一下,后面会提到),但是当你重新启动系统或网卡之后,还是会变回原来的地址,这种修改方式只适用于需要临时做IP修改。要想永久性修改,就要修改/etc/sysconfig/network-scripts/ifcfg-eth0这个文件,这个文件的主要内容如下(你的文件中没有的项,你可以手动添加):

# vi  /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 #描述网卡对应的设备别名

BOOTPROTO=static #设置网卡获得ip地址的方式,选项可以为为static,dhcp或bootp

BROADCAST=192.168.1.255 #对应的子网广播地址

HWADDR=00:07:E9:05:E8:B4 #对应的网卡物理地址

IPADDR=12.168.1.80 #只有网卡设置成static时,才需要此字段

NETMASK=255.255.255.0 #网卡对应的网络掩码

NETWORK=192.168.1.0 #网卡对应的网络地址,也就是所属的网段

ONBOOT=yes #系统启动时是否设置此网络接口,设置为yes时,系统启动时激活此设备

CentOS修改网关

# route add default gw 192.168.1.1 dev eth0

这样就把网关修改为192.168.1.1了,这种修改只是临时的,当你重新启动系统或网卡之后,还是会变回原来的网关。要想永久性修改,就要修改/etc/sysconfig/network 这个文件,这个文件的主要内容如下(你的文件中没有的项,你可以手动添加):

# vi  /etc/sysconfig/network

NETWORKING=yes #表示系统是否使用网络,一般设置为yes。如果设为no,则不能使用网络。

HOSTNAME=centos #设置本机的主机名,这里设置的主机名要和/etc/hosts中设置的主机名对应

GATEWAY=192.168.1.1 #设置本机连接的网关的IP地址。

**********上面的文件修改完要重新启动一下网卡才会生效:# service network restart ********

CentOS修改DNS

上面的都修改完之后,当你ping一个域名是肯能不通,但ping对应的IP地址是同的,这时我们需要修改一下DNS。修改DNS要通过修改/etc/resolv.conf这个文件:

# vi /etc/resolv.conf

nameserver 8.8.8.8 #google域名服务器 nameserver 8.8.4.4 #google域名服务器

通过上面的所有设置,系统应该可以上网了。

如果centos系统建立在虚拟机之上,那么在设置虚拟机的网络时请选择‘网桥适配器’连接。

---恢复内容开始---

1.ifconfig -a 和 cat /etc/resolv.conf  (主要查看ip/netmask和dns)

2.netstat -rn

3.cat /etc/sysconfig/network

4.cat /etc/sysconfig/network-scripts/ifcfg-eth0

5.traceroute 第一行就是自己的网关

6.ip route show

7.route -n

以上几个是比较常用的查询网关的命令。下面是范例:

[root@www.ctohome.com]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
184.82.152.96   0.0.0.0         255.255.255.248 U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         184.82.152.97   0.0.0.0         UG        0 0          0 eth0

[root@www.ctohome.com]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corporation 82567V-2 Gigabit Network Connection
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:1c:c0:f8:a1:ac
ONBOOT=yes
NETMASK=255.255.255.248
IPADDR=184.82.152.98
GATEWAY=184.82.152.97
TYPE=Ethernet

[root@www.ctohome.com]# ip route show
184.82.152.96/29 dev eth0  proto kernel  scope link  src 184.82.152.98 
169.254.0.0/16 dev eth0  scope link 
default via 184.82.152.97 dev eth0

[root@www.ctohome.com]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
184.82.152.96   0.0.0.0         255.255.255.248 U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         184.82.152.97   0.0.0.0         UG    0      0        0 eth0

[root@www.ctohome.com]#  ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:1C:C0:F8:A1:AC  
          inet addr:184.82.152.98  Bcast:184.82.152.103  Mask:255.255.255.248

2.2.6.3. 防火墙

1、查看firewall服务状态

systemctl status firewalld

wps7EC8.tmp

2、查看firewall的状态

firewall-cmd --state

wps7EC9.tmp

3、开启、重启、关闭、firewalld.service服务

# 开启

service firewalld start

# 重启

service firewalld restart

# 关闭

service firewalld stop

4、查看防火墙规则

firewall-cmd --list-all

wps7ECA.tmp

5、查询、开放、关闭端口

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp

#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

# 参数解释1、firwall-cmd:是Linux提供的操作firewall的一个工具;2、--permanent:表示设置为持久;3、--add-port:标识添加的端口;

3. debain/ubuntu安装

3.1. 下载

国内源下载

http://mirrors.163.com/ubuntu-releases/

地址栏输入https://www.ubuntu.com进入ubuntu官网首页。

wps7ECB.tmp

点击导航栏的Download,根据个人需要选择Ubuntu Desktop桌面版或Ubuntu Server服务器版。一般我们不建议下载最新版本,因为系统稳定性、使用资源、软件应用都没有那么丰富。这里以桌面版下载安装为例,我们点击Ubuntu Desktop下载其它版本。

wps7ECC.tmp

显示如下,点击alternative download选择相应的版本下载。

wps7ECD.tmp

我们这里通过迅雷离线下载系统镜像,显示的版本如下,根据自己需要选择32位或64位系统,这里选择的版本是Ubuntu16.04.5 Desktop(64-bit)。

wps7EDE.tmp

下载完如下:

wps7EDF.tmp

3.2. 安装方法
3.3. 安装过程-ubuntu-1604-server
3.3.0.1. 关Ubuntu Server16.04 中文安装报错无法安装busybox-initramf

向目标系统中安装 busybox-initramfs 软件包时出现一个错误。请检查/var/log/syslog或查看第四虚拟控制台以获得详细信息

此处可能是Ubuntu存在的一个BUG,无法解决,也许是对中文翻译并未完全支持导致报错

wps7EE0.tmp

解决方法如下,在一开始选择English

wps7EE1.tmp

wps7EE2.tmp

选择 Chinese-简体中文

wps7EE3.tmp

wps7EE4.tmp

3.4. 安装过程-通用

启动安装镜像,界面如下,我们可以选择安装语言为English或中文简体,这里选择为English,然后点击Install Ubuntu。

wps7EE5.tmp

保证磁盘拥有至少6.8G的可用磁盘空间,点击Continue继续。

wps7EE6.tmp

我们这里可以选择磁盘分区进行安装,这里选择默认的选项对整个磁盘进行快速分区安装。这里要注意的是这会清空整个磁盘空间的数据,点击Install now进入下一步。

wps7EE7.tmp

点击Continue确认写入分区进入安装环节。

wps7EF7.tmp

选择安装时区。这里使用默认的上海即可,点击Continue继续。

wps7EF8.tmp

选择键盘布局为中文

wps7EF9.tmp

填写姓名、机器名、用户名、用户密码,然后点击Continue继续。

wps7EFA.tmp

等待系统安装完成。

wps7EFB.tmp

安装完成,点击重启。

wps7EFC.tmp

如果停留在如下界面,显示stopping early crypto disks,手动重启即可。

wps7EFD.tmp

启动后进入登录界面如下,输入登录账号密码即可进入系统。

wps7EFE.tmp

选择Don't Upgrade不进行升级,至此系统安装完成。

wps7EFF.tmp

分区说明

1、/分区。用于存储系统文件。

2、swap,即交换分区,也是一种文件系统,它的作用是作为Linux的虚拟内存。

在Windows下,虚拟内存是一个文件:pagefile.sys;而Linux下,虚拟内存需要使用独立分区,这样做的目的据说是为了提高虚拟内存的性能。

3、/home:是用户文件夹所在的地方。如果独立划分/home,即使Ubuntu不能启动,也可以用Live CD启动来取得自己的文件资料。

4、/boot:包含了操作系统的内核和在启动系统过程中所要用到的文件。

在很多老旧的教程中,都会让用户在/boot目录上挂载一个大小为100MB左右的独立分区,并推荐把该/boot放在硬盘的前面——即1024柱面之前。事实上,那是Lilo无法引导1024柱面后的操作系统内核的时代的遗物了。当然,也有人说,独立挂载/boot的好处是可以让多个Linux共享一个/boot。

其实,无论是基于上述的哪种理由,都没有必要把/boot分区独立出来。首先,Grub可以引导1024柱面后的Linux内核;其次,即使是安装有多个Linux,也完全可以不共享/boot。因为/boot目录的大小通常都非常小,大约20MB,分一个100MB的分区无疑是一种浪费,而且还把把硬盘分的支离破碎的,不方便管理。另外,如果让两个Linux共享一个/boot,每次升级内核,都会导致Grub的配置文件冲突,带来不必要的麻烦。而且,不独立/boot分区仅仅占用了根目录下的大约20MB左右的空间,根本不会对根目录的使用造成任何影响。

但值得注意的是,随着硬盘容量的增大,无法引导Linux内核的现象再次出现,这也就是著名的137GB限制。很遗憾,Grub是无法引导137GB之后的分区中的Linux内核的。如果你不巧遇到了这样的情况,你就要考虑把/boot独立挂载到位于137GB前方的独立分区中,或者索性就把 Linux的分区都往前移动,让根目录所在分区位于137GB之前。

5、/usr/local:是 Linux系统存放软件的地方。

建议把/opt,/usr或/usr/local独立出来的教程,基本上也是非常老的了。使用Ubuntu时,我们一般都是使用系统的软件包管理器安装软件,很少自己编译安装软件。而建议独立/usr,/opt,/usr/local的理由无非是为了重装系统时不再重新编译软件而直接使用早先编译的版本。不过对于大多数普通用户来说,这个建议通常是没有意义的。

6、/var:是系统日志记录分区。

7、/tmp分区,用来存放临时文件。

建议把/var和/tmp独立出来的教程通常是面向服务器的。因为高负载的服务器通常会产生很多日志文件、临时文件,这些文件经常改变,因此把/var,/tmp独立出来有利于提高服务器性能。但如果你用Ubuntu是做桌面的,或从来不关心过系统日志这东西,就没有必要独立的为/var和/tmp挂载分区。

Linux 系统一个硬盘总共最多有 16 个分区。其中主分区(或者扩展分区,扩展分区必须在最后分区)占用了 hda1、hda2、hda3、hda4,而逻辑分区占用了 hda5 到 hda16 等 12 个号码。

文件系统的选择:

如果不是很了解最好采用默认的文件系统。

最大分区大小:ext3是4TB,ReiseFS是16TB。FAT32在Windows XP和Windows 2000里的最大分区是32GB;而Linux中的FAT32则可以支持到2TB。

最大文件大小:ext3是2GB-4GB,ReiseFS是8TB,FAT32是4GB。

分区配置:

挂载点 装置 说明

/            /dev/hda1      必须分区

swap      /dev/hda2        必须分区swap的大小约等同你的内存大小,或稍大1~2倍内存之间

/home     /dev/hda2        最大的剩余空间(看需求,开发的话尽量大点,以免后期添加硬盘及home1分区,给使用及维护带来不便)

/boot     /dev/hda3     128MB左右

/var       /dev/hda6     可选分区,一般服务器需求可分区,视服务器功能决定大小

3.5. ubuntu18-desktop-64bit系统管理
3.5.1. 取消系统更新

怎么禁止/开启Ubuntu自动更新升级

 当你打开Ubuntu系统时经常会弹出软件更新升级提示框,因为Ubuntu包括上面装的很多软件也都是开源系统,更新升级是很频繁的,对于经常弹出的更新提示无非是两种应对措施,要么安装,要么不安装!
 对于每次都安装的人其实没必要弹提示框,直接安装就好了;对于不安装的人,他也不想看提示框啊,直接取消就好了;对于偶尔想更新一下的人,手工安装更新就好了。
 下面来说说怎么设置,包括图形界面的方法,和命令行的方法,包括禁止更新Ubuntu内核的方法。

一、基于图形桌面来配置

1、打开系统设置(system setting),在主界面找齿轮一样的图标,有的版本安装完之后在任务栏上有,没有的话点右上角工具条上的齿轮,里面有。如下图所示。

wps7F10.tmp

2、进去后打开“Software & Updates(软件和更新)”,如下所示。
wps7F11.tmp

3、在界面上的“Update(更新)”选项卡中,如果要 开启 自动更新按如下界面进行设置。
wps7F12.tmp

4、如果要 关闭 自动更新按如下界面进行设置。
wps7F13.tmp

5、中间如果弹出验证框,输入登陆密码就可以了。
wps7F14.tmp

6、禁止更新Ubuntu系统内核,上图中“有新版本时通知我”选“从不”。

二、基于命令行修改配置文件的方法

1、打开终端,修改配置文件1。输入:
sudo gedit /etc/apt/apt.conf.d/10periodic
如果要禁止自动更新配置文件设为如下:

APT::Periodic::Update-Package-Lists "0";

APT::Periodic::Download-Upgradeable-Packages "0";

APT::Periodic::AutocleanInterval "0";

APT::Periodic::Unattended-Upgrade "0";

如果要打开自动更新配置文件设为如下:

APT::Periodic::Update-Package-Lists "2";

APT::Periodic::Download-Upgradeable-Packages "1";

APT::Periodic::AutocleanInterval "0";

APT::Periodic::Unattended-Upgrade "1";

保存退出。

2、修改配置文件2,输入:
sudo gedit /etc/apt/apt.conf.d/20auto-upgrades
如果要禁止自动更新配置文件设为如下:

APT::Periodic::Update-Package-Lists "0";

APT::Periodic::Download-Upgradeable-Packages "0";

APT::Periodic::AutocleanInterval "0";

APT::Periodic::Unattended-Upgrade "0";

如果要打开自动更新配置文件设为如下:

APT::Periodic::Update-Package-Lists "2";

APT::Periodic::Download-Upgradeable-Packages "1";

APT::Periodic::AutocleanInterval "0";

APT::Periodic::Unattended-Upgrade "1";

保存退出。

3、两个文件都要修改,直接修改配置文件可能需要重启。
输入:reboot

最后

 无论是自动更新还是手工更新,一般情况下不建议安装“提前释放出的更新”,参考如下,这种更新一般非常不稳定,仅供试验之用。

wps7F15.tmp

3.5.2. 更新apt

ubuntu18更新软件源:

/etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

apt-get update

4. EMB3500

4.1. 开发板网络配置
4.1.1. 配置内网互连

方法1:临时网络配置(可ping通 可ssh连接):

使用ifconfig eth0命令配置临时(重启失效)网络IP如下:

ifconfig eth0 192.168.100.242

方法2:永久网络配置(可ping通 可ssh连接):

在方法1的基础上把以上命令写入rc.local,如下:

root@wheezy-armel # cat /etc/rc.local

# rc.local

#

# This script is executed at the end of each multiuser runlevel.

# Make sure that the script will "exit 0" on success or any other

# value on error.

#

ifconfig eth0 192.168.100.243

方法3:永久网络配置(可ping通 可ssh连接):

把网络配置写入配置表中,此配置在方法2前生效,内容如下:

root@wheezy-armel # cat /etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)

auto lo

iface lo inet loopback

allow-hotplug eth0

iface eth0 inet static

address 192.168.100.244

netmask 255.255.255.0

getway 192.168.100.1

allow-hotplug eth1

iface eth1 inet dhcp

4.1.2. 配置访问外网

配置前域名访问:

# ping https://www.qq.com

ping: unknown host https://www.qq.com/

# ping www.qq.com

ping: unknown host www.qq.com/

# ping qq.com

ping: unknown host www.qq.com

配置前IP访问:

root@wheezy-armel:~ 10:25:09

# ping 8.8.8.8

connect: Network is unreachable

4.1.3. 配置外网访问-域名解析器(DNS)

配置前:

# ping qq.com

ping: unknown host qq.com

配置:

# cat /etc/resolv.conf

nameserver 192.168.100.1

地址可以为用路由器(网关)的DNS/202.96.128.86/8.8.8.8/ 202.96.134.133(国内的更外)

配置后:

# ping qq.com

connect: Network is unreachable

4.1.4. 配置外网访问-路由配置

查看路由:

# ip route show

192.168.100.0/24 dev eth0  proto kernel  scope link  src 192.168.100.25

配置路由:

route add default gw 192.168.100.1 dev eth0

操作记录:

# ping qq.com

ping: unknown host qq.com

# ip route show

192.168.100.0/24 dev eth0  proto kernel  scope link  src 192.168.100.25

# route add default gw 192.168.100.1 dev eth0

# ping qq.com

ping: unknown host qq.com

# ping qq.com

PING qq.com (59.37.96.63) 56(84) bytes of data.

64 bytes from 59.37.96.63: icmp_req=1 ttl=56 time=4.85 ms

5. ubuntu系统维护

5.1. 系统维护

光盘模式 :

recovery模式:

rescue mode拯救模式

系统启动时进入rescue mode拯救模式:

1、查看分区:

grub rescue> ls   //回车,会出现如下字样:  (hd0) (hd0,msdos6) (hd0,msdos5) (hd0,msdos1)

2、寻找ubuntu分区:

若包含/bin以及/sbin等目录,表示为主分区。 若包含/boot/grub或者/grub,即为启动分区。  grub rescue> ls (hd0,msdos1)/

3、修改启动分区:

假如你找到的主分区为(hd0,msdos6),grub所在路径是(hd0,msdos1)/grub   grub rescue > root=hd0,msdos1

grub rescue > prefix=/grub                       //grub路径设置 grub rescue > set root=hd0,msdos1 grub rescue > set prefix=(hd0,msdos1)/grub

grub rescue > insmod normal                       //启动normal启动 grub rescue > normal

之后你就会看到熟悉的启动菜单栏了

4、进入ubuntu修复grub

sudo update-grub

sudo grub-install /dev/sda(这一步可能不需要,可能会报错)

5、重启

5.2. 无法进入图形桌面
5.3. 数据恢复
5.3.1. Linux 安全工具之extundelete误删除恢复

一:前言

在Linux中,我们通常会因为误删除文件而感到烦恼,rm -rf +文件  rf参数简直就是每个运维的噩梦,但是大家想过没,为什么删除文件那么快呢,为什么我们copy文件的时候那么慢。

其实不管大家是rm 还是rm -rf都是删除的文件名字而已,数据还是保存在磁盘扇区里面的,当然这只是我的理解,那么删除后我们要怎么恢复呢,下面实验将进行对extundelete工具的简单操作介绍,

二:实验环境

系统:CentOS6.4_x64-mini.iso

工具选择: extundelete-0.2.4.tar.bz2

extundelete官网:http://extundelete.sourceforge.net/

备注:这里我全文全部为Linux命令,没有任何图片,加一个图片到blogs里面很累的。

再者环境我说明一下,我这里的实验目录是单独挂载到一个硬盘上的,不然搞得大家看不懂就很不好了,

说下我为什么挂载一个硬盘上呢,大家想下,企业中了为了安全的考虑,肯定会把数据盘和系统盘分开。

删除了数据盘的数据就必须马上umount下,不然数据二次写入,就是大牛来了也帮不了你了。这点和Windows一样,我想都会懂的。

三:实验前准备

创建目录,copy文件。

wps7F16.tmp

[root@nginx ~]#mkdir  /yang

[root@nginx ~]# mkfs.ext4 /dev/sdb

[root@nginx ~]# mount /dev/sdb /yang/

[root@nginx ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2       9.5G  3.6G  5.5G  39% /

tmpfs           242M     0  242M   0% /dev/shm

/dev/sda1       190M   27M  153M  15% /boot

/dev/sdb        4.8G   10M  4.6G   1% /yang

[root@nginx ~]# cp /etc/hosts /yang/

[root@nginx ~]# cp /etc/passwd /yang/

[root@nginx ~]# mkdir -p /yang/data1/

[root@nginx ~]# mkdir -p /yang/data2/

[root@nginx ~]# echo "data1.txt" > /yang/data1/data1.txt

[root@nginx ~]# echo "data2.txt" > /yang/data2/data2.txt

[root@nginx ~]# ls -r /yang/*

/yang/passwd  /yang/hosts

/yang/lost+found:

/yang/data2:

data2.txt

/yang/data1:

data1.txt

###以上为我实验环境的准备,命令都很简单,最后查看文件输出结果###

wps7F26.tmp

四、下载安装extundelete

wps7F27.tmp

[root@nginx ~]#wget  http://internode.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

[root@nginx ~]# tar jxvf extundelete-0.2.4.tar.bz2

[root@nginx ~]# cd extundelete-0.2.4

[root@nginx extundelete-0.2.4]# ls

acinclude.m4  autogen.sh   config.log  configure.ac  install-sh  Makefile.am  missing  src

aclocal.m4    config.h.in  configure   depcomp       LICENSE     Makefile.in  README

[root@nginx extundelete-0.2.4]# ./configure

Configuring extundelete 0.2.4

configure: error: Can't find ext2fs library

###好的,到这里看到报错,怎么办呢,根据报错解决了###

wps7F28.tmp

这里报错说找不到ext2fs,找不到就装一个呗,怎么装呢,yum? 首先要确定下这个包,yum直接安装ext2fs肯定是没有的,接下来我们既然没那么多经验,不知道包名字,我们就rpm找就可以了,简单明了。

wps7F29.tmp

[root@nginx extundelete-0.2.4]# mount /dev/cdrom /mnt/

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@nginx extundelete-0.2.4]# cd /mnt/

[root@nginx mnt]# ls

CentOS_BuildTag  GPL       Packages                  RPM-GPG-KEY-CentOS-6           RPM-GPG-KEY-CentOS-Testing-6

EFI              images    RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-Debug-6     TRANS.TBL

EULA             isolinux  repodata                  RPM-GPG-KEY-CentOS-Security-6

[root@nginx mnt]# cd Packages/

[root@nginx Packages]# ls *2fs*

e2fsprogs-1.41.12-21.el6.x86_64.rpm      e2fsprogs-devel-1.41.12-21.el6.x86_64.rpm  e2fsprogs-libs-1.41.12-21.el6.x86_64.rpm

e2fsprogs-devel-1.41.12-21.el6.i686.rpm  e2fsprogs-libs-1.41.12-21.el6.i686.rpm

[root@nginx Packages]# rpm -ivh e2fsprogs-1.41.12-21.el6.x86_64.rpm

Preparing...                ########################################### [100%]

    package e2fsprogs-1.41.12-21.el6.x86_64 is already installed

[root@nginx Packages]# rpm -ivh e2fsprogs-devel-1.41.12-21.el6.x86_64.rpm

Preparing...                ########################################### [100%]

1:e2fsprogs-devel        ########################################### [100%]

wps7F2A.tmp

Ok,这里我安装成功了,我的是x64位系统,当然我要装x86_x64啦。接下来我们继续编译安装。

wps7F2B.tmp

[root@nginx Packages]#  cd /root/extundelete-0.2.4

[root@nginx extundelete-0.2.4]# ./configure

Configuring extundelete 0.2.4

Writing generated files to disk

[root@nginx extundelete-0.2.4]# echo $?

0

[root@nginx extundelete-0.2.4]# make && make install

make -s all-recursive

Making all in src

extundelete.cc:571: warning: unused parameter ‘flags’

Making install in src

  /usr/bin/install -c extundelete '/usr/local/bin'

[root@nginx extundelete-0.2.4]# ls /usr/local/bin/

Extundelete

########安装成功  我们开始删除文件来进行恢复测试#####

wps7F2C.tmp

进行删除,恢复测试。记得删除后umount哦,不然二次写入谁也帮不了你呢。

wps7F2D.tmp

[root@nginx ~]# rm -rf /yang/*

[root@nginx ~]# ls /yang/*

ls: cannot access /yang/*: No such file or directory

[root@nginx ~]# ls /yang/

[root@nginx ~]#echo “这里可以看到我刚才删除了rm –rf /yang/*就没有任何东西了”

[root@nginx ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2       9.5G  3.6G  5.5G  40% /

tmpfs           242M     0  242M   0% /dev/shm

/dev/sda1       190M   27M  153M  15% /boot

/dev/sdb        4.8G   10M  4.6G   1% /yang

/dev/sr0        4.4G  4.4G     0 100% /mnt

[root@nginx ~]# umount /yang/

[root@nginx ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2       9.5G  3.6G  5.5G  40% /

tmpfs           242M     0  242M   0% /dev/shm

/dev/sda1       190M   27M  153M  15% /boot

/dev/sr0        4.4G  4.4G     0 100% /mnt

wps7F2E.tmp

五、恢复测试。恢复方式有很多,接下来简单说几个。

1、 通过inode节点恢复

什么是inode?这里建议大家去百度,其实笔者也不是很懂啦,哈哈,我只是会一些简单的。

wps7F2F.tmp

[root@nginx ~]# mkdir /recover

[root@nginx ~]# cd /recover/

[root@nginx recover]# ls

[root@nginx recover]# extundelete /dev/sdb --inode 2

NOTICE: Extended attributes are not restored.

Loading filesystem metadata ... 40 groups loaded.

Group: 0

Contents of inode 2:

0000 | ed 41 00 00 00 10 00 00 b3 3f 79 57 af 3f 79 57 | .A.......?yW.?yW

0010 | af 3f 79 57 00 00 00 00 00 00 02 00 08 00 00 00 | .?yW............

0020 | 00 00 00 00 09 00 00 00 61 21 00 00 00 00 00 00 | ........a!......

0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0080 | 1c 00 00 00 a8 c0 78 45 a8 c0 78 45 6c 66 f1 64 | ......xE..xElf.d

0090 | 27 3d 79 57 00 00 00 00 00 00 00 00 00 00 00 00 | '=yW............

00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

Inode is Allocated

File mode: 16877

Low 16 bits of Owner Uid: 0

Size in bytes: 4096

Access time: 1467563955

Creation time: 1467563951

Modification time: 1467563951

Deletion Time: 0

Low 16 bits of Group Id: 0

Links count: 2

Blocks count: 8

File flags: 0

File version (for NFS): 0

File ACL: 0

Directory ACL: 0

Fragment address: 0

Direct blocks: 8545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

Indirect block: 0

Double indirect block: 0

Triple indirect block: 0

File name                                       | Inode number | Deleted status

.                                                 2

..                                                2

lost+found                                        11             Deleted

hosts                                             12             Deleted

passwd 13             Deleted

data1                                             131073         Deleted

data2                                             131074         Deleted

[root@nginx recover]#

[root@nginx recover]# extundelete /dev/sdb --restore-inode 13

NOTICE: Extended attributes are not restored.

Loading filesystem metadata ... 40 groups loaded.

Loading journal descriptors ... 52 descriptors loaded.

[root@nginx recover]# ls

RECOVERED_FILES

[root@nginx recover]# ls RECOVERED_FILES/

file.13

[root@nginx recover]# du -sh ./RECOVERED_FILES/file.13

4.0K    ./RECOVERED_FILES/file.13

[root@nginx recover]# echo "这里我根据是inode的节点恢复的,当然这里有些人会不了解为什么是file.13,上面我inode节点对应的不是passwd文件?下面我们查看一下是否一样文件,再使用diff对比一下。"

wps7F30.tmp

原文件:

wps7F41.tmp

[root@nginx recover]# more /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin

abrt:x:173:173::/etc/abrt:/sbin/nologin

saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

radvd:x:75:75:radvd user:/:/sbin/nologin

qemu:x:107:107:qemu user:/:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin

www:x:600:600::/data1/app/services/nginx:/sbin/nologin

[root@nginx recover]#

wps7F42.tmp

恢复出来的文件:

wps7F43.tmp

[root@nginx recover]# more RECOVERED_FILES/file.13

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin

vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin

abrt:x:173:173::/etc/abrt:/sbin/nologin

saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

radvd:x:75:75:radvd user:/:/sbin/nologin

qemu:x:107:107:qemu user:/:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin

www:x:600:600::/data1/app/services/nginx:/sbin/nologin

[root@nginx recover]#

##############输出的结果一模一样############

wps7F44.tmp

再者我们使用diff对比一下文件,diff命令不懂? 没问题啊,一样啊去百度啊,因为笔者也不了解,嘿嘿。逗逼一下,不然写着很累的。

[root@nginx recover]# diff /etc/passwd ./RECOVERED_FILES/file.13

[root@nginx recover]# echo $?

0

[root@nginx recover]#echo “这里返回结果就是0,没有报错,就是成功了,对比一样,记住,在Linux中没有信息就是最好的信息。”

2、 根据文件名来恢复

wps7F45.tmp

[root@nginx recover]# extundelete /dev/sdb --restore-file hosts

NOTICE: Extended attributes are not restored.

Loading filesystem metadata ... 40 groups loaded.

Loading journal descriptors ... 52 descriptors loaded.

Successfully restored file hosts

[root@nginx recover]# ls

RECOVERED_FILES

[root@nginx recover]# ls RECOVERED_FILES/

file.13  hosts

[root@nginx recover]# diff /etc/hosts ./RECOVERED_FILES/hosts

[root@nginx recover]# echo $?

0

[root@nginx recover]#echo“对比一样还是恢复成功了。”

wps7F46.tmp

3、根据目录来恢复

wps7F47.tmp

[root@nginx recover]# extundelete /dev/sdb --restore-directory data1

NOTICE: Extended attributes are not restored.

Loading filesystem metadata ... 40 groups loaded.

Loading journal descriptors ... 52 descriptors loaded.

Searching for recoverable inodes in directory data1 ...

7 recoverable inodes found.

Looking through the directory structure for deleted files ...

6 recoverable inodes still lost.

[root@nginx recover]# ls ./RECOVERED_FILES/

data1  file.13  hosts

[root@nginx recover]# ls ./RECOVERED_FILES/data1/

data1.txt

[root@nginx recover]# echo “到这里目录测试也是可以恢复成功,里面文件也是我之前的文件,那么如果有人说我的文件太多了我想恢复所有的,这样操作是不是太麻烦了,没问题,下面我来教大家怎么恢复所有的,就是更改下参数。”

wps7F48.tmp

4、恢复全部文件。

我先给之前恢复的文件都删除了,下面看是不是可以正常恢复成功所有的文件

wps7F49.tmp

[root@nginx recover]# rm -rf RECOVERED_FILES/

[root@nginx recover]# ls

[root@nginx recover]# extundelete /dev/sdb --restore-all

NOTICE: Extended attributes are not restored.

Loading filesystem metadata ... 40 groups loaded.

Loading journal descriptors ... 52 descriptors loaded.

Searching for recoverable inodes in directory / ...

7 recoverable inodes found.

Looking through the directory structure for deleted files ...

0 recoverable inodes still lost.

[root@nginx recover]# ls

RECOVERED_FILES

[root@nginx recover]# ls -r ./RECOVERED_FILES/

passwd  hosts  data2  data1

[root@nginx recover]#echo “可以看到我删除后所有的都恢复过来了”

6. ubuntu系统管理

6.1. 操作流水一览表

$su root

$Failed

$sudo passwd root

$123456

$su root

#root

#useradd tangwenhui

#passwd tangwenhui

#123456

#vi /etc/group

  cmd mod: /sudo

sudo:x:27:tangwenhui

#sudo smbpassword -a tangwenhui

#vi /etc/samba/smb.conf

  cmd mod:$

[tangwenhui] //注意如果是root在pc远程连接时目录是root。

  comment = tangwenhui share content

  path = /home/tangwenhui

  public = no

  writable = yes

  create mask = 0755

  directory mask = 0755

  available = yes

  browseable = yes

#正在使用(ubuntu14.04-server)

[tangwenhui]

  comment = tangwenhui share content

  path = /home/tangwenhui

  public = no

  writable = yes

#  valid users = tangwenhui

  create mask = 0777

  directory mask = 0775

#  force user = nobody

#  force group = nogroup

  available = yes

  browseable = yes

#/etc/init.smbd restart

#ifconfig eth0 192.168.137.27

#route add default gw 192.168.137

#vi /etc/network/interfaces

auto eth0

iface eth0 inet static

address 192.168.137.2

netmask 255.255.255.0

gateway 192.168.137.1

dns-nameservers 202.96.134.133

#sudo ifdown eth0

#sudo ifup eth0

6.2. 语言设置

修改这些LC_XXX 的位置在 /etc/environment

还有一个地方叫做 /etc/default/locale

但是Ubuntu Server的console就是不支持中文,因此装完机要改回英文

用vim配置语言环境变量 vim /etc/environment

改成: LANG=”en_US.UTF-8″ LANGUAGE=”en_US:en”

sudo vim /var/lib/locales/supported.d/local 加一行 en_US.UTF-8 UTF-8

保存后,执行命令:

sudo locale-gen

sudo vim /etc/default/locale

zh_CN修改为: LANG=”en_US.UTF-8″ LANGUAGE=”en_US:en”

重启Ubuntu Server sudo reboot 至此 方格乱码解决

6.3. 网络配置

动态IP设置

# The primary network interface

auto eth0

iface eth0 inet dhcp

静态IP设置-ubuntu18以下

1. 找到文件并作如下修改:

sudo vim /etc/network/interfaces

修改如下部分:

auto eth0

iface eth0 inet static

address 192.168.0.117

gateway 192.168.0.1

netmask 255.255.255.0

network 192.168.0.0

broadcast 192.168.0.255

#dns-nameservers 202.96.134.133

2. 修改dns解析

方法一:在上文件末尾添加dns服务器

方法二:在以下文件增加dns服务器

因为以前是dhcp解析,所以会自动分配dns服务器地址

而一旦设置为静态ip后就没有自动获取到的dns服务器了

要自己设置一个

sudo vim /etc/resolv.conf

写上一个公网的DNS

nameserver 202.96.128.86

(8.8.8.8是谷歌的DNS服务器,但是解析速度慢,还是找到一个国内的dns来用,另外国内可用的还有202.96.134.133等)

也可以写网关地址,用网关上默认的DNS解析。

3. 重启网卡:

sudo /etc/init.d/networking start

sudo /etc/init.d/networking stop

$sudo ifdown eth0

$sudo ifup eth0

静态IP设置-ubuntu18以上

root@master:/var/lib/kubelet# cat /etc/netplan/00-installer-config.yaml

# This is the network config written by 'subiquity'

network:

  ethernets:

    enp0s3:

      dhcp4: true

    enp0s9:                # 配置的网卡名称

      dhcp4: no           # 关闭dhcp4

      dhcp6: no           # 关闭dhcp6

      addresses: [192.168.0.101/24]       # 设置本机IP地址及掩码

      gateway4: 192.168.0.1              # 设置网关

      nameservers:

        addresses: [114.114.114.114, 8.8.8.8]       # 设置DNS

    enp0s8:                # 配置的网卡名称

      dhcp4: no           # 关闭dhcp4

      dhcp6: no           # 关闭dhcp6

      addresses: [192.168.56.102/24]       # 设置本机IP地址及掩码

      gateway4: 192.168.56.1               # 设置网关

  version: 2

netplan try

netplan apply

6.4. 用户管理

root默认是没有密码的,用sudo passwd root这个命令先设置root密码

/etc/group:文件包含所有组

每条记录字段格式:group_name:passwd:GID:user_list(每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名)

/etc/passwd和/etc/shadow:系统存在的所有用户名

在/etc/passwd 中,每一行都表示的是一个用户的信息;一行有7个段位;每个段位用:号分割;

每条记录字段格式linuxsir:x:501:502::/home/linuxsir:/bin/bash

用户名:口令(x,密码已被映射到/etc/shadow):UID:GID:用户名全称(这是可选的,可以不设置):用户的家目录所在位置:SHELL 的类型(用户的一般为bash)

在/etc/passwd 中把用户的UID 改为0后,这个用户会被确认为root用户。可以进行所有root的操作;

1)管理用户(user)的工具或命令;

useradd 注:添加用户

adduser 注:添加用户

passwd 注:为用户设置密码

usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;

pwcov 注:同步用户从/etc/passwd 到/etc/shadow

pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;

pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;

finger 注:查看用户信息工具

id 注:查看用户的UID、GID及所归属的用户组

chfn 注:更改用户信息工具

su 注:用户切换工具

sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;

visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;

sudoedit 注:和sudo 功能差不多。

2)管理用户组(group)的工具或命令;

groupadd 注:添加用户组;

groupdel 注:删除用户组;

groupmod 注:修改用户组信息

groups 注:显示用户所属的用户组

grpck

grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;

grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。

开通用户、工作目录并设置密码:sudo useradd -d /home/panyanqing panyanqing & passwd

删除用户:保证该用户不在登录(用户自动登出或踢出),sudo userdel usr1

修改用户信息:sudo usermod --help  

文件:/etc/passwd:〔用户名〕:〔密码〕:〔UID〕:〔GID〕:〔身份描述〕:〔主目录〕:〔登陆Shell〕

1、添加用户

首先用adduser命令添加一个普通用户,命令如下:
#adduser tommy  //添加一个名为tommy的用户
#passwd tommy   //修改密码2、赋予root权限方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL
然后修改用户,使其属于root组(wheel),命令如下:
#usermod -g root tommy
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。
方法二:修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
tommy   ALL=(ALL)     ALL
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。

groups 查看当前登录用户的组内成员

groups gliethttp 查看gliethttp用户所在的组,以及组内成员

whoami 查看当前登录用户名

/etc/group文件包含所有组

/etc/shadow和/etc/passwd系统存在的所有用户名

/etc/group

在/etc/group 中的每条记录分四个字段:

group_name:passwd:GID:user_list

第一字段:用户组名称;

第二字段:用户组密码;

第三字段:GID

第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名;

/etc/passwd

在/etc/passwd 中,每一行都表示的是一个用户的信息;一行有7个段位;每个段位用:号分割,比如下面是我的系统中的/etc/passwd 的两行;

    beinan:x:500:500:beinan sun:/home/beinan:/bin/bash

    linuxsir:x:501:502::/home/linuxsir:/bin/bash

第一字段:用户名(也被称为登录名);在上面的例子中,我们看到这两个用户的用户名分别是 beinan 和linuxsir;

第二字段:口令;在例子中我们看到的是一个x,其实密码已被映射到/etc/shadow 文件中;

第三字段:UID ;请参看本文的UID的解说;

第四字段:GID;请参看本文的GID的解说;

第五字段:用户名全称,这是可选的,可以不设置,在beinan这个用户中,用户的全称是beinan sun ;而linuxsir 这个用户是没有设置全称;

第六字段:用户的家目录所在位置;beinan 这个用户是/home/beinan ,而linuxsir 这个用户是/home/linuxsir ;

第七字段:用户所用SHELL 的类型,beinan和linuxsir 都用的是 bash ;所以设置为/bin/bash ;

在/etc/passwd 中把beinan的UID 改为0后,你设想会发生什么呢?beinan这个用户会被确认为root用户。beinan这个帐号可以进行所有root的操作;

/etc/sudoers

.添加sudo文件的写权限,命令是:

chmod u+w /etc/sudoers

3.编辑sudoers文件

vi /etc/sudoers

找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名)

ps:这里说下你可以sudoers添加下面四行中任意一条

youuser            ALL=(ALL)                ALL

%youuser           ALL=(ALL)                ALL

youuser            ALL=(ALL)                NOPASSWD: ALL

%youuser           ALL=(ALL)                NOPASSWD: ALL

第一行:允许用户youuser执行sudo命令(需要输入密码).

第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).

第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.

第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.

4.撤销sudoers文件写权限,命令:

chmod u-w /etc/sudoers

添加用户/etc/passwd

$ sudo useradd anrong -m -d /home/anrong -p 123456

$ sudo passwd anrong

>123456

$ su anrong

Password:

Added user anrong.

anrong@ubuntu:~$ ls

删除用户

userdel 选项 用户名 -r表示连用户目录一起删除

添加组/etc/group

usermod -g sudo anrong

sudo权限用户配置

usermod -g sudo anrong

anrong$sudo ls

anrong$a aa

samba权限[见samba配置]

给命令配置权限 如mkdir

6.4.1. 单用户添加

首先用adduser命令添加一个普通用户,命令如下:
#adduser tommy  //添加一个名为tommy的用户

useradd –u 500 –g sudo –d /home/pooze pooze

-u:用户id 0~499一般系统账号使用。

#passwd tommy   //修改密码

useradd:查看帮助

useradd -g dba 设置组 -d /explat 设置用户目录 –m生成用户目录 -p 密码 explat

sudo useradd -g sudo(默认sudo组 拥有sudo权限) -d /home/mv(指定用户目录) -m(创建用户目录) -s /bin/bash(指定用户bash) -k /etc/skel/(默认拷贝的.bashrc路径 不指定会没有用户名和文件类型颜色标识) -p mv(用户密码) mv(用户名)

去掉注释后如下:

sudo useradd -g sudo -d /home/mv -m -s /bin/bash -k /etc/skel/ -p mv mv

sudo useradd -g sudo -d /home/tangwenhui -m -s /bin/bash -k /etc/skel/ -p twh.0320 tangwenhui

6.4.2. 批量用户管理脚本usermng.bash

#!bin/bash

#-----------------------------------------useradd method 1-----------------------

@echo "Usage:useradd.sh user1 user2 ... "

@echo "passwd all equal to 123456"

cd /home

USERADD=0

USERDEL=0

for i in $*

do

case $i in

         -useradd)

                USERADD=1

                ;;

case $i in

         -userdel)

                USERDEL=1

                ;;

esac

if [ $USERADD -eq 1 ]; then

useradd   -d /home/$i -p 123456 -s /bin/bash -g 500 $i

#echo 123456789 | passwd --stdin $u

fi

if [ $USERADD -eq 1 ]; then

userdel   -r $i

fi

done

#-----------------------------------------useradd method 2-----------------------

用于批处理的方式一次创建多个命令

语法:

newusers(参数)

参数:

用户文件:指定包含用户信息的文本文件,文件格式要与/etc/passwd相同

用法很简单,newusers后面直接跟一个文件

文件格式与/etc/passwd相同格式

用户名1:x:UID:GID:用户说明:用户的家目录:所用SHELL

zxt:x:1001:1001:,,,:/zxt:/bin/bash

gxl:x:1002:1002:,,,:/home/gxl:/bin/bash

user001:x:600:100:user:/home/user001:/bin/bash

cat > user.txt << "EOF"

user001:x:600:100:user:/home/user001:/bin/bash

user002:x:601:100:user:/home/user002:/bin/bash

user003:x:602:100:user:/home/user003:/bin/bash

user004:x:603:100:user:/home/user004:/bin/bash

user005:x:604:100:user:/home/user005:/bin/bash

user006:x:605:100:user:/home/user006:/bin/bash

EOF

newusers < user.txt

rm user.txt

cat > pwd.txt << "EOF"

user001:123456

user002:123456

user003:123456

user004:123456

user005:123456

user006:123456

EOF

chpasswd < pwd.txt

rm pwd.txt

for i in test1 test2 test3 test4 

do 

userdel -r $i 

done

6.4.2.1. ###################参数型

#!/bin/bash

status=off                 #定义变量status,初始值设置为off

filename=""              #定义变量filename,用于保存选项参数(文件)

output=""                 #定义变量output,用于保存选项参数(目录)

cd /home

USERADD=0

USERDEL=0

GROUP=500

Usage () {                  #定义函数Usage,输出脚本使用方法

    echo "Usage"

    echo "myscript [-h] [-v] [-f <filename>] [-o <filename>]"

    #exit -1

}

while getopts :adhvg:f:o: varname   #告诉getopts此脚本有-h、-v、-f、-o四个选项,-f和-o后面需要跟参数(没有选项时,getopts会设置一个退出状态FALSE,退出循环)

do

   case $varname in

    h)

      echo "$varname"

      Usage

      #exit

      ;;

    a)

      USERADD=1

      USERDEL=0

      echo "user set add"

      #exit

      ;;

    d)

      USERDEL=1

      USERADD=0

      echo "user set del"

      #exit

      ;;

    g)

      GROUP=$OPTARG

      echo "user set group $GROUP"

      #exit

      ;;

    :)                                               #当选项后面没有参数时,varname的值被设置为(:),OPTARG的值被设置为选项本身

      echo "$varname"

      echo "the option -$OPTARG require an arguement"        #提示用户此选项后面需要一个参数

      #exit 1

      ;;

    ?)                                   #当选项不匹配时,varname的值被设置为(?),OPTARG的值被设置为选项本身

      echo "$varname"

      echo "Invaild option: -$OPTARG"           #提示用户此选项无效

      Usage

      #exit 2

      ;;

    esac

done

echo "passwd all equal to 123456"

#$OPTIND指向命令行中下一个选项或参数的索引位置

echo $OPTIND

#shift $[$OPTIND-1]表示将文件名前面的选项和参数踢掉

shift $[$OPTIND-1]

for i in $*

do

        if [ $USERADD -eq 1 ]; then

        echo "user add $i"

        #useradd  -m -d /home/$i  -s /bin/bash -g $GROUP $i

        useradd  $i -m -d /home/$i  -s /bin/bash

echo $i:123456 | sudo chpasswd

        #echo 123456789 | passwd --stdin $u

#sudo passwd cmc << "EOF"

#12

#12

#EOF

        fi

        if [ $USERDEL -eq 1 ]; then

        echo "user del $i"

        userdel -r $i

        fi

done

6.4.3. 组操作

添加组:groupadd oralce

指定组ID添加组:groupadd –g 500 oracle

添加组名oracle,GID为500的用户组,GID小于500的通常是留给系统账号使用的

删除组:groupdel oralce

修改用户组:usermod -g groupname username #修改用户初始化用户组,用户组id对应/etc/passwd的第4栏内容

usermod -G dba oracle(增加用户组)

批量加入组:可修改文件或写脚本,可直接参照上面脚本修改

6.4.4. 配置sudo权限

加入sudo用户组即可。

/etc/group

sudo:x:27:iptv,ddfd,tangwenhui

6.4.5. 单独权限配置
6.4.6. 用户管理命令使用说明

1)管理用户(user)的工具或命令;

useradd 注:添加用户

userdel

passwd 注:为用户设置密码

usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;

pwcov 注:同步用户从/etc/passwd 到/etc/shadow

pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;

pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;

finger 注:查看用户信息工具

id 注:查看用户的UID、GID及所归属的用户组

chfn 注:更改用户信息工具

su 注:用户切换工具

su[-] [usr1]:获得root用户权限和环境。或者$ su & # /usr/bin/useradd

sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;

visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;

sudoedit 注:和sudo 功能差不多。

2)管理用户组(group)的工具或命令;

groupadd 注:添加用户组;

groupdel 注:删除用户组;

groupmod 注:修改用户组信息

groups 注:显示用户所属的用户组

grpck

grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;

grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件。

file:/etc/passwd〔用户名〕:〔密码〕:〔UID〕:〔GID〕:〔身份描述〕:〔主目录〕:〔登陆Shell〕

由于小于500的UID和GID一般都是系统自己保留,不用做普通用户和组的标志,所以新增加的用户和组一般都是UID和GID大于500的。

用户增删改查:可以在shell命令行(运行/bin/bash(GUN/linux开机运行))中修改或在passwd文件修改。

6.5. 磁盘管理
6.5.1. 硬盘分区,删除分区,格式化,挂载,卸载

虽然硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两个分区,一个是主分区(Primary Partion)一个是扩展分区(extended partition)两种,主分区可以马上被使用但不能再分区,扩展分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么由扩充分区再分下去的是什么呢?它就是逻辑分区(Logical Partion),况且逻辑分区没有数量上限制。 对习惯于使用Dos或Windows的朋友来说,有几个分区就有几个驱动器,并且每个分区都会获得一个字母标识符,然后就可以选用这个字母来指定在这个分区上的文件和目录,它们的文件结构都是独立的,非常好理解。
但是初上手Red Hat Linux吗,可就有点恼人了。因为对Linux用户来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构。Red Hat Linux中每个分区都是用来组成整个文件系统的一部分,因为它采用了一种叫“挂载点”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

1. fdisk -l 

wps7F5A.tmp

其中第一个框和第二个框,是已经分好区的磁盘,第三个硬盘没有分区。

6.5.1.1. 创建分区

开始分区

fdisk /dev/sdc 

wps7F5B.tmp

输入m,可以查看有哪些操作

wps7F5C.tmp

输入p 查看当前硬盘分区,目前没有分区。

wps7F5D.tmp

输入n新建一个分区,输入p 建立分区,输入分区编号 1

wps7F5E.tmp

然后会让你设置开始扇区(不知道是否这么解释):默认回车就是1  从头开始

然后结束扇区设置1000   这个值好像决定了分区的大小,我对硬件不是很熟悉。安装上面方法,建立第二个分区

wps7F5F.tmp

然后打印分区数 输入p,红色框就是已经建立好的分区

wps7F60.tmp

最后保存分区 输入w

wps7F70.tmp

最后,检查分区是否已经建立好!如果出现红色区域,则表示已经建立好了。

wps7F71.tmp

其实这个时候,建立好的分区还不能用,还需要挂载才可以用。但是挂载之前,必须要格式化,才行。。。

6.5.1.2. 格式化分区

格式化命令:mkfs.ext3   /dev/sdb1 是格式化成 ext3

                     mkfs.ext4   /dev/sdb1 是格式化成 ext4
下面是其中的一个图:

wps7F72.tmp

格式化之后也并不能使用,必须要挂载才行。

6.5.1.3. 挂载分区

格式化之后,就可以挂载分区了。

mkdir /d1 

mkdir /d2 

mount /dev/sdc1 /d1 

mount /dev/sdc2 /d2 

这样就挂载成功,可以正常使用了。

wps7F73.tmp

6.5.1.4. 卸载分区

umount /dev/sdc2 

wps7F74.tmp

卸载了,其实还可以挂载,而且数据还会在的

6.5.1.5. 删除分区

wps7F75.tmp

输入 w  保存,这个时候分区以及删除了,可以重新创建了。

wps7F76.tmp

wps7F77.tmp

6.5.1.6. 自动挂载

vim /etc/fstab 
编辑文件 将/dev/sdb5 /data15 ext3 defaults 0 0加入即可

UUID=d0c4ed83-d5d3-4245-af14-1434f4b3438f swap                    swap    defaults        0 0 tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

/dev/sdb5 /data15 ext3 defaults 0 0

验证是否挂载

wps7F78.tmp

6.5.2. 磁盘分区-格式化-挂载

Linux磁盘概念及其管理工具fdisk:http://www.linuxidc.com/Linux/2016-08/134664.htm
一、
进入linux虚拟机 右键 open in terminal 
su 输入密码切换为root用户
fdisk -l 查看磁盘情况
我的目前只有sda一个磁盘
添加sdb磁盘:关机,菜单栏中找到虚拟机—设置,点击硬盘—添加,按步骤走就可以了,启动虚拟机,就有sdb了

二、

1、 fdisk -l 查看磁盘情况

wps7F79.tmp

2、 下面对/dev/sdb 进行分区:

1. [root@localhost Desktop]# fdisk /dev/sdb

2. Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

3. Building a new DOS disklabel with disk identifier 0x1949791c.

4. Changes will remain in memory only, until you decide to write them.

5. After that, of course, the previous content won't be recoverable.

6.

7. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

8.

9. WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

10. switch off the mode (command 'c') and change display units to

11.          sectors (command 'u').

12.

13. Command (m for help): m                //输入m查看帮助文档

14. Command action

15.    a   toggle a bootable flag

16.    b   edit bsd disklabel

17.    c   toggle the dos compatibility flag

18.    d   delete a partition

19.    l   list known partition types

20.    m   print this menu

21.    n   add a new partition              //添加一个新的分区

22.    o   create a new empty DOS partition table

23.    p   print the partition table

24.    q   quit without saving changes

25.    s   create a new empty Sun disklabel

26.    t   change a partition's system id

27.    u   change display/entry units

28.    v   verify the partition table

29.    w   write table to disk and exit

30.    x   extra functionality (experts only)

31.

32. #fdisk选中/dev/sdb 输入m所有基本选项都出现,输入n新建分区

33. Command (m for help): n

34. Command action

35.    e   extended     //扩展分区

36.    p   primary partition (1-4)    //主分区

37.

3、有扩展分区和主分区,逻辑分区在扩展分区中建立。注意到括号中的1-4,最多只能建四个主分区(包括扩展分区)。先建一个主分区:

1. #继续上面的操作

2. Command (m for help): n

3. Command action

4.    e   extended //扩展分区

5.    p   primary partition (1-4) //主分区

6.

7. p   #输入p创建主分区

8. Partition number (1-4): 1 #分区号为1

9. First cylinder (1-2610, default 1):   #直接回车默认从第一个柱面开始划分

10. Using default value 1

11. Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G

12. #加空间大小,这里有很多种选择:+后面单位可以接M,G,K(记得要大写)表示划分你所加的空间,也可以是柱面数。不管怎样都不能超过该磁盘剩余的空间否则无效。

13.

14. Command (m for help): p    #分好后查看分区信息,刚所做的所有一目了然。

15.

16. Disk /dev/sdb: 21.5 GB, 21474836480 bytes

17. 255 heads, 63 sectors/track, 2610 cylinders

18. Units = cylinders of 16065 * 512 = 8225280 bytes

19. Sector size (logical/physical): 512 bytes / 512 bytes

20. I/O size (minimum/optimal): 512 bytes / 512 bytes

21. Disk identifier: 0x1949791c

22.

23.    Device Boot      Start End      Blocks   Id System

24. /dev/sdb1               1 262 2104483+  83  Linux

4、同上所述建立扩展分区:

1. Command (m for help): n

2. Command action

3.    e   extended

4.    p   primary partition (1-4)

5. e

6. Partition number (1-4): 4

7. First cylinder (263-2610, default 263):

8. Using default value 263

9. Last cylinder, +cylinders or +size{K,M,G} (263-2610, default 2610): +4G

10.

11. Command (m for help): p

12.

13. Disk /dev/sdb: 21.5 GB, 21474836480 bytes

14. 255 heads, 63 sectors/track, 2610 cylinders

15. Units = cylinders of 16065 * 512 = 8225280 bytes

16. Sector size (logical/physical): 512 bytes / 512 bytes

17. I/O size (minimum/optimal): 512 bytes / 512 bytes

18. Disk identifier: 0x1949791c

19.

20.    Device Boot      Start End      Blocks   Id System

21. /dev/sdb1               1 262 2104483+  83  Linux

22. /dev/sdb4             263 785 4200997+   5 Extended

5、扩展分区建好就可以在扩展分区建立逻辑分区了

1. Command (m for help): n

2. Command action

3.    l   logical (5 or over)

4.    p   primary partition (1-4)

5. l   #创建逻辑分区

6. First cylinder (263-785, default 263):

7. Using default value 263

8. Last cylinder, +cylinders or +size{K,M,G} (263-785, default 785): +2G

9.

10. Command (m for help): p

11.

12. Disk /dev/sdb: 21.5 GB, 21474836480 bytes

13. 255 heads, 63 sectors/track, 2610 cylinders

14. Units = cylinders of 16065 * 512 = 8225280 bytes

15. Sector size (logical/physical): 512 bytes / 512 bytes

16. I/O size (minimum/optimal): 512 bytes / 512 bytes

17. Disk identifier: 0x1949791c

18.

19.    Device Boot      Start End      Blocks   Id System

20. /dev/sdb1               1 262 2104483+  83  Linux

21. /dev/sdb4             263 785 4200997+   5 Extended

22. /dev/sdb5             263 524 2104483+  83  Linux

6、上面显示已经建好一个主分区,一个逻辑分区,但是这些现在还没有生效,需要保存退出。

1. Command (m for help): w  #保存退出

2. The partition table has been altered!

3.

4. Calling ioctl() to re-read partition table.

5. Syncing disks.

7、退出后查看:

1. [root@localhost Desktop]# fdisk -l

2.

3. Disk /dev/sda: 21.5 GB, 21474836480 bytes

4. 255 heads, 63 sectors/track, 2610 cylinders

5. Units = cylinders of 16065 * 512 = 8225280 bytes

6. Sector size (logical/physical): 512 bytes / 512 bytes

7. I/O size (minimum/optimal): 512 bytes / 512 bytes

8. Disk identifier: 0x00053377

9.

10. Device Boot Start End Blocks Id System

11. /dev/sda1 * 1 39 307200 83 Linux

12. Partition 1 does not end on cylinder boundary.

13. /dev/sda2 39 2358    18631680 83 Linux

14. /dev/sda3 2358        2611     2031616 82 Linux swap / Solaris

15.

16. Disk /dev/sdb: 21.5 GB, 21474836480 bytes

17. 255 heads, 63 sectors/track, 2610 cylinders

18. Units = cylinders of 16065 * 512 = 8225280 bytes

19. Sector size (logical/physical): 512 bytes / 512 bytes

20. I/O size (minimum/optimal): 512 bytes / 512 bytes

21. Disk identifier: 0x1949791c

22.

23. Device Boot Start End Blocks Id System

24. /dev/sdb1 1 262 2104483+ 83 Linux

25. /dev/sdb4 263 785 4200997+ 5 Extended

26. /dev/sdb5 263 524 2104483+ 83 Linux

8、这时需要给它设置文件系统并进行格式化。
mkfs -t ext3 /dev/sdb5 
给它设置ext3的文件系统,并格式化。

1. [root@localhost Desktop]# mkfs -t ext3 /dev/sdb5

2. mke2fs 1.41.12 (17-May-2010)

3. Filesystem label=

4. OS type: Linux

5. Block size=4096 (log=2)

6. Fragment size=4096 (log=2)

7. Stride=0 blocks, Stripe width=0 blocks

8. 131648 inodes, 526120 blocks

9. 26306 blocks (5.00%) reserved for the super user

10. First data block=0

11. Maximum filesystem blocks=541065216

12. 17 block groups

13. 32768 blocks per group, 32768 fragments per group

14. 7744 inodes per group

15. Superblock backups stored on blocks:

16. 32768, 98304, 163840, 229376, 294912

17.

18. Writing inode tables: done

19. Creating journal (16384 blocks): done

20. Writing superblocks and filesystem accounting information: done

21.

22. This filesystem will be automatically checked every 26 mounts or

23. 180 days, whichever comes first. Use tune2fs -c or -i to override.

9、在新建个目录,mkdir /data15 ; 
用来挂载这个分区。mount /dev/sdb5 /data15 ;

1. [root@localhost Desktop]# mkdir /data15;

2. [root@localhost Desktop]# mount /dev/sdb5 /data15;

10、查看是否挂载成功:df -TH /data15/

1. [root@localhost Desktop]# df -TH /data15/

2. Filesystem Type Size Used Avail Use% Mounted on

3. /dev/sdb5 ext3 2.2G 71M 2.0G 4% /data15

11、这样就可以正常使用了。可是重启之后又要手动挂载怎么办?
很简单,我们只要配置一下就OK了。
vim /etc/fstab 
编辑文件 将/dev/sdb5 /data15 ext3 defaults 0 0加入即可

1. #

2. # /etc/fstab

3. # Created by anaconda on Mon Oct 24 02:05:13 2016

4. #

5. # Accessible filesystems, by reference, are maintained under '/dev/disk'

6. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

7. #

8. UUID=147a6e0f-8fa6-4bb5-a27a-91aaa7cf178f / ext4 defaults 1 1

9. UUID=410da4b5-ac87-43e3-ab4a-b33df31e38cf /boot ext4 defaults 1 2

10. UUID=d0c4ed83-d5d3-4245-af14-1434f4b3438f swap swap defaults 0 0

11. tmpfs /dev/shm tmpfs defaults 0 0

12. devpts /dev/pts devpts gid=5,mode=620 0 0

13. sysfs /sys sysfs defaults 0 0

14. proc /proc proc defaults 0 0

15. /dev/sdb5 /data15 ext3 defaults 0 0

16. ~

17. ~

18. ~

19. ~

20. "/etc/fstab" 16L, 841C

【o】 英文小写字母o,在目前光标所在行的下一行处插入新的一行并开始插入
【O】 英文大写字母O,在目前光标所在行的上一行处插入新的一行并开始插入
:wq保存退出

11、查看

1. [root@localhost Desktop]# ls /data*

2. /data15:

3. lost+found

重复以上操作,对sdb1进行挂载

1. [root@localhost Desktop]# mkfs -t ext3 /dev/sdb1

2. mke2fs 1.41.12 (17-May-2010)

3. Filesystem label=

4. OS type: Linux

5. Block size=4096 (log=2)

6. Fragment size=4096 (log=2)

7. Stride=0 blocks, Stripe width=0 blocks

8. 131648 inodes, 526120 blocks

9. 26306 blocks (5.00%) reserved for the super user

10. First data block=0

11. Maximum filesystem blocks=541065216

12. 17 block groups

13. 32768 blocks per group, 32768 fragments per group

14. 7744 inodes per group

15. Superblock backups stored on blocks:

16. 32768, 98304, 163840, 229376, 294912

17.

18. Writing inode tables: done

19. Creating journal (16384 blocks): done

20. Writing superblocks and filesystem accounting information: done

21.

22. This filesystem will be automatically checked every 22 mounts or

23. 180 days, whichever comes first. Use tune2fs -c or -i to override.

24.

25.

26. [root@localhost Desktop]# mount /dev/sdb1 /data5

27.

28.

29. [root@localhost Desktop]# df -TH /data5/

30. Filesystem Type Size Used Avail Use% Mounted on

31. /dev/sdb1 ext3 2.2G 71M 2.0G 4% /data5

32. [root@localhost Desktop]# vim /etc/fstab

33. [root@localhost Desktop]# ls /data*

34. /data15:

35. lost+found

36.

37. /data5:

38. lost+found

39. [root@localhost Desktop]# df -h

40. Filesystem Size Used Avail Use% Mounted on

41. /dev/sda2 18G 4.0G 13G 24% /

42. tmpfs 491M 372K 491M 1% /dev/shm

43. /dev/sda1 291M 34M 242M 13% /boot

44. /dev/sdb5 2.0G 68M 1.9G 4% /data15

45. /dev/sdb1 2.0G 68M 1.9G 4% /data5

同上,又创建了一个逻辑分区

1. [root@localhost Desktop]# fdisk /dev/sdb

2.

3. WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

4. switch off the mode (command 'c') and change display units to

5. sectors (command 'u').

6.

7. Command (m for help): m

8. Command action

9. a toggle a bootable flag

10. b edit bsd disklabel

11. c toggle the dos compatibility flag

12. d delete a partition

13. l list known partition types

14. m print this menu

15. n add a new partition

16. o create a new empty DOS partition table

17. p print the partition table

18. q quit without saving changes

19. s create a new empty Sun disklabel

20. t change a partition's system id

21. u change display/entry units

22. v verify the partition table

23. w write table to disk and exit

24. x extra functionality (experts only)

25.

26. Command (m for help): n

27. Command action

28. l logical (5 or over)

29. p primary partition (1-4)

30. l

31. First cylinder (525-785, default 525):

32. Using default value 525

33. Last cylinder, +cylinders or +size{K,M,G} (525-785, default 785): 4G

34. Value out of range.

35. Last cylinder, +cylinders or +size{K,M,G} (525-785, default 785): 3G

36. Value out of range.

37. Last cylinder, +cylinders or +size{K,M,G} (525-785, default 785): 1G

38. Value out of range.

39. Last cylinder, +cylinders or +size{K,M,G} (525-785, default 785):

40. Using default value 785

41.

42. Command (m for help): p

43.

44. Disk /dev/sdb: 21.5 GB, 21474836480 bytes

45. 255 heads, 63 sectors/track, 2610 cylinders

46. Units = cylinders of 16065 * 512 = 8225280 bytes

47. Sector size (logical/physical): 512 bytes / 512 bytes

48. I/O size (minimum/optimal): 512 bytes / 512 bytes

49. Disk identifier: 0x1949791c

50.

51. Device Boot      Start         End      Blocks   Id  System

52. /dev/sdb1 1         262     2104483+  83  Linux

53. /dev/sdb4 263         785     4200997+   5  Extended

54. /dev/sdb5 263         524     2104483+  83  Linux

55. /dev/sdb6 525         785     2096451   83  Linux

56.

57. Command (m for help): w

58. The partition table has been altered!

59.

60. Calling ioctl() to re-read partition table.

61.

62. WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

63. The kernel still uses the old table. The new table will be used at

64. the next reboot or after you run partprobe(8) or kpartx(8)

6.5.3. 挂载NFS

服务端#

安装 NFS 服务

#执行以下命令安装 NFS 服务,

#apt 会自动安装 nfs-common、rpcbind 等软件包

sudo apt install nfs-kernel-server

创建共享目录

在服务器端创建 /nfs 目录。

编写配置文件

vim /etc/exports

#[任意主机所有权限]

/nfs   *(rw,sync,insecure,no_subtree_check,no_root_squash)

重启 NFS 服务

sudo service nfs-kernel-server restart

常用命令工具

#在安装 NFS 服务器时,已包含常用的命令行工具,无需额外安装

#显示已经 mount 到本机 NFS 目录的客户端机器

sudo showmount -e localhost

#将配置文件中的目录全部重新 export 一次,无需重启服务

sudo exportfs -rv

#查看 NFS 的运行状态

sudo nfsstat

#查看 rpc 执行信息,可以用于检测 rpc 运行情况

sudo rpcinfo

客户端#

安装客户端工具

#在需要连接到 NFS 服务器的客户端机器上,

#需要执行以下命令,安装 nfs-common 软件包。

#apt 会自动安装 nfs-common、rpcbind 等软件包

sudo apt install nfs-common

查看 NFS 服务器上的共享目录

#显示指定的 NFS 服务器(假设 IP 地址为 192.168.3.167)上 export 出来的目录

sudo showmount -e 192.168.3.167

创建本地挂载目录

sudo mkdir -p /nfs

挂载共享目录

#假设 NFS 服务器 IP为 192.168.3.167,可以如下设置挂载

sudo mount -t nfs 192.168.3.167:/nfs /nfs

查看客户端挂载信息

df -h

6.5.4. 挂载U盘

如果想让linux识别U盘,需要把鼠标先定位在虚拟机的linux里面,然后插入优盘,优盘才会被linux识别,再用fdisk -l 来查看U盘的情况。

/dev/sda1   *           1           6       48163+  83  Linux

/dev/sda2               7         515     4088542+  83  Linux

/dev/sda3             516         776     2096482+  82  Linux swap / Solaris

/dev/sda4             777        2610    14731605    5  Extended

/dev/sda5             777        2610    14731573+  83  Linux

Disk /dev/sdb: 7985 MB, 7985954816 bytes

231 heads, 28 sectors/track, 2411 cylinders

Units = cylinders of 6468 * 512 = 3311616 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               2        2412     7794688    b  W95 FAT32

如果是fat格式的U盘,挂载命令:mount  -t  vfat  /dev/sdb1  /mnt/udisk

如果是ntfs格式的U盘,挂载命令:mount  -t  ntfs-3g  /dev/sdb1  /mnt/udisk

如果没有/mnt/udisk文件夹,可以创建一个

mkdir /mnt/udisk

即可~

但是注意,ntfs格式要挂载的话,需要下载一个ntfs-3g-2011.4.12-5.el5.i386.rpm包,安装一下~

百度一下这个包名,去CSDN下载

6.5.5. 磁盘与命令问题 fdisk mount ls df
6.5.5.1. ls df 卡住

1、首先就是使用strace去追踪到底在哪里卡住了

strace df -h

2、如果没有strace命令则进行安装即可

yum install strace 或者apt install strace

3、显示出卡住的地方

statfs(“/statics”,

4、重启卡住的服务是挂载NFS服务器宕机导致无法正常连接

当NFS Client无法访问NFS Server的时候,在Client上df -h操作就会卡住.这个时候

就需要将挂载的NFS卸载掉,在不知道挂载点的情况下,可以使用nfsstat -m命令来查看.

nfsstat未安装的话可以配置好yum源直接yum安装:yum install -y nfsstat

root@ubuntu:~# nfsstat -m

/projects from 10.10.10.1:/data/projects

Flags: rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,

port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.10.10.18local_lock=none,addr=10.10.10.

/statics from 10.10.10.1:/data/statics

Flags: rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,

port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.10.10.18,local_lock=none,addr=10.10.10.

umount -f /statics 强制卸载目录(由于NFS服务器已经迁移走服务无法启动正常使用,强制卸载是无法卸载掉的)

此处因为客户的IP地址是一个桥接网络IP ,所以在停用客户的ip:10.10.10.18后强制卸载即可。

5、强制卸载后正常使用 df -h

6.5.5.1.1. 检查方法

(base) root@master:~# cat /etc/fstab

# /etc/fstab: static file system information.

#

# Use 'blkid' to print the universally unique identifier for a

# device; this may be used with UUID= as a more robust way to name devices

# that works even if disks are added and removed. See fstab(5).

#

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

# / was on /dev/ubuntu-vg/ubuntu-lv during curtin installation

/dev/disk/by-id/dm-uuid-LVM-JS3xgJR9wbD4wMaIUrsZzqJZAFmb9sLrTJb2yxcovRmqSIKrBHsKnJM6ZUFqBanN / ext4 defaults 0 0

# /boot was on /dev/sdd2 during curtin installation

/dev/disk/by-uuid/8a43d09d-2680-44e0-8c85-f05f515085a1 /boot ext4 defaults 0 0

# /boot/efi was on /dev/sdd1 during curtin installation

/dev/disk/by-uuid/1F4C-D179 /boot/efi vfat defaults 0 0

##/swap.img     none    swap    sw      0       0

6.5.5.1.2. 检查方法

(base) root@master:~# tail -f /var/log/messages

tail: 无法打开'/var/log/messages' 读取数据: 没有那个文件或目录

tail: 没有剩余文件

6.5.5.1.3. 检查方法

(base) root@master:~# cat /etc/exports

# /etc/exports: the access control list for filesystems which may be exported

/nfs   192.168.103.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)

/data/kubeflow/katib    192.168.103.0/24(rw,sync,no_root_squash)

/data/kubeflow/metadata 192.168.103.0/24(rw,sync,no_root_squash)

/data/kubeflow/minmo    192.168.103.0/24(rw,sync,no_root_squash)

/data/kubeflow/mysql    192.168.103.0/24(rw,sync,no_root_squash)

/data/kubeflow/defstor  192.168.103.0/24(rw,sync,no_root_squash)

/home/ubuntu227/kubeflowApp/kubeflow/test-gpu 192.168.103.0/24(rw,sync,no_root_squash)

/home/ubuntu227/kubeflowApp/kubeflow/test-tf-torch 192.168.103.0/24(rw,sync,no_root_squash)

6.5.5.1.4. 处理方法

这里定位到是nfs服务的问题

stat("/var/lib/kubelet/pods/84e4f5b5-a606-4b3e-940d-1e6ace52a333/volumes/kubernetes.io~secret/coredns-token-vqq69", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=140, ...}) = 0

stat("/var/lib/kubelet/pods/f9b1fa9e-ee64-46b6-82a1-1b8a4106f163/volumes/kubernetes.io~secret/calico-node-token-kdwjh", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=140, ...}) = 0

stat("/var/lib/kubelet/pods/bc33e3f6-624c-47fe-b3c9-23274f1aa868/volumes/kubernetes.io~secret/default-token-5bz9w", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=140, ...}) = 0

stat("/var/lib/kubelet/pods/75391a4b-6dcb-4022-9d3a-d5aa5e003b63/volumes/kubernetes.io~secret/default-token-jzv95", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=140, ...}) = 0

stat("/var/lib/kubelet/pods/0ea681b7-3276-4658-b9f3-c50dd791c958/volumes/kubernetes.io~secret/default-token-jzv95", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=140, ...}) = 0

stat("/var/lib/kubelet/pods/53b02c29-fa45-4bb9-97a2-16eaa906ec60/volumes/kubernetes.io~secret/default-token-jzv95", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=140, ...}) = 0

stat("/var/lib/kubelet/pods/0ea681b7-3276-4658-b9f3-c50dd791c958/volumes/kubernetes.io~nfs/algorithm-imagenet-nfs",

^C^C^C^C^C^C

先卸载nfs挂载磁盘(根据nfsstat -m命令)

umount -f var/lib/kubelet/pods/0ea681b7-3276-4658-b9f3-c50dd791c958/volumes/kubernetes.io~nfs/algorithm-imagenet-nfs

或者

umount -f /nfs (根据cat /etc/exports命令)

然后重启nfs服务

sudo service nfs-kernel-server restart

经此操作后面执行ls df命令正常

6.6. 软件管理
6.6.1. apt软件管理
6.6.1.1. 更新软件源(服务器)

/etc/apt/source.list

apt-get update

默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# 预发布软件源,不建议启用

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

然后 sudo apt-get update

最后附上国内几个镜像源网址清华大学开源软件镜像站阿里云开源镜像站网易开源镜像站

6.6.1.2. 更新软件索引缓存

$sudo apt-get update

更新数据,使本机数据和服务器(/etc/apt/sources.list列出)上面的信息保持一致

6.6.1.3. 安装软件

安装前先升级一下软件及资源表:

$sudo apt-get install update

$sudo apt-get install upgrade

$sudo apt-get install packagename

$sudo apt-get remove packagename+

$sudo apt-get install package=version 安装指定版本

$sudo apt-get --reinstall install packagename 修复/重新安装最新版本

6.6.1.4. 卸载软件

$sudo apt-get install packagename-

$apt-get remove packagename 卸载软件、依赖部分。

$apt-get --purge remove packagename#卸载软件、依赖部分、配置文件。

6.6.1.5. 下载源码

$sudo apt-get source <你要下载的源代码包名>

6.6.1.6. 升级软件

1.#apt-get -u upgrade

这里加上-u选项列出将要升级的软件,可能会提示有些软件不会升级,因为可能会破坏依赖关系,更好的方法是利用apt-get dist-upgrade

你可以通过cd或者添加源地址来更新,如果你想从cd来升级,首先运行apt-cdrom把cd中的软件添加到/etc/apt/sources源中,然后运行apt-get dist-upgrade来升级,但是因为apt-get总是使用最新版本,如果cd中的不是最新的版本,那么也不会用到cd。

2.#apt-get -u dist-upgrade

这样安装的软件前面apt-get -u upgrade安不了的也会安装了,但个别的仍然不能安装,例如:升级会导致需要卸载一些包,卸载这些包会导致另外的软件不能用,所以就不升级了。

3.#apt-get -u install packagename

假设前面升级的时候packagename无法升级,那么这个命令会升级packagename如果需要卸载默写模块而卸载这些模块导致一些软件无法使用,那么干脆把这些软件都卸载了,然后升级,这个命令会导致packagename最终升级了。

6.6.1.7. 清理软件

清理没用的包文件

安装软件包的时候,apt会从/etc/apt/sources.list里面将相应的软件包存放在一个本地的文档库中(/var/cache/apt/archives/)然后安装,这些文件会随着安装时间越来越大。

*清理所有的缓存文件:

#apt-get clean

这会清理所/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/中没有被锁定的文件。当然你再次安装软件的时候,这个软件又被恢复到本地文档库中了。

*仅仅清理旧的缓存文件:

#apt-get autoclean

这会清理旧版本的/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/中的文件。旧版本是指已经有更新的版本的软件了,再下载的话应下载最新的而不是这个旧版本的了。根据apt-show-versions -p可以知道哪些是旧的。

6.6.1.8. 查找软件

*查找一个含有packagename字符串的包:

#apt-cache search packagename

*显示详细信息(安装/未安装):

# apt-cache show packagename

*显示信息:

apt-cache showpkg packagename

这会显示大致的信息。

*查看升级信息:

$ apt-show-versions -u

*查看最新版本:

apt-show-versions -p packagename

*检查依赖包:

#apt-cache depends packagename

*安装编译源代码需要的库(包):

# apt-get build-dep packagename

*查看编译一个包需要哪些其他的库(包):

#apt-cache show packagename

如果你只是想要检查编译一个包需要哪些其他的包

*下载包packagename的源代码:可能在当前目录下载的文件:*.orig.tar.gz,*.dsc,*.diff.gz

$ apt-get source packagename

解压源码包:利用.dsc文件把源代码包解压到目录

#dpkg-source

*根据下载源码创建deb包:packagename-version.每一个下载的源代码包里面都有一个debian/目录用于创建.deb包。

$ dpkg-buildpackage -rfakeroot -uc -b

linux deb文件安装

dpkg 是Debian Package的简写,是为Debian 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自Debian的Linux发行版都使用dpkg,例如Ubuntu、Knoppix 等。

通过apt-get 安装的包位置在:

root@wheezy-armel:/var/cache/apt/archives 11:39:33

comerr-dev_2.1-1.42.5-1.1+deb7u1_armel.deb

krb5-multidev_1.10.1+dfsg-5+deb7u7_armel.deb

以下是一些 Dpkg 的普通用法:

1、dpkg -i <package.deb>

安装一个 Debian 软件包,如你手动下载的文件。

2、dpkg -c <package.deb>

列出 <package.deb> 的内容。

3、dpkg -I <package.deb>

从 <package.deb> 中提取包裹信息。

4、dpkg -r <package>

移除一个已安装的包裹。

5、dpkg -P <package>

完全清除一个已安装的包裹。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件。

6、dpkg -L <package>

列出 <package> 安装的所有文件清单。同时请看 dpkg -c 来检查一个 .deb 文件的内容。

7、dpkg -s <package>

显示已安装包裹的信息。同时请看 apt-cache 显示 Debian 存档中的包裹信息,以及 dpkg -I 来显示从一个 .deb 文件中提取的包裹信息。

8、dpkg-reconfigure <package>

重新配制一个已经安装的包裹,如果它使用的是 debconf (debconf 为包裹安装提供了一个统一的配制界面)。

*直接利用包管理器根据下载源码来安装包:

# dpkg -i file.deb

-------dpkg查找

*根据文件查找软件包:

# dpkg -S stdio.h

libc6-dev: /usr/include/stdio.h

perl: /usr/lib/perl/5.6.0/CORE/nostdio.h

*查找已经安装的软件包:

dpkg -l

*自动安装缺失的软件:

# auto-apt run command

这里,command是你要运行的命令。例如 auto-apt run ./configure .当缺失依赖软件的时候,它会询问你安装,方便了编译。安装之后会继续运行。auto-apt需要保持一个最新的数据库,利用这个命令进行更新:auto-apt update, auto-apt updatedb and auto-apt update-local。

--------apt-get查找

*利用apt-file根据文件名查找相应的软件包(包括未安装的包):

$ apt-file search filename

当你编译的时候,提示缺了什么头文件的时候,利用这个很方便地确定需要装哪些软件包(当然利用audo-apt更方便

*列出一个软件包中包含的文件:

$apt-file list packagename

*更新apt-file的数据库:

# apt-file update

默认情况下,apt-file的数据库和auto-apt是一样的。

6.6.1.9. 常用软件

sudo apt-get install build-essential make cmake automake autoconf gcc g++ gdb

ssh samba smbclient smbfs tftp ftp telnet subversion uuid-dev mtd-utils nfs-kernel-server nfs-common

arm-linux-

arm-linux-androideabi-

JDK

JRE

6.6.1.10. 软件异常
6.6.1.10.1. 源更新错误

原因:

1.网络问题,不能ping通外网ip(请设置路由),不能ping通域名如qq.com(请设置dns)。

2.源问题,请更新源。

6.6.1.10.2. 包安装错误

wps7F9A.tmp

在浏览器上不能fetch的地址:http://mirrors.aliyun.com/debian/pool/main/a/autoconf/如下:

wps7F9B.tmp

可以看到没有2.69-1.all.deb文件

7. Linux/Win双系统安装

https://blog.csdn.net/yucicheung/article/details/72844727

http://blog.sina.com.cn/s/blog_14d58ade60102wnbx.html

https://blog.csdn.net/ubunfans/article/details/46544175/

https://jingyan.baidu.com/article/e4d08ffdace06e0fd2f60d39.html

https://blog.csdn.net/weixin_38233274/article/details/80237572

硬盘方法安装linux系统。

百度下载easybcd.

wps7F9C.tmp

wps7F9D.tmp

点击“Configure”按钮后,会出现一个记事本文件,将下面的代码粘贴到文件尾部:

title Install ubuntu-gnome-14.04

root (hd1,4)

kernel (hd1,4)/vmlinuz boot=casper iso-scan/filename=/ubuntu-gnome-14.04-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8

initrd (hd1,4)/initrd.lz

wps7F9E.tmp

特别说明:

  上述代码中“ubuntu-gnome-14.04-desktop-i386”为你下载的ubuntu 14.04系统镜像文件名,这个文件名是可以修改的,但修改的名字一定要与写入的代码名字一致,否则将无法引导安装;

(hd1,4) 表示磁盘分区,

比如:

       hd(0,0), hd(0,1), hd(0,2), hd(0,3)表示主分区, (hd0,4)以后的表示逻辑分区,就好比我现在这里设置的是(hd1,4)----第二个硬盘的第一个逻辑分区。

重启即可进入安装步骤。

U盘方法安装linux系统。

如果在安装ubuntu时出现 “正在探测文件系统。。”这此处卡住了。。。。出现问题的原因是没有将挂载的分区卸载。

执行 sudo umount -l isodevice 即可!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值