修改用户名

例:将admin改为test(ubuntu)

  • 修改 /etc/passwd用户信息文件

    1
    vim /etc/passwd
    1
    2
    3
    #admin:x:1001:1001:admin,,,:/home/admin:/bin/bash
    #把用户名admin改成rest
    #test:x:1001:1001:admin,,,:/home/test:/bin/bash

    注:

    1
    2
    admin:x:1001:1001:admin,,,:/home/admin:/bin/bash
    中的admin,,,不可修改,若修改后重启,你将会因为密码错误而不能成功登入系统(只得去机房重新注册用户了)
  • 修改 /etc/shadow用户密码文件

    1
    vim /etc/shadow
    1
    2
    3
    #admin:Dnakfw28zf38w:8764:0:168:7:::
    #由于密码加密方式存放,只修改用户名即可(密码不变)
    #test:Dnakfw28zf38w:8764:0:168:7:::
  • 再修改 /etc/group用户组文件

    1
    vim /etc/group
    1
    2
    3
    #admin:x:1:root,bin,admin
    #修改admin组为test组
    #test:x:1:root,bin,test
  • 修改用户的家目录

    1
    mv /home/admin /home/test
  • xx is not in the sudoers file 问题解决

    首先利用whereis 命令查找sudoers配置文件的目录(默认会在/etc/sudoers)

    1
    whereis sudoers

    然后就可以利用vi编辑器来把用户添加到sudoers之中

    1
    vi /etc/sudoers

    然后找到root ALL=(ALL) ALL 或者 root ALL=(ALL:ALL) ALL所在的位置,把所要添加的用户添加到文件之中

    下面是添加完的结果。

    1
    2
    3
    4
    Allow root to run any commands anywhere

    root ALL=(ALL) ALL
    maliang ALL=(ALL) ALL(这一行是添加的内容,maliang是我的用户名)

修改用户密码

在终端运行

1
passwd username
1
2
3
4
5
6
改变口令为 username。
(当前)UNIX 口令:<输入现在的密码>
输入新的 UNIX 口令: <输入新密码>
重新输入新的 UNIX 口令:<重新输入新密码>

passwd:已成功更新密码

修改主机名

1
2
3
4
5
6
7
# 修改配置文件(追加到最后一行的下一行)
vi /etc/hosts
# 格式:172.18.195.158 localhost

cat /etc/hosts
# 修改主机名执行命令:
hostnamectl set-hostname localhost

开启root用户和使用root用户登陆

  1. 以普通用户登录系统,创建root用户的密码

    1
    sudo passwd root
  2. 修改文件sudo vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf文件,增加两行:

    1
    2
    greeter-show-manual-login=true
    allow-guest=false

    保存

  3. 修改/etc/pam.d/gdm-autologin/etc/pam.d/gdm-password文件和/root/.profile文件ubuntu-18.04需要此步骤

    1
    vi /etc/pam.d/gdm-autologin

    注释掉:auth required pam_succeed_if.so user != root quiet_success 保存

    1
    vi /etc/pam.d/gdm-password

    注释掉:auth required pam_succeed_if.so user != root quiet_success 保存

    1
    vim /root/.profile

    将文件末尾的mesg n || true这一行修改成tty -s && mesg n || true 保存

  4. 重启系统,输入root用户名和密码,登录系统

  • 解决Ubuntu18.04不能用Xshell使用root用户登录

    今天使用Xshell6连接Ubuntu18.04时,连接普通用户可以,但是连接root用户不行(但是实体机或者虚拟机可以root用户登录)

    解决方案是:

    在Ubuntu18.04中 修改 /etc/ssh/sshd_config这个文件:

    1
    vim /etc/ssh/sshd_config

    这是没修改前的:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    ...
    # Authentication:

    #LoginGraceTime 2m
    #PermitRootLogin prohibit-password
    #StrictModes yes
    #MaxAuthTries 6
    #MaxSessions 10
    ...

    修改后的:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
    # Authentication:

    LoginGraceTime 2m
    #PermitRootLogin prohibit-password
    PermitRootLogin yes
    StrictModes yes
    #MaxAuthTries 6
    #MaxSessions 10
    ...

    然后再在终端输入一下命令:/etc/init.d/ssh restart 来重启ssh服务

    重新使用root连接,就可以了

