**如何解决虚拟机正在被使用问题:**将后缀为vmx.lck文件删除

Linux的使用


当更改某项配置时,先查看脚本文件有无相关设置.(系统配置脚本文件在/etc,用户配置文件在~)

查看当前目录pwd

查看版信息

cat /etc/redhat-release

cat /etc/issue

  • 查看正在运行的内核版本

    cat /proc/version

  • -bash:........
    bash 是shell的名称

help与man page 以及/usr/share/doc


help给出的是指令的参数和所具备的选项 man是详细说明(q结束)

  • man page数字的含义
  1. 指令或执行文件
  2. 系统核心可调用的函数与工具
  3. 一些常用的函数(function)与函数库(library)
  4. 设备文件的说明,通常在/dev下的文件
  5. 配置文件或者文件格式
  6. 游戏
  7. 管理与协议
  8. 管理员可以用的指令

文件内容的权限


注意所有的权限都是针对文件内容的权限(针对里面的东西)
r:文件的内容可视
w:文件的内容可控制
x:文件的内容可执行

  • chgrp 更改文件所在组

chgrp [-R] groupName file

  • chown 更改文件拥有者

chown [-R] userName file

  • chmod 更改文件权限
    1)数字:r=4 w=2 x=1 可读可写可执行r+w+x=7
  1. 字符:分三种身份u,g,o,a是所有身份 三种权限r,w,x 。设置=,添加+,除去-

chmod 770 fileName
chmod u=rwx,o=x fileName

  • 复制cp(注意复制过后修改权限)

cp file newFile

创建/删除目录

  • mkdir directory 创建新目录
  • rmdir directory 删除目录

复制,删除,移动

  • cp(复制文件或者目录)

cp [-adfilprsu] source destination
cp [options] source1 source2 source3..directory //多个源文件时最后的目标文件一定要是一个目录

  1. -a:相当于-dr --preserve=all的意思。
  2. -d:若源文件为链接文件,则复制连接文件属性而非链接指向的文件本身。
  3. -r:递回持续复制,用于复制目录。
  4. -f:force强制复制,若文件已存在且无法打开,则移除后再尝试一次。
  5. -i:询问复制,若文件已存在,再覆盖前会询问
  6. -p:全部复制,连同文件的属性一起复制,不使用默认属性,常用于备份。
  7. -l:进行硬式链接文件(hard link)创建,而非文件本身
  8. -s:复制成为快捷方式,符号链接文件(symbolic link)
  9. -u:目标文件比源文件旧才复制更新
  10. --preserve=all:除了-p的权限相关参数外,还加入SELinux的属性,links,xattr等也复制了。

复制时要了解:是否要完整复制信息,是否是连接文件,是否为目录

  • rm(移除文件或目录)

rm [-fir] 文件或目录

  1. -f:force强制删除,不会存在警告讯息。
  2. -i:互动模式,在删除前会询问使用者是否动作。
  3. -r:递回删除,常用于删除目录,影响比较大。
    (rmdir仅适用于删除空文件夹) -r与-f要谨慎使用
  • mv(移动文件与目录,或更名)

mv [-fiu] source destination

  1. -f:force强制,如果目标已存在,不询问直接覆盖。
  2. -i:询问模式,如果目标已存在会询问。
  3. -u:若目标已存在,且source比较新才会更新。

多个源文件时目标文件一定是目录,可用于变更文件名

文件内容查询

  • cat(concatenate)直接检视文件内容

cat [-AbEnTv]

  1. -A:相当于-vET的整合选项,可列出一些特殊字符而不是空白而已
  2. -b:列出行号,仅针对非空白行做行号显示。
  3. -E: 将结尾的断行字符$显示出来
  4. -n:打印出行号,连同空白行也会有行号
  5. -T:将[tab]按键以^I显示出来
  6. -v:列出一些看不出来的特殊字符

从第一行开始显示文件所有内容,不适合长文本

  • tac(反向列示与cat相反)

tac

  • nl(添加行号打印)

nl [-bnw] 文件

  1. -b:指定行号指定的方式,主要有两种:
    -b a:不论是否为空行,也同样列出行号
    -b t:空行不列行号(默认值)
  2. -n:列出行号表示的方法,主要有三种:
    -n ln:行号在屏幕最左方显示
    -n rn:行号在自己字段最右方显示,且不加0
    -n rz:行号在自己字段的最右方显示,加0
  3. -w:行号字段占用的字符数。
    为显示内容自动添加行号,并对行号有更多操作

可翻页检视

  • more(一页页翻动)
    空白键:向下翻页
    Enter:向下一行
    /字串:从当前显示的内容中,向下搜索“字串” ,重复搜同一内容按n
    :f:显示文件名以及当前行
    q:退出
    b:往回翻页

  • less(一页页翻动)比more更灵活
    空白键:向下翻页
    上下键:向上向下一行
    /字串:向下搜索
    ?字串:向上搜索
    n:重复上一个搜索操作
    N:反向重复上一个操作
    g:跳到第一行
    G:跳到最后一行
    q:退出