找出文件所在的位置

1
whereis sudoers(你要找的文件名)

linux find 命令查找文件和文件夹

查找目录:find /(查找目录范围) -name '查找关键字' -type d
查找文件:find /(查找目录范围) -name '查找关键字' -print

查看端口占用并杀死(kill)

Linux

1
2
3
4
# 查看
sudo netstat -tlnp|grep 9090
# 查看
ps aux|grep yum
1
2
# 杀死
kill -9 31540

Window

  • 第一步,打开cmd命令窗口,输入命令,根据端口号查找对应的进程号

    1
    netstat -ano | findstr 80 //列出进程极其占用的端口,且包含 80

    结果如下:

    发现 8080 端口被 PID(进程号)为 9268 的进程占用。

  • 第二步, 据进程号寻找进程名称

    1
    tasklist | findstr 9268

    根据进程号从任务管理器中查找该程序,手动杀死即可。

    但是我发现,【有时候】在任务管理器中找不到该程序。只好从命令行杀死该程序了,命令如下:

    1
    taskkill -PID <进程号> -F //强制关闭某个进程

    这样就把占用8080端口的进程给干掉了,终于可以愉快的不用重启电脑了。

如何从Yum库下载rpm包但不安装

方法一(推荐)

1
2
# 将一个包(包含所有依赖)下载到一个指定的目录(如/opt/gccmkdir/):
yum install -y gcc --downloadonly --downloaddir=/opt/gccmkdir/

方法二

1
2
# --resolve 表示为下载依赖
yumdownloader lsof --resolve --destdir=/data/mydepot/

方法三(推荐)

1
2
3
4
5
# 把/etc/yum.conf配置中的keepcache=0参数修改为keepcache=1
# 再yum 下载:
yum install -y gcc
#默认情况下,RPM包会保存在下面的目录中:
/var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages

apt-get 与 yum安装有啥区别

rpm包和deb包是两种Linux系统下最常见的安装包格式,在安装一些软件或服务的时候免不了要和它们打交道。
rpm包主要应用在RedHat系列包括 Fedora等发行版的Linux系统上,
deb包主要应用于Debian系列包括现在比较流行的Ubuntu等发行版上。

我们知道如果要安装现成的这两种包的话,安装rpm包的命令是“rpm -参数”,安装deb包的命令是“dpkg -参数”。而Linux系统很方便和人性化的一点就是很多软件或服务根本就不用我们去下载,直接使用相应的命令就可以管理了,可能这就是传说中的 “云”的概念。

1
2
3
4
yum可以用于运作rpm包,例如在Fedora系统上对某个软件的管理:
安装:yum install <package_name>
卸载:yum remove <package_name>
更新:yum update <package_name>
1
2
3
4
apt-get可以用于运作deb包,例如在Ubuntu系统上对某个软件的管理:
安装:apt-get install <package_name>
卸载:apt-get remove <package_name>
更新:apt-get update <package_name>

安装rpm包

进入系统下存放对应.rpm文件的目录,执行

1
2
cd /opt/gccmkdir/
rpm -Uvh *.rpm --nodeps --force

注:rpm -Uvh *.rpm –nodeps –force

  1. -Uvh就是升级软件包–Update
  2. *.rpm就是所有的.rpm包;
  3. –nodeps就是安装时不检查依赖关系,比如你这个rpm需要A,但是你没装A,这样你的包就装不上,用了–nodeps你就能装上了;
  4. –force就是强制安装,比如你装过这个rpm的版本1,如果你想装这个rpm的版本2,就需要用–force强制安装。

查看Linux版本方法

方法一