数据提取

  • head(提取前面几行)

head [-n number] 文件

-n:后面接数字,代表显示几行
默认显示前十行

  • tail(提取后面几行)
    -n:后面接数字,代表显示几行
    -f:表示持续监测后面所接的文件名,CTRL-c终止(用于持续监控)

tail [-n number]文件
tail -n +100 /etc/man_db.conf 用来显示100行以后的所有内容

注意-f的用法和显示多少行后的内容的用法
示例:查看11到20行

head -n 20 /etc/man_ | tail -n 11

非纯文本文件od(查看可执行文件)

由于可执行文件通常是binary file,使用其他指令查看通常会出现乱码的数据,所以用od。

od [-t TYPE] 文件

参数:
-t:后面接各种类型的输出,例如:
a:利用默认的字符来输出
c:使用ASCII来输出
d[size]:利用十进制输出数据,每个整数占用size Bytes;
f[size]:利用浮点数来输出,每个浮点数占用size Bytes;
o[size]:利用八进制来输出,每个整数占用size Bytes;
x[size]:利用十六进制来输出数据,每个整数占用size Bytes;
注意:默认是十六进制类型输出!可以选择多种输出类型并进行比较
将/etc/issue这个文件的内容以8进位列出存储值与ASCII的对照表:

od -t oCc /etc/issue

修改文件时间或创建新文件 touch

  • 三个主要的时间参数:
    1)modification time (mtime):文件内容变更时
    2)status time(ctime):文件状态 (权限或属性)变更时
    3)access time(atime):文件内容被读取时
    一个文件被完全复制(cp -a),ctime会是当前时间
    例子:

date; ls -l /etc/man-db.conf ; ls -l --time=atime /etc/man-db.conf ;ls -l --time=ctime /etc/man-db.conf

默认情况下ls显示的是mtime

  • touch

touch [acdmt] file

选项与参数:
-a:仅修订access time(atime)
-c:仅修改文件的时间,若文件不存在则不创建文件
-d:可以指定修改时间而不用当前的时间
-m:仅修改mtime
-t:可以指定修改时间而不用当前的时间
不论怎么更改时间,ctime总记录当前时间

touch testTouch

在默认状态下会将文件的三个时间刷新为当前时间,若文件不存在,则创建一个新的空文件

默认权限与隐藏权限

  • 文件的默认权限是:读、写。即:-rw-rw-rw-
  • 目录的默认权限是:读、写、执行。即:drwxrwxrwx 在不同的用户需要有不同的默认权限,使用umask进行限定
  • umask
    例如:

[admin@localhost Desktop]$ umask
0002
[admin@localhost Desktop]$ umask -S
u=rwx,g=rwx,o=rx

//在admin用户下默认权限是u=rwx,g=rwx,o=rx;使用数值显示就是0002(使用的减法,o-2的意思)如果是root则是0022
设置默认权限:

umask 002 //将当前用户的默认权限设置为o-w

  • 文件的隐藏权限及其设置
    1 SUID(4)
    2 SGID(2)
    3 SBIT(1)
    设置方法:三个在基本权限前加数字

指令与文件的搜索

  • 指令文件所在目录的搜索 which和type

[admin@localhost Desktop]$ which ifconfig
/sbin/ifconfig
[admin@localhost Desktop]$ type ifconfig
ifconfig is /sbin/ifconfig

which -a command 将所有由PATH目录中可以找到的指令均列出(不加-a的话查找到一个就结束了)
注意:which是从PATH目录中查找,如果是bash内置的指令将查找不到

  • 根据文件名搜索文件所在目录有whereis、locate、find(不常用)。

    1. whereis 从一些特定的目录中寻找文件(所以比较快)

      whereis [ -sbmu ] name.....

      -l:列出从哪些目录中搜索
      -b:只找binary(二进制)格式的文件//可执行文件
      -m:只找在说明文档manual路径下的文件
      -s:只找source来源文件
      -u:搜索不在上述三个项目当中的其他特殊文件

  • locate 根据/var/lib/mlocate内的数据库记录,查找相关的文件
    第一次执行的时候没有数据库文件,先updatedb生成数据库文件。注意:如果未查找到文件可能是数据库尚未更新
    -i:忽略大小写差异
    -c:不输出文件名,只统计文件的数量
    -l:设置仅输出几行信息
    -S:输出所使用的数据库文件的相关信息
    -r:后面可接正则表达式的显示方式

  • updatedb 根据/etc/updatedb.conf的设置去寻找系统盘内的文件名,并更新/var/lib/mlocat内的数据库文件

  • find是个很强大的搜索指令,但消耗硬盘资源较大。
    find [PATH][option][action]
    选项与参数:

    1. 与时间有关的选项:共有-atime,-ctime,-mtime,以-mtime说明
      -mtime n:在n天之前的**“一天之内”**被更动过内容的文件;
      -mtime +n:在n天之前(不含n天)被更动过的文件;
      -mtime -n:在n天之内(含n天)被更动过的文件; -newer file:列出比file还要新的文件
      举例:
      列出24小时内更动过的文件

      find / -mtime 0

      //0是重点,代表当前的时间,意思是当前一天内被更动过的文件
      寻找/etc下比/etc/passwd新的文件

      find /etc -newer /etc/passwd

    2. 与使用者或群组名称有关的参数:
      -uid n:UID记录在/etc/passwd里
      -gid n:GID记录在/etc/group
      -user name:使用者的账号名称
      -group name:群组名称
      -nouser:寻找文件的拥有者不存在/etc/passwd的文件
      -nogroup:寻找文件的所在组不存在于/etc/passwd的文件
      (当自行安装软件时很可能属性当中并没有拥有者)

    3. 与文件权限及名称有关的参数:
      -name filename :搜寻文件名称为filename的文件;
      -size [+-] SIZE :搜寻比SIZE还要大(+)小(-)的文件
      SIZE的规格有:
      c:代表Byte,k:代表1024Bytes(KB)


-	ifconfig已经过时了,查看ip地址或者ip连接使用ip  
-	ip -s addr 查看IP地址信息

关于服务

  • 服务
  1. 查看开启的服务
    遍历所有的服务:service --status-all
    查看某个服务的运行状态:service servcieName status
  2. 开启服务
    service serviceName start
  3. 查看开机自启的服务
    chkconfig --list
    chkconfig --list serviceName
  4. 更改开机自启的服务 增加服务chkconfig --add xxx

1启动一个服务:systemctl start firewalld.service 2关闭一个服务:systemctl stop firewalld.service 3重启一个服务:systemctl restart firewalld.service 4显示一个服务的状态:systemctl status firewalld.service 5在开机时启用一个服务:systemctl enable firewalld.service 6在开机时禁用一个服务:systemctl disable firewalld.service 7查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $? 8查看已启动的服务列表:systemctl list-unit-files|grep enabled




设置文件可以更改不可删除chattr +a

chattr +a可以设置文件或者文件夹可以增改但无法删除,实际使用时要用管理员权限,有个问题:

sudo chattr +a 文件名

当设置某个文件时,会使文件无法删除的同时变得不可被更改,管理员权限也没用

sudo chattr +a 文件夹名称

设置某个文件时可以达到文件夹内的文件无法被删除而且还可以更改的效果



Debian linux上安装MySQL数据库

程序安装目录:/usr/local/program 数据安装目录:/data/mysql

sudo dpkg -i mysql-common_5.6.28-1ubuntu14.04_amd64.deb sudo dpkg -i libmysqlclient18_5.6.28-1ubuntu14.04_amd64.deb sudo dpkg -i libmysqlclient-dev_5.6.28-1ubuntu14.04_amd64.deb sudo dpkg -i libmysqld-dev_5.6.28-1ubuntu14.04_amd64.deb mysql-community-client_5.6.44-1debian9_amd64.deb sudo dpkg -i mysql-community-server_5.6.44-1debian9_amd64.deb


设置静态地址

/etc/sysconfig/net.../第一个 更改主机名称 hostnamectl set-hostname Name 将主机名与地址绑定 /etc/hosts 通过ssh连接其他Linux系统 ssh admin@192.168.56.13


远程连接上传下载文件

通过scp从其他Linux上传下载文件

1、从服务器上下载文件 scp username@servername:/path/filename /var/www/local_dir(本地目录)

例如scp root@192.168.0.101:/var/www/test.txt 把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)

2、上传本地文件到服务器 scp /path/filename username@servername:/path

例如scp /var/www/test.php root@192.168.0.101:/var/www/ 把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中

3、从服务器下载整个目录 scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)

例如:scp -r root@192.168.0.101:/var/www/test /var/www/

4、上传目录到服务器 scp -r local_dir username@servername:remote_dir 例如:scp -r test root@192.168.0.101:/var/www/ 把当前目录下的test目录上传到服务器的/var/www/ 目录


重启防火墙

firewall-cmd --reload #重启firewall systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)


安装配置jdk
  1. 使用rpm查看已安装的程序

    rpm -qa 查看所有已安装的程序 rpm -qa | grep java 通过管道“|”使用grep文本筛选查看安装的所有名字里有java的程序 结果如下: java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 python-javapackages-3.4.1-11.el7.noarch tzdata-java-2016g-2.el7.noarch javapackages-tools-3.4.1-11.el7.noarch java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 要删除“java-”开头的4个程序,更改筛选条件 rpm -qa | grep ^java- java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 rpm -qa | grep ^java- |xargs rpm -e --nodeps 将查询结果使用通道”|“交给过滤器”xargs“处理为为参数交给”rpm -e --nodeps“删除掉 rpm -qa | grep ^java- 再检查一遍是否真的删除了

  2. 配置环境变量

    vi /etc/profile 添加: export JAVA_HOME=/usr/soft/jdk1.8.0_111 export PATH=$PATH:$JAVA_HOME/bin source /etc/profile 使配置文件立即生效