1
2
3
4
5
6
# lsb_release -a
LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.4 (Final)
Release: 5.4
Codename: Final

方法二

1
2
# cat /etc/redhat-release
CentOS release 5.4 (Final)

方法三

1
2
# rpm -q centos-release
centos-release-5-4.el5.centos.1

查看物理CPU个数、核数、逻辑CPU个数、CPU信息(型号)、内存信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 总核数 = 物理CPU个数 * 每颗物理CPU的核数 
# 总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数

# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

# 查看内 存信息
cat /proc/meminfo

linux运行jar包

要运行java的项目需要先将项目打包成war包或者jar包,打包成war包需要将war包部署到tomcat服务器上才能运行。而打包成jar包可以直接使用java命令执行。在linux系统中运行jar包主要有以下四种方式。

  1. 1
    java -jar XXX.jar

    这是最基本的jar包执行方式,但是当我们用ctrl+c中断或者关闭窗口时,程序也会中断执行。

  2. 1
    java -jar XXX.jar &

    &代表在后台运行,使用ctrl+c不会中断程序的运行,但是关闭窗口会中断程序的运行。

  3. 1
    nohup java -jar XXX.jar &

    使用这种方式运行的程序日志会输出到当前目录下的nohup.out文件,使用ctrl+c中断或者关闭窗口都不会中断程序的执行。

  4. 1
    nohup java -jar XXX.jar >temp.out &

    ‘>temp.out’的意思是将日志输出重定向到temp.out文件,使用ctrl+c中断或者关闭窗口都不会中断程序的执行。

XShell上传、下载本地文件到linux服务器

在linux主机上,安装上传下载工具包rz及sz; 如果不知道你要安装包的具体名称,可以使用yum provides */name 进行查找系统自带软件包的信息

1
2
3
4
5
6
[root@host ~]# yum provides */rz
...
lrzsz-0.12.20-36.el7.x86_64 : The lrz and lsz modem communications programs
Repo : base
Matched from:
Filename : /usr/bin/rz

一般会列出软件包的名称及版本,还有安装路径;查询到软件包名后,使用yum install -y 包名 进行安装。

lrzsz包安装完成后包括上传rz、下载sz命令

1
[root@host ~]# yum install -y lrzsz

上传命令为rz;下再命令为sz

1
2
#上传(windows->linux)文件-弹出窗口选择需要上传的文件
[root@host ~]# rz
1
2
#指定下载(linux->windows)哪个文件-弹出窗口选择需要保存的路径
[root@host ~]# sz 文件名称

ubuntu安装ssh服务

SSH分客户端openssh-clientopenssh-server

  1. 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-get install openssh-client

  2. 如果要使本机开放SSH服务就需要安装openssh-serversudo(apt-get install openssh-server

    1
    apt-get install openssh-server

有时候当你执行sudo apt-get XXX这种命令时出现类似下面的输出错误:

1
2
E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?

或者

1
2
3
4
5
E: Could not ge lock /var/lib/apt/lists/lock - open (11: Resource temporarily
unavailable)
E: Unable to lock directory /var/lib/apt/lists/
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

解释

出现这个问题的原因是,还有一个线程在使用apt-get进行下载的操作。但是奇怪的是,我就是没有找到其他使用了apt-get指令的终端界面。那么如何解决这个问题呢,难道要重新启动电脑吗,重启电脑是可以解决这个问题,但是我接下来教你的方法,才是真正的解决方法。

解决办法

先搜索所有运行着的线程

1
ps -A | grep apt-get

你会得到类似下面的输出:

1
2
3
root 752  0.0  0.0   4508  1628 ?  Ss 01:13 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily
_apt 2098 0.1 0.1 49572 5524 ? S 01:18 0:06 /usr/lib/apt/methods/http
aobo 4425 0.0 0.0 18484 980 pts/1 S+ 02:13 0:00 grep --color=auto apt

第2列就是线程号(kill processnumber)。我们将apt相关的进程给关闭掉,需要使用sudo权限:

1
sudo kill 2098

输出:

bash: kill: (2098) - Operation not permitted

然后确认sshserver是否启动了:

1
ps -e |grep ssh

如果看到sshd那说明ssh-server已经启动了

CentOS7中找不到ifconfig和netstat命令

把net-tools包装上就好了

1
yum install net-tools

ifconfig或者ip a命令,获取不到IP地址

问题描述:用ifconfig或者ip a命令,获取不到ip地址,即网卡未启动,无法用Xshell远程连接。

解决方案:

  1. 进入/etc/sysconfig/network-scripts目录,发现有一个或多个ifcfg-...,即网卡(驱动)存在但未启用。

    1
    ls /etc/sysconfig/network-scripts
  2. 修改/etc/sysconfig/network-scripts/ifcfg-...文件, 把ONBOOT=no改为ONBOOT=yes保存退出wq

    1
    2
    3
    vi /etc/sysconfig/network-scripts/ifcfg-em1
    ...
    # 把`ONBOOT=no`改为`ONBOOT=yes`保存退出
  3. service network restart重启。出现:

    1
    Restarting network (via systemctl):                        [  确定  ] OK
  4. 输入ifconfig或者ip a命令,出现ip地址。用Xshell连接成功。

CentOS下彻底删除MySQL和重新安装MySQL

删除MySQL

1
2
3
4
5
yum remove  mysql mysql-server mysql-libs mysql-server;

find / -name mysql 将找到的相关东西delete(rm -rf ...)掉;

rpm -qa|grep mysql(查询出来的东东yum remove掉)

安装MySQL

1
yum install  mysql mysql-server mysql-libs mysql-server

如何判断Linux是32位还是64位

方法1:getconf LONG_BIT 查看

1
getconf LONG_BIT

方法2:uname命令查看

1
2
uname -a
uname -m

方法3: arch命令查看

1
arch

方法4: file命令查看

1
2
file /sbin/init
file /bin/ls

方法5: 通过查看CPU的信息来判定Linux系统是否是64位操作系统

1
2
# 如果结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l

怎样查看MySql数据库物理文件存放位置

1
mysql> show global variables like "%datadir%";

CentOS7查看修改时区

  • timedatectl查看时间各种状态

    1
    2
    3
    4
    5
    6
    7
    Local time: 四 2014-12-25 10:52:10 CST
    Universal time: 四 2014-12-25 02:52:10 UTC
    RTC time: 四 2014-12-25 02:52:10
    Timezone: Asia/Shanghai (CST, +0800)
    NTP enabled: yes
    NTP synchronized: yes
    RTC in local TZ: no
  • timedatectl list-timezones: 列出所有时区

  • timedatectl set-local-rtc 1 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间

  • timedatectl set-timezone Asia/Shanghai 设置系统时区为上海

  • 校准时间

    1
    2
    3
    yum -y install ntp
    #通过阿里云时间服务器校准时间
    ntpdate ntp1.aliyun.com

Linux文件和目录的权限

文件权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
在linux系统中,文件或目录的权限可以分为3种:
r:4 读
w:2 写
x:1 执行(运行)
-:对应数值0

数字 4 、2 和 1表示读、写、执行权限
rwx = 4 + 2 + 1 = 7 (可读写运行)
rw = 4 + 2 = 6 (可读写不可运行)
rx = 4 +1 = 5 (可读可运行不可写)

示例:
最高权限777:(4+2+1) (4+2+1) (4+2+1)
第一个7:表示当前文件的拥有者的权限,7=4+2+1 可读可写可执行权限
第二个7:表示当前文件的所属组(同组用户)权限,7=4+2+1 可读可写可执行权限
第三个7:表示当前文件的组外权限,7=4+2+1 可读可写可执行权限

示例:
755:(4+2+1) (4+1) (4+1)
第一个7:表示当前文件的拥有者的权限,7=4+2+1 可读可写可执行权限
第二个5:表示当前文件的所属组(同组用户)权限,5=4+1 可读可执行权限
第三个5:表示当前文件的组外权限,5=4+1 可读可执行权限

示例:
644:(4+2) (4) (4)
第一个6:表示当前文件的拥有者的权限,6=4+2 可读可写不可执行权限
第二个4:表示当前文件的所属组(同组用户)权限,4=4 可读权限
第三个4:表示当前文件的组外权限,4=4 可读权限

查看文件的权限(ls -l 或 ls ll 或 ls -al)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[root@yisu-5d5ba64634728 bin]# ls -ll
total 828
#####1#### #2# #3# #4## ##5## #####6###### ####7#######
-rw-r-----. 1 root root 35065 Aug 15 2019 bootstrap.jar
-rw-r-----. 1 root root 15900 Aug 15 2019 catalina.bat
-rwxr-x---. 1 root root 23464 Aug 15 2019 catalina.sh
-rw-r-----. 1 root root 1664 Aug 15 2019 catalina-tasks.xml
-rw-r-----. 1 root root 2123 Aug 15 2019 ciphers.bat
-rwxr-x---. 1 root root 1997 Aug 15 2019 ciphers.sh
-rw-r-----. 1 root root 24938 Aug 15 2019 commons-daemon.jar
-rw-r-----. 1 root root 169835 Aug 15 2019 commons-daemon-native.tar.gz
-rw-r-----. 1 root root 2040 Aug 15 2019 configtest.bat
-rwxr-x---. 1 root root 1922 Aug 15 2019 configtest.sh
-rwxr-x---. 1 root root 8513 Aug 15 2019 daemon.sh
-rw-r-----. 1 root root 2091 Aug 15 2019 digest.bat
-rwxr-x---. 1 root root 1965 Aug 15 2019 digest.sh
-rw-r-----. 1 root root 3606 Aug 15 2019 makebase.bat
-rwxr-x---. 1 root root 3382 Aug 15 2019 makebase.sh
-rw-r-----. 1 root root 3460 Aug 15 2019 setclasspath.bat
-rwxr-x---. 1 root root 3708 Aug 15 2019 setclasspath.sh
-rw-r-----. 1 root root 2020 Aug 15 2019 shutdown.bat
-rwxr-x---. 1 root root 1902 Aug 15 2019 shutdown.sh
-rw-r-----. 1 root root 2022 Aug 15 2019 startup.bat
-rwxr-x---. 1 root root 1904 Aug 15 2019 startup.sh
-rw-r-----. 1 root root 47882 Aug 15 2019 tomcat-juli.jar
-rw-r-----. 1 root root 419428 Aug 15 2019 tomcat-native.tar.gz
-rw-r-----. 1 root root 4574 Aug 15 2019 tool-wrapper.bat
-rwxr-x---. 1 root root 5515 Aug 15 2019 tool-wrapper.sh
-rw-r-----. 1 root root 2026 Aug 15 2019 version.bat
-rwxr-x---. 1 root root 1908 Aug 15 2019 version.sh

# 总共分为7大列:
第一列:文件类型,1-代表普通文件 d-代表目录
第二列:文件节点数(node)
第三列:表示文件拥有者root用户
第四列:表示文件所属组root用户组
第五列:显示文件大小,默认是字节byte,可以通过命令 ls -lh 更人性化地查看文件大小
第六列:文件最后修改时间
第七咧:文件或目录的名称

# 测试
[root@yisu-5d5ba64634728 bin]# ls -lh version.sh
-rwxr-x---. 1 root root 1.9K Aug 15 2019 version.sh

设置文件/目录的权限(ls -l 或 ls ll 或 ls -al)

1
2
3
4
5
# 语法: 
chomd 755 文件名

# 例如:
chmod -R 755 /home/ftpuser

Warning:Permanently added (RSA) to the list of known hosts

vi /etc/ssh/ssh_config

找到#StrictHostKeyChecking ask去掉注释,并把ask改为no即可