本篇博客就Java开发的Linux环境,进行完整版的安装,多适用于小白,当然接受大佬点评;

这是在全新的Linux centOS7.6的系统进行,安装手法以及命令都是根据过往个人操作手法以及经验学习而来!仅保证能够完整安装和使用,不保证正常的生产环境!个人并非这方面的专攻;

我是使用本地的虚拟机进行操作;避免安装失败,尽量保持一致;

该篇文章还在不断完善,有原稿;需要的可以私信我;

文章目录

检查更新、环境准备

常规上来,我会在安装好虚拟机之后,执行yum源的更新,便于获取较好的安装环境;

-y:代表yes;

全程yes安装更新yum源,这样不用手动操作确认每个的安装;

yum -y install update

yum -y install libaio.so.1

基本操作命令

centOS上面的下载安装命令

yum包管理器主要对于系统本身不具有的工具进行安装,需进行联网;

yum -y install [包名]

例如:
#安装.zip压缩包解压器
yum -y install unzip

wget下载器,是针对与软件安装包的下载,bunutu的系统上面使用apt命令,要记得区分;

wget [下载链接]

例如:
#下载mysql
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz 

su&sudo权限相关命令

相对于window来说,Linux也有着同样的用户权限管制;不同的是Linux大多是通过命令进行操作执行;

以下是对于这块的简单的权限的命令常识使用;

sudo:表示一个用户申请管理员权限执行的操作;

类似于win电脑上我们右键点击应用,使用管理员执行该应用;

将得到该应用的全部使用权

su:表示用户切换;

一般常用

su [用户名]

su - [用户名]

例如:切换至root用户
su root
su - root

注:

su 只能切换到管理员的用户权限,不使用管理员的登录脚本和搜索路径;

su - 不但能切换到管理员权限而且使用管理员登录脚本和搜索路径

因此,我一般常用su - [用户名]进行切换;

打包、解压命令

在Linux中我们常见的只有两种压缩格式:tar.gz和zip;

对此,有着两种解压缩方式:

1 解压**.tar.gz**&.tar

x : 从 tar 包中把文件提取出来
z : 表示 tar 包是被 gzip 压缩过的,所以解压时需要用 gunzip 解压
v : 显示详细信息
f xxx.tar.gz : 指定被处理的文件是 xxx.tar.gz

tar zxvf [压缩包]
&
tar -zxvf [压缩包]

一般来说Linux命令的 - 表示展示所有的文件或后缀;因此大多数情况我都是加 -

2 解压**.zip** 包

对于**.zip**的包的解压命令,一般系统不自带,需要我们使用yum进行安装:yum -y install unzip

unzip [压缩包]

3 打**.tar.gz**包

tar -zcvf [文件名.tar.gz] [要打包的文件(可以选多个文件)]

4 打**.zip**包

前提安装zip
yum -y install zip

zip -q -r [文件名.zip] [要打包的文件(可以选多个文件)]

文件编辑vim&vi

Linux默认的编辑的vi,一般我常用vim

最大的区别就是vim是有颜色区别的,对于修改文件是非常友好的

不过,vim编辑器需要通过yum源进行安装:yum -y install vim

vim [文件名]
&
vi [文件名]

注:vim&vi也是新建文件的命令

涉及命令:

操作文档
a:表示add,在字符后面插入;
i:表示insert,在字符前开始插入;
0:在光标所在行的下面另起一行插入;
s:表示删除光标所在的字符并开始插入;

#vi下面的快捷使用
双击dd   --删除当前行

#删除整行
Ctrl+u
保存
:q! (表示强制退出,不保存)
:wq (表示保存并退出)
:w	(表示保存并继续修改)

注:这里只写常用的,还有更多关于vim的还需要详细学习

查看文件

大多数时候,我们需要的并不是编辑文件,而是查看文件!所以,也有对应的命令;

more [文件名]

运行日志查看

在使用jar包后台运行时,我需要查看这个程序的运行时状态,就如同在idea编辑器的控制台中看到内容;

tail:理解就是看最后的意思;

-100f:也就是最后的100条,也可以-500f,根据需求来;

nohup.out:表示的后台启动的生成文件(java -jar [jar包] nohup &)

tail -100f nohup.out

历史操作命令记录查询

查询历史的操作命令记录

history

查询关于某个关键词的操作历史记录

history | grep [关键词]

授权

Linux对于文件的访问读写权限是很严格的,但是这些权限是可以进行更改的

权限含义

444 r–r–r–
600 rw-------
644 rw-r–r–
666 rw-rw-rw-
700 rwx------
744 rwxr–r–
755 rwxr-xr-x
777 rwxrwxrwx

chmod [权限表示] [需要更改的文件、文件夹]

例如:
#将user目录下面所有的文件(不包括文件夹)更改为777(最高权限),一般别这么操作,容易被骂;
chmod 777 /home/user/*
chmod -R [权限表示] [需要更改的文件、文件夹]

[注]:这个-R表示以递归的形式

例如:
#将user目录下面所有的文件(包括文件夹)更改为777(最高权限),一般别这么操作,容易被骂;
chmod -R 777 /home/user/*

软链接

1 生成软链接

Linux中的软链接就类似与win中将**.exe执行文件**发送至桌面的意思一样;

ln -s [源文件或者目录] [目标文件或者目录]

例如:
#当前路径创建test 引向/var/www/test 文件夹
ln –s  /var/www/test  test

#创建/var/test 引向/var/www/test 文件夹 
ln –s  /var/www/test  /var/test 

2 删除软链接

删除软链接(和删除普通的文件是一样的,删除都是使用rm来进行操作)

rm –rf [软链接名称]

[注]:不要在后面加”/”,rm –rf 后面加不加”/” 的区别,可自行去百度下啊!

例如:
#删除test的软链接
rm –rf test

3 修改软链接

修改原有的链接地址为新的地址

ln –snf  [新的源文件或目录]  [目标文件或目录]

例如:
#创建一个软链接
ln –s  /var/www/test   /var/test 

#修改指向的新路径
ln –snf  /var/www/test1   /var/test

文件下载

这个下载并不是下载到Linux系统上的,这个是把Linux系统上的内容下载至本地,但是只建议小文件;

#安装
yum -y install lrzsz

#下载文件
sz [文件名]

进程查询

这在Linux中属于高频的使用命令;

#查询进程/端口号
ps -ef|grep [开启的进程名或者端口号]
例如:
#查询Java进程
ps -ef|grep java

ps -aux|grep [端口号]
例如:
#查询redis是否启动
ps -aux|grep 6739

#查询端口
netstat -an|grep [端口号] 

#查询端口所在进程
netstat -Intup|grep [端口号]
netstat -anp|grep [端口号]

查看隐藏文件

#查看隐藏文件
ls -la [要展示隐藏文件]
例如:
ls -la .bashrc

文件查找

#查找文件所在
find / -name [要查的文件名]
# 针对性的查找文件(本文件下面)
ls -hl | grep libcurl.so

防火墙设置

一般我们有些端口无法连接的情况,大多数都是这个防火墙拦截掉了;一般我会在本地的测试中关闭;

当然向云端服务器是可以将个别端口的设置开放;

#查看防火墙状态
firewall-cmd --state
 
#关闭防火墙
systemctl stop firewalld

#永久关闭防火墙
systemctl disable firewalld

文件传输

大多数情况我们可能需要从一台远端服务器往另一台远端服务器传输数据;

这个命令,将可以超快速的传输数据;(一般可以到达服务器硬盘的峰值)

# 传输主机连接另一台目标主机
sftp root@[文件的主机ip]
    
# 输入目标主机密码以后
put [文件]

命令拓展

抓包

这个一般会对一些不稳定的线上项目排错使用多一些;

#抓包(eth1--抓取地址的网卡    tmp.pcap--->生成的包名)
tcpdump -vvv -i eth0 -w  tmp.pcap

查看Linux配置信息

有时候程序死活跑不起来,那就得看看你自己服务器的配置了;

#查看linux系统信息
uname -a
cat /etc/system-release

一键删除相关的文件和文件目录

find / -name [文件名] | xargs rm -rf 

例如:
#删除MySQL相关的所有文件
find / -name mysql | xargs rm -rf

查看磁盘空间

#查看root根目录下的磁盘使用情况
df -h

#查看每个目录占用的磁盘空间详情
du -ah

关机或重启

1 shutdown

shutdown命令可以安全的关闭或重启Linux系统,该操作命令只能是由超级用户使用;

shutdown [选项] [时间] [警告信息]

例如:
#系统在十分钟后关机并且马上重新启动
shutdown -r +10
#系统马上关机并且不需要重启启动
shutdown -h now

命令中的各个参数的含义 :
– k 并不真正关机而只是发出警告信息给所有用户
– r 关机后立即重新启动
– h 关机后不重新启动
– f 快速关机重启动时跳过fsck
– n 快速关机不经过init 程序
– c 取消一个已经运行的shutdown.

2 halt

halt通知硬件来停止所有的 CPU 功能,但是仍然保持通电。你可以用它使系统处于低层维护状态。

注意在有些情况会它会完全关闭系统;

# halt             ### 停止机器

# halt -p          ### 关闭机器

# halt --reboot    ### 重启机器

3 poweroff

poweroff会发送一个 ACPI 信号来通知系统关机。

# poweroff           ### 关闭机器

# poweroff --halt    ### 停止机器

# poweroff --reboot  ### 重启机器

4 reboot

reboot 通知系统重启

# reboot           ### 重启机器

# reboot --halt    ### 停止机器

# reboot -p        ### 关闭机器

详细全面的操作

一、目录文件相关

1、ls命令

就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)和查看目录信息等等。

常用参数搭配:

ls -a 列出目录所有文件,包含以.开始的隐藏文件
ls -A 列出除.及..的其它文件
ls -r 反序排列
ls -t 以文件修改时间排序
ls -S 以文件大小排序
ls -h 以易读大小显示
ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
2、cd 命令

cd(changeDirectory) 命令语法:

cd [目录名]

实例:

#进入要目录
cd /

#进入 "home" 目录
cd ~

#进入上一次工作路径
cd -
3、pwd 命令

pwd 命令用于查看当前工作目录路径。

实例:

#查看当前路径
pwd

#查看软链接的实际路径
pwd -P
4、mkdir 命令

mkdir 命令用于创建文件夹。

可用选项:

  • -m: 对新建目录设置存取权限,也可以用 chmod 命令设置;
  • -p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。

实例:

#当前工作目录下创建名为 t的文件夹
mkdir t

#在 tmp 目录下创建路径为 test/t1/t 的目录,若不存在,则创建
mkdir -p /tmp/test/t1/t
5、rm 命令

删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

rm [选项] 文件

实例:

#删除任何 .log 文件,删除前逐一询问确认
rm -i *.log

#删除 test 子目录及子目录中所有档案删除,并且不用一一确认
rm -rf test

#删除以 -f 开头的文件
rm -- -f*
6、rmdir 命令

从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限。

注意:不能删除非空目录

实例:

#当 parent 子目录被删除后使它也成为空目录的话,则顺便一并删除
rmdir -p parent/child/child11
7、mv 命令

移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。

当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。

实例:

#将文件 test.log 重命名为 test1.txt
mv test.log test1.txt

#将文件 log1.txt,log2.txt,log3.txt 移动到根的 test3 目录中
mv llog1.txt log2.txt log3.txt /test3

#文件 log1.txt 改名为 log2.txt,如果 log2.txt 已经存在,则询问是否覆盖
mv -i log1.txt log2.txt

#移动当前文件夹下的所有文件到上一级目录
mv * ../
8、cp 命令

将源文件复制至目标文件,或将多个源文件复制至目标目录。

注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!

-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样

实例:

#复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。
cp -ai a.txt test

#为 a.txt 建立一个链接(快捷方式)
cp -s a.txt link_a.txt
9、ln 命令

功能是为文件在另外一个位置建立一个同步的链接,当在不同目录需要该问题时,就不需要为每一个目录创建同样的文件,通过 ln 创建的链接(link)减少磁盘占用量。

链接分类:软件链接及硬链接

软链接:

  • 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
  • 2.软链接可以 跨文件系统 ,硬链接不可以
  • 3.软链接可以对一个不存在的文件名进行链接
  • 4.软链接可以对目录进行链接

硬链接:

  • 1.硬链接,以文件副本的形式存在。但不占用实际空间。
  • 2.不允许给目录创建硬链接
  • 3.硬链接只有在同一个文件系统中才能创建

需要注意:

  • 第一:ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
  • 第二:ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
  • 第三:ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。

常用参数:

-b 删除,覆盖以前建立的链接
-s 软链接(符号链接)
-v 显示详细处理过程

实例:

#给文件创建软链接,并显示操作信息
ln -sv source.log link.log

#给文件创建硬链接,并显示操作信息
ln -v source.log link1.log

#给目录创建软链接
ln -sv /opt/soft/test/test3 /opt/soft/test/test5
10、tar 命令

用来压缩和解压文件。tar 本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。

弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件

常用参数:

-c 建立新的压缩文件
-f 指定压缩文件
-r 添加文件到已经压缩文件包中
-u 添加改了和现有的文件到压缩包中
-x 从压缩包中抽取文件
-t 显示压缩文件中的内容
-z 支持gzip压缩
-j 支持bzip2压缩
-Z 支持compress解压文件
-v 显示操作过程

有关 gzip 及 bzip2 压缩:

gzip 实例:压缩 gzip fileName .tar.gz 和.tgz  解压:gunzip filename.gz 或 gzip -d filename.gz
          对应:tar zcvf filename.tar.gz     tar zxvf filename.tar.gz

bz2实例:压缩 bzip2 -z filename .tar.bz2 解压:bunzip filename.bz2或bzip -d filename.bz2
       对应:tar jcvf filename.tar.gz         解压:tar jxvf filename.tar.bz2

实例:

(1)将文件全部打包成 tar 包

tar -cvf log.tar 1.log,2.log 或tar -cvf log.*

(2)将 /etc 下的所有文件及目录打包到指定目录,并使用 gz 压缩

tar -zcvf /tmp/etc.tar.gz /etc

(3)查看刚打包的文件内容(一定加z,因为是使用 gzip 压缩的)

tar -ztvf /tmp/etc.tar.gz

(4)要压缩打包 /home, /etc ,但不要 /home/dmtsai

tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

二、文件内容相关

1、cat 命令

cat 主要有三大功能:

1.一次显示整个文件:

cat filename

2.创建一个文件:

cat > filename

只能创建新文件,不能编辑已有文件。

3.将几个文件合并为一个文件:

cat file1 file2 > file
  • -b 对非空输出行号
  • -n 输出所有行号

实例:

(1)把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里

cat -n log2012.log log2013.log

(2)把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里

cat -b log2012.log log2013.log log.log

(3)使用 here doc 生成新文件

cat >log.txt <<EOF
>Hello
>World
>PWD=$(pwd)
>EOF
ls -l log.txt
cat log.txt
Hello
World
PWD=/opt/soft/test

(4)反向列示

tac log.txt
PWD=/opt/soft/test
World
Hello
2、head 命令

head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。

常用参数:

-n<行数> 显示的行数(行数为复数表示从最后向前数)

实例:

(1)显示 1.log 文件中前 20 行

head 1.log -n 20

(2)显示 1.log 文件前 20 字节

head -c 20 log2014.log

(3)显示 t.log最后 10 行

head -n -10 t.log
3、tail 命令

用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

常用参数:

-f 循环读取(常用于查看递增的日志文件)
-n<行数> 显示行数(从后向前)

(1)循环读取逐渐增加的文件内容

ping 127.0.0.1 > ping.log &

后台运行:可使用 jobs -l 查看,也可使用 fg 将其移到前台运行。

tail -f ping.log

(查看日志)

4、more 命令

功能类似于 cat, more 会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。

命令参数:

+n      从笫 n 行开始显示
-n       定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 
-c       从顶部清屏,然后显示
-d       提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l        忽略Ctrl+l(换页)字符
-p       通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s       把连续的多个空行显示为一行
-u       把文件内容中的下画线去掉

常用操作命令:

Enter    向下 n 行,需要定义。默认为 1 行
Ctrl+F   向下滚动一屏
空格键  向下滚动一屏
Ctrl+B  返回上一屏
=       输出当前行的行号
:f     输出文件名和当前行的行号
V      调用vi编辑器
!命令   调用Shell,并执行命令
q       退出more

实例:

(1)显示文件中从第3行起的内容

more +3 text.txt

(2)在所列出文件目录详细信息,借助管道使每次显示 5 行

ls -l | more -5

按空格显示下 5 行。

5、less 命令

less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

常用命令参数:

-i  忽略搜索时的大小写
-N  显示每行的行号
-o  <文件名> 将less 输出的内容在指定文件中保存起来
-s  显示连续空行为一行
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
-x <数字> 将“tab”键显示为规定的数字空格
b  向后翻一页
d  向后翻半页
h  显示帮助界面
Q  退出less 命令
u  向前滚动半页
y  向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]:   向上翻动一页

实例:

(1)ps 查看进程信息并通过 less 分页显示

ps -aux | less -N

(2)查看多个文件

less 1.log 2.log

可以使用 n 查看下一个,使用 p 查看前一个。

6、wc 命令

wc(word count)功能为统计指定的文件中字节数、字数、行数,并将统计结果输出

命令格式:

wc [option] file..

命令参数:

-c 统计字节数
-l 统计行数
-m 统计字符数
-w 统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串

实例:

#查找文件的 行数 单词数 字节数 文件名
wc text.txt

#统计输出结果的行数
cat test.txt | wc -l
7、grep 命令

强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。

grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。

命令格式:

grep [option] pattern file|dir

常用参数:

-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context 显示匹配字符前后n行
-c --count 计算符合样式的列数
-i 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹

grep 的规则表达式:

^  #锚定行的开始 如:'^grep'匹配所有以grep开头的行。 
$  #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。 
.  #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。  
*  #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.*   #一起用代表任意字符。  
[]   #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 
[^]  #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。  
\(..\)  #标记匹配字符,如'\(love\)',love被标记为1。   
\<      #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\>      #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\}  #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。 
x\{m,\}  #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。  
x\{m,n\}  #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。  
\w    #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。  
\W    #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。  
\b    #单词锁定符,如: '\bgrep\b'只匹配grep。

实例:

#查找指定进程
ps -ef | grep svn

#查找指定进程个数
ps -ef | grep svn -c

#从文件中读取关键词
cat test1.txt | grep -f key.log

#从文件夹中递归查找以grep开头的行,并只列出文件
grep -lR '^grep' /tmp

#查找非x开关的行内容
grep '^[^x]' test.txt

#显示包含 ed 或者 at 字符的内容行
grep -E 'ed|at' test.txt

三、文件查找相关

1、which 命令

在 linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:

which     查看可执行文件的位置。
whereis 查看文件的位置。
locate  配合数据库查看文件位置。
find        实际搜寻硬盘查询文件名称。

which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

常用参数:

-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

实例:

(1)查看 ls 命令是否存在,执行哪个

which ls

(2)查看 which

which which

(3)查看 cd

which cd(显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)

查看当前 PATH 配置:

echo $PATH

或使用 env 查看所有环境变量及对应值

2、whereis 命令

whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。

常用参数:

-b   定位可执行文件。
-m   定位帮助文件。
-s   定位源代码文件。
-u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

实例:

(1)查找 locate 程序相关文件

whereis locate

(2)查找 locate 的源码文件

whereis -s locate

(3)查找 lcoate 的帮助文件

whereis -m locate
3、locate 命令

locate 通过搜寻系统内建文档数据库达到快速找到档案,数据库由 updatedb 程序来更新,updatedb 是由 cron daemon 周期性调用的。默认情况下 locate 命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是 locate 所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb 每天会跑一次,可以由修改 crontab 来更新设定值 (etc/crontab)。

locate 与 find 命令相似,可以使用如 *、? 等进行正则匹配查找

常用参数:

-l num(要显示的行数)
-f   将特定的档案系统排除在外,如将proc排除在外
-r   使用正则运算式做为寻找条件

实例:

(1)查找和 pwd 相关的所有文件(文件名中包含 pwd)

locate pwd

(2)搜索 etc 目录下所有以 sh 开头的文件

locate /etc/sh

(3)查找 /var 目录下,以 reason 结尾的文件

locate -r '^/var.*reason$'(其中.表示一个字符,*表示任务多个;.*表示任意多个字符)
4、find 命令

用于在文件树中查找文件,并作出相应的处理。

命令格式:

find pathname -options [-print -exec -ok ...]

命令参数:

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } \;,注意{   }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

命令选项:

-name 按照文件名查找文件
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group  按照文件所属的组来查找文件。
-type  查找某一类型的文件,诸如:
   b - 块设备文件
   d - 目录
   c - 字符设备文件
   l - 符号链接文件
   p - 管道文件
   f - 普通文件

-size n :[c] 查找文件长度为n块文件,带有c时表文件字节大小
-amin n   查找系统中最后N分钟访问的文件
-atime n  查找系统中最后n*24小时访问的文件
-cmin n   查找系统中最后N分钟被改变文件状态的文件
-ctime n  查找系统中最后n*24小时被改变文件状态的文件
-mmin n   查找系统中最后N分钟被改变文件数据的文件
-mtime n  查找系统中最后n*24小时被改变文件数据的文件
(用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 )
-maxdepth n 最大查找目录深度
-prune 选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略
-newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项

实例:

(1)查找 48 小时内修改过的文件

find -atime -2

(2)在当前目录查找 以 .log 结尾的文件。 . 代表当前目录

find ./ -name '*.log'

(3)查找 /opt 目录下 权限为 777 的文件

find /opt -perm 777

(4)查找大于 1K 的文件

find -size +1000c

查找等于 1000 字符的文件

find -size 1000c 

-exec 参数后面跟的是 command 命令,它的终止是以 ; 为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{} 花括号代表前面find查找出来的文件名。

实例:

(5)在当前目录中查找更改时间在10日以前的文件并删除它们(无提醒)

find . -type f -mtime +10 -exec rm -f {} \;

(6)当前目录中查找所有文件名以.log结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。 按y键删除文件,按n键不删除

find . -name '*.log' mtime +5 -ok -exec rm {} \;

(7)当前目录下查找文件名以 passwd 开头,内容包含 “pkg” 字符的文件

find . -f -name 'passwd*' -exec grep "pkg" {} \;

(8)用 exec 选项执行 cp 命令

find . -name '*.log' -exec cp {} test3 \;

-xargs find 命令把匹配到的文件传递给 xargs 命令,而 xargs 命令每次只获取一部分文件而不是全部,不像 -exec 选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

实例:

(9)查找当前目录下每个普通文件,然后使用 xargs 来判断文件类型

find . -type f -print | xargs file

(10)查找当前目录下所有以 js 结尾的并且其中包含 ‘editor’ 字符的普通文件

find . -type f -name "*.js" -exec grep -lF 'ueditor' {} \;
find -type f -name '*.js' | xargs grep -lF 'editor'

(11)利用 xargs 执行 mv 命令

find . -name "*.log" | xargs -i mv {} test4

(12)用 grep 命令在当前目录下的所有普通文件中搜索 hostnames 这个词,并标出所在行:

find . -name \*(转义) -type f -print | xargs grep -n 'hostnames'

(13)查找当前目录中以一个小写字母开头,最后是 4 到 9 加上 .log 结束的文件:

find . -name '[a-z]*[4-9].log' -print

(14)在 test 目录查找不在 test4 子目录查找

find test -path 'test/test4' -prune -o -print

(15)实例1:查找更改时间比文件 log2012.log新但比文件 log2017.log 旧的文件

find -newer log2012.log ! -newer log2017.log

使用 depth 选项:

depth 选项可以使 find 命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。

实例:find 命令从文件系统的根目录开始,查找一个名为 CON.FILE 的文件。 它将首先匹配所有的文件然后再进入子目录中查找

find / -name "CON.FILE" -depth -print

四、进程系统相关

1、ps 命令

ps(process status),用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用 top

linux上进程有5种状态:

1-运行(正在运行或在运行队列中等待)

2-中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)

3-不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)

4-僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

5-停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps 工具标识进程的5种状态码:

D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process

命令参数:

-A 显示所有进程
a 显示所有进程
-a 显示同一终端下所有进程
c 显示进程真实名称
e 显示环境变量
f 显示进程间的关系
r 显示当前终端运行的进程
-aux 显示所有包含其它使用的进程

实例

#显示当前所有进程环境变量及进程间关系
ps -ef

#显示当前所有进程
ps -A

#与grep联用查找某进程
ps -aux | grep apache

#找出与 cron 与 syslog 这两个服务有关的 PID 号码
ps aux | grep '(cron|syslog)'
2、top 命令

显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等

常用参数:

-c 显示完整的进程命令
-s 保密模式
-p <进程号> 指定进程显示
-n <次数>循环显示次数

实例

top - 14:06:23 up 70 days, 16:44,  2 users,  load average: 1.25, 1.32, 1.35
Tasks: 206 total,   1 running, 205 sleeping,   0 stopped,   0 zombie
Cpu(s):  5.9%us,  3.4%sy,  0.0%ni, 90.4%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:  32949016k total, 14411180k used, 18537836k free,   169884k buffers
Swap: 32764556k total,        0k used, 32764556k free,  3612636k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  
28894 root      22   0 1501m 405m  10m S 52.2  1.3   2534:16 java  

前五行是当前系统情况整体的统计信息区。

第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:

14:06:23 — 当前系统时间

up 70 days, 16:44 — 系统已经运行了70天16小时44分钟(在这期间系统没有重启过的吆!)

2 users — 当前有2个用户登录系统

load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行,Tasks — 任务(进程),具体信息说明如下:

系统现在共有206个进程,其中处于运行中的有1个,205个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

第三行,cpu状态信息,具体属性说明如下:

5.9%us — 用户空间占用CPU的百分比。
3.4% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
90.4% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.2% si — 软中断(Software Interrupts)占用CPU的百分比

**备注:**在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识!

第四行,内存状态,具体信息如下:

32949016k total — 物理内存总量(32GB)
14411180k used — 使用中的内存总量(14GB)
18537836k free — 空闲内存总量(18GB)
169884k buffers — 缓存的内存量 (169M)

第五行,swap交换分区信息,具体信息说明如下:

32764556k total — 交换区总量(32GB)
0k used — 使用的交换区总量(0K)
32764556k free — 空闲交换区总量(32GB)
3612636k cached — 缓冲的交换区总量(3.6GB)

第六行,空行。

第七行以下:各进程(任务)的状态监控,项目列信息说明如下:

PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

top 交互命令

h 显示top交互命令帮助信息
c 切换显示命令名称和完整命令行
m 以内存使用率排序
P 根据CPU使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中
o或者O 改变显示项目的顺序
3、kill 命令

发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用"-KILL" 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。

常用参数:

-l  信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a  当处理当前进程时,不限制命令名和进程号的对应关系
-p  指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s  指定发送信号
-u  指定用户

实例:

#先使用ps查找进程pro1,然后用kill杀掉
kill -9 $(ps -ef | grep pro1)
4、free 命令

显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。

命令参数:

-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s<间隔秒数> 持续显示内存
-t 显示内存使用总合

实例:

#显示内存使用情况
free
free -k
free -m

#以总和的形式显示内存的使用信息
free -t

#周期性查询内存使用情况
free -s 10

五、权限相关

1、chmod 命令

用于改变 linux 系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用 ls -l test.txt 查找。

以文件 log2012.log 为例:

-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

第一列共有 10 个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是 d,表示是一个目录。从第二个字符开始到第十个 9 个字符,3 个字符一组,分别表示了 3 组用户对文件或者目录的权限。权限字符用横线代表空许可,r 代表只读,w 代表写,x 代表可执行。

常用参数:

-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件

权限范围:

u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组

权限代号:

r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限

实例:

(1)增加文件 t.log 所有用户可执行权限

chmod a+x t.log

(2)撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息

chmod u=r t.log -c

(3)给 file 的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限

chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)

(4)将 test 目录及其子目录所有文件添加可读权限

chmod u+r,g+r,o+r -R text/ -c
2、chown 命令

chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID;组可以是组名或者组 ID;文件是以空格分开的要改变权限的文件列表,支持通配符。

-c 显示更改的部分的信息
-R 处理指定目录及子目录

实例:

#改变拥有者和群组 并显示改变信息
chown -c mail:mail log2012.log

#改变文件群组
chown -c :mail t.log

#改变文件夹及子文件目录属主及属组为 mail
chown -cR mail: test/

六、磁盘空间

1、df 命令

显示磁盘空间使用情况。获取硬盘被占用了多少空间,目前还剩下多少空间等信息,如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示:

-a 全部文件系统列表
-h 以方便阅读的方式显示信息
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地磁盘
-T 列出文件系统类型

实例:

(1)显示磁盘使用情况

#显示磁盘使用情况
df -l

#以易读方式列出所有文件系统及其类型
df -haT
2、du 命令

du 命令也是查看使用空间的,但是与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看:

命令格式:

du [选项] [文件]

常用参数:

-a 显示目录中所有文件大小
-k 以KB为单位显示文件大小
-m 以MB为单位显示文件大小
-g 以GB为单位显示文件大小
-h 以易读方式显示文件大小
-s 仅显示总计
-c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和

实例:

#以易读方式显示文件夹内及子文件夹大小
du -h scf/

#以易读方式显示文件夹内所有文件大小
du -ah scf/

#显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
du -hc test/ scf/

#输出当前目录下各个子目录所使用的空间
du -hc --max-depth=1 scf/

七、时间日期相关

1、date 命令

显示或设定系统的日期与时间。

命令参数:

-d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u  显示GMT。
%H 小时(00-23)
%I 小时(00-12)
%M 分钟(以00-59来表示)
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)
%a 星期的缩写。
%A 星期的完整名称。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%m 月份(以01-12来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。

实例:

date +%Y%m%d --date="+1 day"  //显示下一天的日期

#-d参数使用
date -d "nov 22"  今年的 11 月 22 日是星期三
date -d '2 weeks' 2周后的日期
date -d 'next monday' (下周一的日期)
date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d
date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d
date -d last-month +%Y%m(上个月是几月)
date -d next-month +%Y%m(下个月是几月)
2、cal 命令

可以用户显示公历(阳历)日历如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份:

常用参数:

-3 显示前一月,当前月,后一月三个月的日历
-m 显示星期一为第一列
-j 显示在当前年第几天
-y [year]显示当前年[year]份的日历

实例:

#显示指定年月日期
cal 9 2012

#显示2013年每个月日历
cal -y 2013

#将星期一做为第一列,显示前中后三月
cal -3m

八、source FileName使用

作用 : 在当前的bash环境下读取并且执行FileName中的命令

注 : 该命令通常使用 " . " 来替代

如 : source /etc/profile 与 . /etc/profile是等效的

注意 : source 命令与shell script的区别是 :

source 在当前bash环境下执行命令,而script是启动一个子shell来执行命令. 这样如果把设置环境变变量(或alias等等) 的命令写进scripts中, 就只会影响子shell,无法改变当前的bash,所以通过文件(命令列)设置环境变量时, 要是source命令;

九、启动jar包命令

nohup java -jar XX.jar -Xms128M -Xmx1024M -server.port=9002 XX.jar > XX.out 2>&1 &

#简化版
nohup java -jar /home/test1.jar  >/home/log/test1.txt &
nohup:忽略SIGHUP信号,关闭shell后,进程还是存在的。
java:启动程序
-jar:启动类型
-Xms128M -Xmx1024M:指定内存,Xms一般为最大内存的1/64,Xmx一般为最大内存的1/4
-server.port=9002:指定端口
XX.jar:jar包路径

>:日志重定向,用>时清空日志文件后前面会产生空白,可以用>>
XX.out:输出日志路径,不要日志可以输出到/dev/null
2>&1:标准输出与错误输出
&:后台运行,即使你用ctrl C,照样运行,但是要注意,如果你直接关掉shell后,进程同样消失。可见,&的后台并不硬(因为对SIGHUP信号不免疫)。

linux修改成zsh

zsh越来越受更多人欢迎,号称“终极shell”;

从一个交互式终端的角度来讲,zsh更为强大,而bash更加符合posix标准,因此bash更适合做脚本解释器。

检查自己的系统中存在shell方式:

cat /etc/shells


/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
/bin/zsh

如果没有zsh,安装操作:

yum -y install zsh

查看当前使用的shell

echo $SHELL

/bin/bash

将bash的改成zsh(切换成root用户执行上述的命令就可以查看当前是否切换成zsh)

chsh -s /bin/zsh

linux创建用户

adduser命令

创建用户有两条命令:adduer和useradd,对应着两条删除用户的命令:deluser和userdel。
这两种命令之间的区别:
adduser:会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码。
useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。

adduser [选项] [用户名]

-d 目录,指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组,指定用户所属的用户组。
-G 用户组,指定用户所属的附加组。
-s Shell文件,指定用户的登录Shell。
-u 用户号,指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号

创建liu的用户
[root@localhost ~]# adduser -m liu
[root@localhost ~]# cd /home/
[root@localhost home]# ls
liu
[root@localhost home]# 

查看当前操作的用户 :

#要查看当前登录用户的用户名
whoami 
#表示打开当前伪终端的用户的用户名
who am i 
#当前用户的登陆时间
who mom likes

修改用户密码 :

首先切换到root用户下 : 
[root@localhost ~]# su - root 

[root@localhost ~]# passwd liu
Changing password for user liu.
New password: 输入密码
BAD PASSWORD: The password is shorter than 7 characters
Retype new password: 确认密码

给用户授权 :

方式一 : 
修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉 保存使用wq!(强制保存)
[root@localhost ~]# vim /etc/sudoers
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL


然后修改用户,使其属于root组(wheel),命令如下:
[root@localhost ~]# usermod -g root liu
修改完毕,现在可以用liu帐号登录,然后用命令 su – ,即可获得root权限进行操作。
方式二 : 
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
保存使用wq!(强制保存)
[root@localhost ~]# vim /etc/sudoers
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
liu   ALL=(ALL)     ALL

修改完毕,现在可以用liu帐号登录,然后用命令 sudo – ,即可获得root权限进行操作。
方式三 : 
修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:

liu:x:0:33:tommy:/data/webroot:/bin/bash

删除用户 :

如果一个用户的账号不再使用,可以从系统中删除。
删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。
[root@localhost ~]# vim /etc/passwd
或者
userdel 选项 用户名
[root@localhost ~]# userdel -r liu

linux配置静态IP地址

执行命令自动分配一个IP

dhclient

查看当前的网卡以及ip

ifconfig
或
ip addr
一般ens开头的就是目前访问的IP以及网卡

修改网络伪静态的IP地址

cd /etc/sysconfig/network-scripts/

vim 你的网卡

最后重启网卡
service network restart

改成以下内容

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
# 要将这里的dhcp改成静态的
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="bfb77ca1-9e0c-40b4-a4b1-3e5113eee7ae"
DEVICE="ens33"
ONBOOT="yes"
# 使用dhclient生成的IP地址
IPADDR="192.168.71.128"
# 根据自己电脑所连接的网络配置网关
GATEWAY="192.168.0.1"
# 配置子网掩码和DNS
NETMASK="255.255.255.0"
DNS1="114.114.114.114"

系统原始默认生成的网卡

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="bfb77ca1-9e0c-40b4-a4b1-3e5113eee7ae"
DEVICE="ens33"
ONBOOT="yes"

检查网络启动状态:

systemctl status network.service

linux的环境变量配置文件[参考]

export JAVA_HOME JRE_HOME PATH CLASSPATH MYSQL_HOME MAVEN_HOME TOMCAT_HOME RUBY_HOME
#java jre mysql maven tomcat
JAVA_HOME=/usr/local/java/jdk1.8
JRE_HOME=/usr/local/java/jdk1.8/jre
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
MAVEN_HOME=/opt/maven/apache-maven-3.6.3
TOMCAT_HOME=/usr/local/tomcat
MYSQL_HOME=/usr/local/mysql
RUBY_HOME=/usr/locla/ruby
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin:$TOMCAT_HOME/bin:$MYSQL_HOME/bin:$RUBY_HOME/bin:$

linux安装jdk

如有安装不成功的情况,重新安装可以这样操作

find / -name jdk | xargs rm -rf

Oracle历史jdk版本(需要登录Oracle的网站获取自己的id文件下载链接) :

https://www.oracle.com/java/technologies/downloads/archive/

资源下载链接 : 
wget https://download.oracle.com/otn/java/jdk/8u333-b02/2dee051a5d0647d5be72a7c0abff270e/jdk-8u333-linux-x64.tar.gz?AuthParam=1662363330_dfff399503b741df78f4f0de047308b7

这个链接下载下来的包会有参数后缀

jdk-8u333-linux-x64.tar.gz?AuthParam=1662363330_dfff399503b741df78f4f0de047308b7

mv jdk-8u333-linux-x64.tar.gz?AuthParam=1662363330_dfff399503b741df78f4f0de047308b7 jdk-8u333-linux-x64.tar.gz

卸载掉系统已有的jdk安装包

如果系统自带有openJDK,可以按照以下步骤提前卸载;

首先先查找已经安装openJDK包;

rpm -qa | grep java 

接下来可以将Java开头的安装包卸载即可 :

yum -y remove java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64
yum -y remove java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
...

Linux上的jdk解压即安装,只要配置好环境变量即可

#解压、移动 
[root@localhost ~]# tar zxvf jdk-8u333-linux-x64.tar.gz

[root@localhost ~]# mkdir /usr/local/java 
[root@localhost ~]# mv jdk1.8.0_333 /usr/local/java/jdk1.8
[root@localhost ~]# cd /usr/local/java

#配置环境变量
[root@localhost java]# vim /etc/profile

在最后添加这几行:
    
# java环境
export JAVA_HOME=/usr/local/java/jdk1.8
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export PATH

[root@localhost java]# source /etc/profile
[root@localhost java]# java -version
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)

linux安装Tomcat

如有安装不成功的情况,重新安装可以这样操作

find / -name tomcat | xargs rm -rf

Tomcat官网地址 :

https://tomcat.apache.org/download-80.cgi

#资源下载链接(根据自己需要下载版本) : 
wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.82/bin/apache-tomcat-8.5.82.tar.gz

解压

[root@localhost ~]# tar zxvf apache-tomcat-8.5.82.tar.gz
[root@localhost ~]# mv apache-tomcat-8.5.82 /usr/local/tomcat

启动(注意路径)

[root@localhost ~]# sh /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE:   /usr/local/apache-tomcat-8.5.73
Using CATALINA_HOME:   /usr/local/apache-tomcat-8.5.73
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.73/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_301
Using CLASSPATH:       /usr/local/apache-tomcat-8.5.73/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.73/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

浏览器访问看看能否出现Tom猫的页面;

配置快捷操作和开机自启动

⾸先进⼊ /etc/rc.d/init.d ⽬录,创建⼀个名为 tomcat 的⽂件,并赋予执⾏权限 :

[root@localhost ~]# cd /etc/rc.d/init.d/
[root@localhost init.d]# touch tomcat
[root@localhost init.d]# chmod +x tomcat

接下来编辑 tomcat ⽂件,并在其中加⼊如下内容:

[root@localhost init.d]# vim tomcat

#!/bin/bash
#chkconfig:- 20 90
#description:tomcat
#processname:tomcat
TOMCAT_HOME=/usr/local/tomcat
case $1 in
 	start) su root $TOMCAT_HOME/bin/startup.sh;;
    stop) su root $TOMCAT_HOME/bin/shutdown.sh;;
 	*) echo "require start|stop" ;;
 	
esac

这样后续对于Tomcat的开启和关闭只需要执⾏如下命令即可:

service tomcat start
service tomcat stop


使用这两个命令可能会出现如下问题 : 
[root@localhost ~]# service tomcat start
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

我们已经配置好Java的环境变量,但是还是说我们没有配置Java的环境变量
可以尝试修改这个文件 : 
[root@localhost ~]# cd /usr/local/tomcat/bin
[root@localhost bin]# vim catalina.sh 

添加自己的Jdk路径
export JAVA_HOME=“你的java安装路径”

加⼊开机启动:

[root@localhost init.d]# chkconfig --add tomcat
[root@localhost init.d]# chkconfig tomcat on

配置环境变量

[root@localhost tomcat]# cd /usr/local/tomcat/
[root@localhost tomcat]# pwd
/usr/local/tomcat
[root@localhost tomcat]# vim /etc/profile

在配置文件末尾增加Tomcat配置

# Tomcat配置
export TOMCAT_HOME=/usr/local/tomcat
export PATH=$PATH:$TOMCAT_HOME/bin

[root@localhost tomcat]# source /etc/profile
[root@localhost tomcat]# 

将tomcat的首页修改成项目的首页

 <Context path="/" docBase="[war包名称填这里]" reloadable="true"/> 

linux安装node

如有安装不成功的情况,重新安装可以这样操作

find / -name node | xargs rm -rf

node.js官网 :

https://nodejs.org/zh-cn/download/

资源下载链接 :
wget https://nodejs.org/dist/v16.17.0/node-v16.17.0-linux-x64.tar.xz

解压 :

[root@localhost ~]# tar -xJvf node-v16.17.0-linux-x64.tar.xz -C ./
[root@localhost ~]# mv node-v16.17.0-linux-x64 /usr/local/node
[root@localhost ~]# cd /usr/local/node

配置node系统环境变量

[root@localhost ~]# vim /etc/profile

在文件末尾添加 :
# Nodejs
export PATH=/usr/local/node/bin:$PATH

刷新文件并测试是否配置成功 : 
[root@localhost ~]# source /etc/profile
[root@localhost ~]# node -v
v16.13.1
[root@localhost ~]# npm -version
8.1.2
[root@localhost ~]# npx -v
8.1.2
[root@localhost bin]# npm version
{
  npm: '8.1.2',
  node: '16.13.1',
  v8: '9.4.146.24-node.14',
  uv: '1.42.0',
  zlib: '1.2.11',
  brotli: '1.0.9',
  ares: '1.18.1',
  modules: '93',
  nghttp2: '1.45.1',
  napi: '8',
  llhttp: '6.0.4',
  openssl: '1.1.1l+quic',
  cldr: '39.0',
  icu: '69.1',
  tz: '2021a',
  unicode: '13.0',
  ngtcp2: '0.1.0-DEV',
  nghttp3: '0.1.0-DEV'
}
[root@localhost bin]# 

配置node 为淘宝镜像源 :

[root@localhost bin]# npm install -g cnpm --registry=https://registry.npm.taobao.org
[root@localhost bin]# cnpm -v

linux安装maven环境

如有安装不成功的情况,重新安装可以这样操作

find / -name maven | xargs rm -rf

maven官方网址 :

https://maven.apache.org/download.cgi

资源下载链接 : 
wget https://dlcdn.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

创建安装目录 :

[root@localhost ~]# tar -zxvf apache-maven-3.6.3-bin.tar.gz

[root@localhost opt]# mkdir /opt/maven
[root@localhost ~]# mv apache-maven-3.6.3 /opt/maven/

修改maven仓库下载镜像源

[root@localhost ~]# cd /opt/maven/apache-maven-3.6.3/conf
[root@localhost conf]# vim settings.xml 

在<mirrors></mirrors>中添加 : 
	<mirror>
		<id>alimaven</id>
		<name>aliyun maven</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
		<mirrorOf>central</mirrorOf>
	</mirror>

配置maven环境变量 :

因为下载的是二进制的安装包,所以解压完成以后配置好环境变量就可以使用了;
[root@localhost ~]# vim /etc/profile

在文件末尾添加 : 
    
# Maven配置
export MAVEN_HOME=/opt/maven/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH

[root@localhost ~]# source /etc/profile
[root@localhost ~]# mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /opt/maven/apache-maven-3.6.3
Java version: 1.8.0_301, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.49.1.el7.x86_64", arch: "amd64", family: "unix"
[root@localhost ~]#

linux干净的删除MySQL

检查系统是否安装了MySQL

[root@localhost /]# rpm -qa|grep mysql

img

如果已经安装了mysql-libs-5.1.73-5.el6_6.x86_64,执行删除命令

# mysql 5.7
[root@localhost /]# rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64

# MySQL 8.0
[root@localhost ~]# rpm -e --nodeps mysql-8.0.11-linux-glibc2.12-x86_64

再次执行查询命令,查看是否删除

[root@localhost /]# rpm -qa | grep mysql

删除MySQL相关的文件夹

#查询所有MySQL对应的文件夹
whereis mysql
#删除相关目录或文件(要删除所有的文件目录)
rm -rf /usr/bin/mysql /usr/include/mysql 

#查询关于mysql的文件目录
find / -name mysql
#删除相关目录或文件(要删除所有的文件目录)
find / -name mysql | xargs rm -rf 

#验证是否删除完成
whereis mysql
find / -name mysql

卸载系统自带的Mariadb(如果有的话)

首先先查询已安装的Mariadb

[root@localhost ~]# rpm -qa | grep mariadb
mariadb-5.5.68-1.el7.x86_64
mariadb-devel-5.5.68-1.el7.x86_64
mariadb-server-5.5.68-1.el7.x86_64
mariadb-libs-5.5.68-1.el7.x86_64

有的话全部卸载掉 : 
[root@localhost ~]# yum -y remove mariadb-5.5.68-1.el7.x86_64 mariadb-devel-5.5.68-1.el7.x86_64 mariadb-server-5.5.68-1.el7.x86_64 mariadb-libs-5.5.68-1.el7.x86_64

linux安装mysql

如有安装不成功的情况,重新安装可以这样操作

find / -name mysql | xargs rm -rf

如果非首次安装,请按照上述方式卸载 !

MySQL官网链接 :

https://downloads.mysql.com/archives/community/

下载命令:

#mysql 8.0
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
#mysql 5.7
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

检查mysql用户组和用户是否存在,如果没有,则创建

#删除用户组和用户
[root@localhost local]# userdel mysql

#新建
[root@localhost /]# cat /etc/group | grep mysql
[root@localhost /]# cat /etc/passwd |grep mysql
[root@localhost /]# groupadd mysql
[root@localhost /]# useradd -r -g mysql mysql
[root@localhost /]# 

安装Mysql :

1、在执行wget命令的目录下或你的上传目录下找到Mysql安装包:mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
执行解压命令:

[root@localhost ~]# tar zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
[root@localhost ~]# mv -f mysql-8.0.11-linux-glibc2.12-x86_64 /usr/local/mysql
    
同时新建`/usr/local/mysql/data`⽬录,后续备⽤;
[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# mkdir data

更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限

#进入 mysql 目录。下面的命令必须在 mysql 目录下执行。
cd /usr/local/mysql

[root@localhost mysql]# chown -R mysql:mysql ./

准备MySQL配置文件

新建/etc/my.cnf

写入简化配置 :

[root@localhost mysql]# vim /etc/my.cnf

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
# 设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M


#skip-grant-tables

lower_case_table_names:是否区分大小写,1表示存储时表名为小写,操作时不区分大小写;0表示区分大小写;不能动态设置,修改后,必须重启才能生效:
character_set_server:设置数据库默认字符集,如果不设置默认为latin1
innodb_file_per_table:是否将每个表的数据单独存储,1表示单独存储;0表示关闭独立表空间,可以通过查看数据目录,查看文件结构的区别;

同时使⽤如下命令创建 /var/lib/mysql ⽬录,并修改权限:

[root@localhost ~]# mkdir /var/lib/mysql
[root@localhost ~]# chmod 777 /var/lib/mysql

正式开始安装MySQL :

编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)

[root@localhost mysql]# cd /usr/local/mysql/

./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

2021-12-13T06:53:25.004274Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: m/Z7Xi
X4r0we

生成的这串为临时root登录密码;

启动MySQL 显示如下结果,说明数据库安装并可以正常启动

[root@localhost mysql]# service mysqld start
Starting MySQL.Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
 SUCCESS! 

异常情况 :

如果出现如下提示信息

Starting MySQL... ERROR! The server quit without updating PID file

查看是否存在mysql和mysqld的服务,如果存在,则结束进程,再重新执行启动命令

#查询服务
ps -ef|grep mysql 
ps -ef|grep -v grep
#结束进程
kill -9 PID

#启动服务
sudo /usr/local/mysql/support-files/mysql.server start

img

设置软链接, 重启mysql服务

[root@localhost /]#  ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql 
[root@localhost /]#  ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
[root@localhost /]#  sudo service mysql restart

首次登录mysql,修改密码(密码为生成的临时密码)

#第一种修改方式(修改密码的方式会根据安装的版本不同sql语句不同)
[root@localhost /]#  mysql -u root -p
Enter password:上面生成的临时密码
mysql>SET PASSWORD FOR 'root'@'localhost' = 'root';

如果你刚才没有记临时密码, 那么你用这种方式也是可以修改密码的

#第二种修改方式

#进入mysql配置文件
vim /etc/my.cnf

#在配置文件下添加这个配置
skip-grant-tables
    
#重启mysql
service mysql restart

#通过命令登录mysql,这时的mysql没有密码,遇到Enter password:直接进去即可
mysql -u root -p

#选择你现在的数据库
use mysql;

#修改root的密码,authentication_string = ’ ’ 意思是将你的密码设置空,等下输入同样不用输入密码直接进入mysql服务
update user set authentication_string = '' where user = 'root';

#再次打开my.cnf配置文件,删除刚才添加的配置,去掉或者注释掉下面这行
skip-grant-tables

#重启mysql服务
service mysql restart

#进入mysql服务修改密码
mysql -u root -p

#更新mysql数据库密码
ALTER USER USER() IDENTIFIED BY 'root';

注意:输入密码时,Enter password 后面不会有任何显示,此时实际是输入成功的,输入完密码后直接回车即可。或使用:mysql -u root -p 密码 ,回车后,即可直接进入数据库

开放远程连接 :

mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;
mysql>quit;

设置开机自动启动 :

将服务文件拷贝到init.d下,并重命名为mysql
[root@localhost /]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
修改 `/etc/init.d/mysqld` ,修改其 `basedir` 和 `datadir` 为实际对应⽬录:  
[root@localhost mysql]# vim /etc/init.d/mysqld

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

⾸先增加 mysqld 服务控制脚本执⾏权限:
[root@localhost mysql]# chmod +x /etc/init.d/mysqld

同时将 mysqld 服务加⼊到系统服务:
[root@localhost mysql]# chkconfig --add mysqld

最后检查 mysqld 服务是否已经⽣效即可(2,3,4,5为开即可):
[root@localhost mysql]# chkconfig --list mysqld

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

mysqld         	0:关	1:关	2:开	3:开	4:开	5:开	6:关


这样就表明 mysqld 服务已经⽣效了,在2、3、4、5运⾏级别随系统启动⽽⾃动启动,以后可以直接使
⽤ service 命令控制 mysql 的启停。

MYSQL BIN ⽬录加⼊ PATH 环境变量

这样⽅便以后在任意⽬录上都可以使⽤ mysql 提供的命令。

编辑 ~/.bash_profile ⽂件,在⽂件末尾处追加如下信息 :

[root@localhost mysql]# vim ~/.bash_profile

# MySQL
export PATH=$PATH:/usr/local/mysql/bin

最后执⾏如下命令使环境变量⽣效 : 
[root@localhost mysql]# source ~/.bash_profile

至此,mysql数据库安装已经完成。


拓展 :

创建数据库 :

CREATE DATABASE 数据库名 CHARACTER SET utf8;

查看MySQL下面的用户 :

SELECT user,host FROM mysql.user;

创建用户 :

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

删除用户 :

DROP USER 'username'@'host';

给用户授权 :

GRANT privileges ON databasename.tablename TO 'username'@'host'

查看用户权限 :

SHOW GRANTS FOR 'username'@'host';

撤销授权 :

grant all on *.* to `username`@`host`;

linux安装Redis

如有安装不成功的情况,重新安装可以这样操作

find / -name redis | xargs rm -rf

Redis官方网址 :

https://redis.io/download

资源下载 : 
wget https://download.redis.io/releases/redis-5.0.14.tar.gz

没有wget的,安装一下
[root@localhost ~]# yum -y install wget

安装gcc编译工具,使用以下命令安装gcc,避免编译时出错

[root@localhost ~]# yum -y install make gcc gcc-c++ tcl ncurses-devel

创建安装目录并解压 :

[root@localhost ~]# mkdir -p /usr/local/redis
[root@localhost ~]# tar -zxvf redis-5.0.14.tar.gz -C /usr/local/redis/

确保系统中具有make编译器

[root@localhost redis]# make -version
GNU Make 3.82
Built for x86_64-redhat-linux-gnu
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

没有的话安装一下

[root@localhost redis]# yum -y install make

分配内存

[root@localhost redis-5.0.14]# make MALLOC=libc

[注]:是在redis源文件的根目录下面

完成之后,会提示执行make test

Hint: It’s a good idea to run ‘make test’ ;

[root@localhost redis-5.0.14]# make test

安装完成没有问题的情况之下,会显示如下信息(否则重新来过吧):

\o/ All tests passed without errors!

执行命令安装,PREFIX表示安装到指定的目录

[root@localhost redis-5.0.14]# make PREFIX=/usr/local/redis/redis5 install
cd src && make install
make[1]: 进入目录“/usr/local/redis/redis-5.0.14/src”

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: 离开目录“/usr/local/redis/redis-5.0.14/src”

编译成功后,查看安装文件,默认安装路径目录在/usr/local/bin目录下

[root@localhost redis]# cd /usr/local/redis/redis5/bin
[root@localhost bin]# ll
总用量 32856
-rwxr-xr-x. 1 root root 4367024 8月  10 16:13 redis-benchmark
-rwxr-xr-x. 1 root root 8153032 8月  10 16:13 redis-check-aof
-rwxr-xr-x. 1 root root 8153032 8月  10 16:13 redis-check-rdb
-rwxr-xr-x. 1 root root 4808248 8月  10 16:13 redis-cli
lrwxrwxrwx. 1 root root      12 8月  10 16:13 redis-sentinel -> redis-server
-rwxr-xr-x. 1 root root 8153032 8月  10 16:13 redis-server
[root@localhost bin]# 

该目录以及默认配置到环境变量,因此可以在任意目录下运行这些命令。其中:

  • redis-cli:是redis提供的命令行客户端
  • redis-server:是redis的服务端启动脚本
  • redis-sentinel:是redis的哨兵启动脚本
安装完成后,在任意目录输入redis-server命令即可启动Redis:
redis-server

安装配置,在源码的目录下有一个配置文件redis.conf,把它拷贝到现在编译以后的redis5文件夹中

[root@localhost bin]# cd /usr/local/redis/redis-5.0.14
[root@localhost redis-5.0.14]# cp redis.conf ../redis5/

修改redis配置

[root@localhost ~]# vim /usr/local/redis/redis5/redis.conf

【修改本机访问IP地址,允许外部访问连接】
bind 127.0.0.1 
修改为
bind 0.0.0.0

【关闭保护模式】
protected-mode yes
改为
protected-mode no

【后台运行】
daemonize no
修改为
daemonize yes

配置redis环境变量

在文件最后加入下面的内容

[root@localhost redis5]# vim /etc/profile

#redis
export REDIS_HOME=/usr/local/redis/redis5/
export PATH=$PATH:$REDIS_HOME/bin
[root@localhost redis5]# source /etc/profile

前台启动redis:

1 拷贝了配置文件的情况

[root@localhost ~]# redis-server

2 没有拷贝配置文件的情况,当然也要修改一下配置

[root@localhost ~]# /usr/local/redis/redis5/redis-server /usr/local/redis/redis-5.0.14/redis.conf

启动成功页面

1513:C 05 Sep 2022 20:03:42.831 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1513:C 05 Sep 2022 20:03:42.831 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=1513, just started
1513:C 05 Sep 2022 20:03:42.831 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1513:M 05 Sep 2022 20:03:42.832 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 5.0.14 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1513
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

1513:M 05 Sep 2022 20:03:42.836 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1513:M 05 Sep 2022 20:03:42.836 # Server initialized
1513:M 05 Sep 2022 20:03:42.836 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this
 to take effect.1513:M 05 Sep 2022 20:03:42.836 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as r
oot, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.1513:M 05 Sep 2022 20:03:42.836 * Ready to accept connections

后台启动

nohup command &:以非挂起的方式,启动一个程序到后台执行

[root@localhost ~]# mkdir ~/redislog
[root@localhost ~]# nohup redis-server /usr/local/redis/redis5/redis.conf 1>~/redislog/redis_std.log 2>~/redislog/redis_error.log &

心跳测试

[root@localhost redislog]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

设置开机自启

首先,新建一个系统服务文件:
[root@localhost ~]# vim /etc/systemd/system/redis.service

内容如下:
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/redis5/bin/redis-server /usr/local/redis/redis5/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重载系统服务

[root@localhost ~]# systemctl daemon-reload

我们可以用下面这组命令来操作redis了

# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis

执行下面的命令,可以让redis开机自启

systemctl enable redis

如果外部仍然无法访问,关闭防火墙

【关闭防火墙】
#查看防火墙状态
firewall-cmd --state
 
#关闭防火墙
systemctl stop firewalld

#永久关闭防火墙
systemctl disable firewalld


然后重启Redis服务
[root@localhost ~]# systemctl restart redis

设置访问密码 :

编辑Redis配置文件:
[root@localhost ~]# vim /usr/local/redis/redis.conf 

找到如下内容:
#requirepass foobared
去掉注释,将 foobared 修改为⾃⼰想要的密码,保存即可。
如:requirepass root
保存,重启 Redis 服务即可
systemctl restart redis
这样后续的访问需要先输⼊密码认证通过⽅可连接

redis拓展

redis常用命令

为了安全,服务端redis要设置密码

Windows下

redis服务端启动

在redis安装目录下使用下面命令

redis-server.exe redis.windows.conf

客户端启动

在redis安装目录下使用下面命令

redis-cli.exe -h 127.0.0.1 -p 6379

设置键值对

set myKey abc

取出键值对

get myKey

Linux下

redis服务端启动

源码安装后, src 目录下会出现编译后的 redis 服务程序 redis-server,还有用于测试的客户端程序 redis-cli

$ cd src
$ ./redis-server

客户端启动

$ cd src
$ ./redis-server ../redis.conf

在远程服务上执行命令

命令格式

redis-cli -h host -p port -a password
$redis-cli -h 127.0.0.1 -p 6379 -a "mypass"
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING

PONG

安装使用教程

菜鸟redis教程

redis官网

redis github站点 https://github.com/redis/redis

linux安装Nginx

​ 如有安装不成功的情况,重新安装可以这样操作

find / -name nginx | xargs rm -rf

官网访问地址 :

http://nginx.org/en/download.html

资源下载链接 :
wget http://nginx.org/download/nginx-1.21.4.tar.gz

创建安装目录并解压 :

[root@localhost ~]# mkdir -p /usr/local/nginx
[root@localhost ~]# tar -zxvf nginx-1.21.4.tar.gz -C /usr/local/nginx/

预先安装额外的依赖 :

[root@localhost ~]# yum -y install openssl openssl-devel make gcc gcc-c++ ncurses-devel pcre-devel

编译安装nginx :

[root@localhost ~]# cd /usr/local/nginx/nginx-1.21.4/
[root@localhost nginx-1.21.4]# mkdir -p /opt/nginx
[root@localhost nginx-1.21.4]# ./configure --prefix=/opt/nginx
[root@localhost nginx-1.21.4]# make && make install

安装完成后,nginx的执行文件位置位于/usr/local/nginx/sbin/nginx

启动nginx :

[root@localhost ~]# /opt/nginx/sbin/nginx

停止nginx :

[root@localhost ~]# /opt/nginx/sbin/nginx -s stop

如果修改了配置⽂件后想重新加载Nginx,可执⾏:

[root@localhost ~]# /opt/nginx/sbin/nginx -s reload

注意其配置⽂件位于:

/opt/conf/nginx.conf

最后使用浏览器访问IP验证;

Nginx拓展

常用命令

查看 Nginx 启动状态

ps -ef | grep nginx

检查配置文件nginx.conf的正确性命令

/usr/local/webserver/nginx/sbin/nginx -t

启动 Nginx

/usr/local/webserver/nginx/sbin/nginx

Nginx 其他命令

/usr/local/webserver/nginx/sbin/nginx -s reload            # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen            # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop              # 停止 Nginx

安装配置教程

nginx官方网站

菜鸟ngnix安装教程

nginx github站点 https://github.com/nginx/nginx

nginx中文文档

nginx可视化配置项目

nginxconfig.io

nginxWebUI

linux安装gitlab

安装环境和版本

  • centOS7.6
  • gitlab-ce-11.9.8-ce.0.el7.x86_64.rpm

安装流程概述

  1. 切换成root用户;
  2. 更新yum源;
  3. 卸载gitlab相关的内容;
  4. 安装gitlab必要的依赖库;
  5. 开启邮件服务器;
  6. 获取rpm安装包;
  7. 安装rpm包;
  8. 修改配置文件;
  9. 启动;
  10. 登录;
  11. 汉化;

操作流程

建议自己先使用虚拟机新建一个全新的centOS进行安装; 因为装的不行可以没有顾虑的重头再来一遍;

  1. 全程我使用的是root用户;
切换root用户 : su - root
  1. 更新一下yum源
yum -y update
  1. 卸载gitlab相关的内容;
sudo gitlab-ctl uninstall
sudo rpm -e gitlab-ce
find / -name gitlab|xargs rm -rf
  1. 安装gitlab必要的依赖;
yum -y install curl openssh-server openssh-clients postfix cronie policycoreutils-python lokkit 
  1. 开启邮件服务器, 并设置为开机自启动;
sudo service postfix start

sudo systemctl enable postfix

sudo lokkit -s http -s ssh
  1. 获取安装包;
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm

安装包地址 : https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

  1. 安装rpm包;
rpm -ivh gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm
  1. 修改配置文件;
第一个配置文件是 : gitlab.yml
如果不知道这个配置文件在哪, 可以执行以下命令查找 : find / -name gitlab.yml
选择etc下面的yml文件;
vim /var/opt/gitlab/gitlab-rails/etc/gitlab.yml

主要修改的是host, 如果你有域名可以将这个位置修改成你的域名即可, 因为我打算自己内部用就保持默认即可;
第二个配置文件 : gitlab.rb

vim /etc/gitlab/gitlab.rb

主要修改的是external_url, 将值修改成上述yml文件中的一致即可;
  1. 启动;
其实在执行完安装之后就会有显示 : sudo gitlab-ctl reconfigure

所以现在主需要输入这个启动命令即可;

补充(重启) : sudo gitlab-ctl restart
  1. 登录;
像我是通过虚拟机进行安装的, 所以直接访问自己的IP即可;

否则就要按照你自己设置的那个url进行访问;
如果访问不通的话,需要关掉防火墙
systemctl stop firewalld
访问成功时需要自己设置密码;
然后默认的管理员用户名为 : root
  1. 汉化;
登录之后>>>>>>点击头像>>>>>>点击settings>>>>>>找到Preferences>>>>>>Localization>>>>>>>>>>Language>>>>>改成简体中文即可

linux安装git

如有安装不成功的情况,重新安装可以这样操作

find / -name git | xargs rm -rf

官方网址 :

https://git-scm.com/

安装包下载链接 :

https://mirrors.edge.kernel.org/pub/software/scm/git/

资源下载 : 
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz

yum直接安装法(不建议使用):
[root@localhost /]# yum -y install git
yum安装的卸载法 :
rpm -qa | grep git 
删除关于git的一切 : 
yum -y remove git-2.27.0-1.el8.x86_64
...

提前安装所需要的依赖 :

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker

创建文件夹以及解压文件 :

[root@localhost ~]# mkdir -p /usr/local/git
[root@localhost ~]# tar -zxvf git-2.26.2.tar.gz -C /usr/local/git

编译安装 :

[root@localhost ~]# cd /usr/local/git/git-2.26.2/
[root@localhost git-2.26.2]# mkdir -p /opt/git
[root@localhost git-2.26.2]# make prefix=/opt/git all
[root@localhost git-2.26.2]# make prefix=/opt/git install

将git加入环境变量 :

编辑配置文件 : 
[root@localhost git-2.26.2]# vim /etc/profile

# git配置
export GIT_HOME=/opt/git
export PATH=$PATH:$GIT_HOME/bin

[root@localhost git-2.26.2]# source /etc/profile
[root@localhost git-2.26.2]# git --version

Git拓展

下面是整理的常用 Git 命令清单。几个专用名词的译名如下。

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

Git参考教程

菜鸟Git教程

Git官方文档 https://git-scm.com/book/zh/v2

一、新建代码库

# 在当前目录新建一个Git代码库
$ git init

# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]

# 下载一个项目和它的整个代码历史
$ git clone [url]

二、配置

Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。

# 显示当前的Git配置
$ git config --list

# 编辑Git配置文件
$ git config -e [--global]

# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

三、增加/删除文件

# 添加指定文件到暂存区
$ git add [file1] [file2] ...

# 添加指定目录到暂存区,包括子目录
$ git add [dir]

# 添加当前目录的所有文件到暂存区
$ git add .

# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p

# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...

# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]

# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

四、代码提交

# 提交暂存区到仓库区
$ git commit -m [message]

# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]

# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a

# 提交时显示所有diff信息
$ git commit -v

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

五、分支

# 列出所有本地分支
$ git branch

# 列出所有远程分支
$ git branch -r

# 列出所有本地分支和远程分支
$ git branch -a

# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]

# 新建一个分支,并切换到该分支
$ git checkout -b [branch]

# 新建一个分支,指向指定commit
$ git branch [branch] [commit]

# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]

# 切换到指定分支,并更新工作区
$ git checkout [branch-name]

# 切换到上一个分支
$ git checkout -

# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]

# 合并指定分支到当前分支
$ git merge [branch]

# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]

# 删除分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

六、标签

# 列出所有tag
$ git tag

# 新建一个tag在当前commit
$ git tag [tag]

# 新建一个tag在指定commit
$ git tag [tag] [commit]

# 删除本地tag
$ git tag -d [tag]

# 删除远程tag
$ git push origin :refs/tags/[tagName]

# 查看tag信息
$ git show [tag]

# 提交指定tag
$ git push [remote] [tag]

# 提交所有tag
$ git push [remote] --tags

# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]

七、查看信息

# 显示有变更的文件
$ git status

# 显示当前分支的版本历史
$ git log

# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat

# 搜索提交历史,根据关键词
$ git log -S [keyword]

# 显示某个commit之后的所有变动,每个commit占据一行
$ git log [tag] HEAD --pretty=format:%s

# 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件
$ git log [tag] HEAD --grep feature

# 显示某个文件的版本历史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]

# 显示指定文件相关的每一次diff
$ git log -p [file]

# 显示过去5次提交
$ git log -5 --pretty --oneline

# 显示所有提交过的用户,按提交次数排序
$ git shortlog -sn

# 显示指定文件是什么人在什么时间修改过
$ git blame [file]

# 显示暂存区和工作区的差异
$ git diff

# 显示暂存区和上一个commit的差异
$ git diff --cached [file]

# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD

# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]

# 显示今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}"

# 显示某次提交的元数据和内容变化
$ git show [commit]

# 显示某次提交发生变化的文件
$ git show --name-only [commit]

# 显示某次提交时,某个文件的内容
$ git show [commit]:[filename]

# 显示当前分支的最近几次提交
$ git reflog

八、远程同步

# 下载远程仓库的所有变动
$ git fetch [remote]

# 显示所有远程仓库
$ git remote -v

# 显示某个远程仓库的信息
$ git remote show [remote]

# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]

# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force

# 推送所有分支到远程仓库
$ git push [remote] --all

九、撤销

# 恢复暂存区的指定文件到工作区
$ git checkout [file]

# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]

# 恢复暂存区的所有文件到工作区
$ git checkout .

# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]

# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard

# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]

# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]

# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit]

# 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]

# 暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop

十、其他

# 生成一个可供发布的压缩包
$ git archive

linux安装rabbitMQ

如有安装不成功的情况,重新安装可以这样操作

find / -name rabbitmq | xargs rm -rf

环境准备

因为 RabbitMQ 需要 erlang 环境的⽀持,所以必须先安装 erlang 。

安装erlang环境

我们这⾥要安装的是 erlang-22.3.3-1.el7.x86_64.rpm ,所以⾸先执⾏如下命令来安装其对应的yum repo :

curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash

接下来执⾏如下命令正式安装 erlang 环境:

yum -y install erlang-22.3.3-1.el7.x86_64

检查是否安装成功 :

[root@localhost ~]# erl
Erlang/OTP 22 [erts-10.7.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]

Eshell V10.7.1  (abort with ^G)
1> 

开始安装MQ :

官方资源链接 :

https://www.rabbitmq.com/install-rpm.html

执⾏如下命令正式安装 rabbitmq :

yum -y install rabbitmq-server-3.8.3-1.el7.noarch

设置MQ开机自启动 :

chkconfig rabbitmq-server on

启动MQ :

systemctl start rabbitmq-server.service

开启WEB可视化管理插件 :

rabbitmq-plugins enable rabbitmq_management

访问可视化管理界⾯:

192.168.xxx.xxx:15672

添加用户名和密码 :

# 增加root用户,密码为123456
rabbitmqctl add_user root 123456
# 将root用户设置为管理员权限
rabbitmqctl set_user_tags root administrator

linux安装docker

官方网址:

https://www.docker.com/

官方安装教程:

https://docs.docker.com/engine/install/centos/

删除所有的docker文件

find / -name docker | xargs rm -rf

卸载历史docker

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

设置存储库

sudo yum install -y yum-utils

sudo yum-config-manager \--add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

先检查yum源中的docker版本

yum list docker-ce --showduplicates | sort -r

使用yum安装docker(指定版本)

yum -y install docker-ce-20.10.8

启动docker

sudo systemctl start docker

检测docker

docker pull hello-world
sudo docker run hello-world

配置docker为自启动

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

关闭自启动

sudo systemctl disable docker.service
sudo systemctl disable containerd.service

卸载docker

yum remove docker-ce

删除镜像、容器、配置文件等内容:

rm -rf /var/lib/docker

镜像加速

请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

{
  "registry-mirrors": ["https://yvk9jsq8.mirror.aliyuncs.com"]
}

重启服务

sudo systemctl daemon-reload
sudo systemctl restart docker

拓展

创建用户组

1.创建组

sudo groupadd docker

2.添加用户到用户组

sudo usermod -aG docker $user

常用命令

1.拉取镜像

docker pull [镜像名]

2.查看镜像运行状态

docker ps

3.查看镜像运行数量

docker images

linux安装R

官方网站:https://cran.r-project.org/src/base/R-4/

必备依赖安装

yum install -y gcc glibc-headers libreadline6-dev gfortran readline-devel wget libXt-devel fonts-chinese tcl tcl-devel tclx tk tk-devel  mesa-libGLU mesa-libGLU-devel bzip2-devel  xz-devel.x86_64  pcre-devel libcurl libcurl-devel texinfo.x86_64 texlive-pdftex-doc.noarch texlive gcc-gfortran patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel make gcc gcc-c++ ncurses-devel pcre-devel curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker libxml2-devel harfbuzz-devel fribidi-devel freetype-devel libpng-devel libtiff-devel libjpeg-turbo-devel cmake curl openssh-server openssh-clients postfix cronie policycoreutils-python lokkit 

创建安装包位置software(有的话就做这一步)

mkdir /usr/local/software

安装curl

cd /usr/local/software

wget http://curl.haxx.se/download/curl-7.50.1.tar.gz

tar -zxvf curl-7.50.1.tar.gz

cd curl-7.50.1

mkdir /opt/curl-7.50.1

./configure  --prefix=/opt/curl-7.50.1

make && make install prefix=/opt/curl-7.50.1

下载解压

wget https://cran.r-project.org/src/base/R-4/R-4.2.2.tar.gz
tar -zxvf R-4.2.2.tar.gz

编译安装

mkdir /opt/R
mkdir /usr/local/R

cd /usr/local/software

mv R-4.2.2 /usr/local/R

cd /usr/local/R/R-4.2.2

./configure --prefix=/opt/R --enable-R-shlib=yes --with-tcltk --with-pcre1

# 接着开始编译R
make prefix=/opt/R/
make install prefix=/opt/R/



# 出现安装问题
configure: error: PCRE2 library and headers are required, or use --with-pcre1 and PCRE >= 8.32 with UTF-8 support

# 解决办法
cd /usr/local/software

wget https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.bz2

tar -xjvf pcre2-10.39.tar.bz2

cd pcre2-10.39/

./configure

make && make install

检查

cd /opt/R

drwxr-xr-x. 2 root root 30 12月  7 18:27 bin
drwxr-xr-x. 4 root root 32 12月  7 18:27 lib64
drwxr-xr-x. 3 root root 17 12月  7 18:27 share

配置环境变量

vim /etc/profile

# R的环境变量
export R_HOME=/opt/R
export PATH=$PATH:$R_HOME/bin

更新配置

source /etc/profile

检测

(base) [root@localhost ~]# R
WARNING: ignoring environment value of R_HOME

R version 4.2.2 (2021-11-01) -- "Bird Hippie"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R是自由软件,不带任何担保。
在某些条件下你可以将其自由散布。
用'license()''licence()'来看散布的详细条件。

R是个合作计划,有许多人为之做出了贡献.
用'contributors()'来看合作者的详细情况
用'citation()'会告诉你如何在出版物中正确地引用R或R程序包。

用'demo()'来看一些示范程序,用'help()'来阅读在线帮助文件,或
用'help.start()'通过HTML浏览器来看帮助文件。
用'q()'退出R.

>

R离线安装stringi

由于服务器上很难够翻墙,而stringi的包就需要墙进行操作,因此需要提供下载安装包,进行离线安装;

下载目录:

/usr/local/software

下载icurl

wget https://raw.githubusercontent.com/gagolews/stringi/master/src/icu69/data/icu4c-69_1-data-bin-l.zip

下载stringi

wget -c https://cloud.r-project.org/src/contrib/stringi_1.7.8.tar.gz

本地安装

这两个包一定要在同一个路径之下,并且这个命令也需要在此下面执行;

如果是使用conda的,要在conda的虚拟环境中后进入路径执行,否则只会在另一个R中生效;

cd /usr/local/software

R CMD INSTALL --configure-vars='ICUDT_DIR=/usr/local/software' stringi_1.7.8.tar.gz

R安装CellChat

安装CellChat使用下面的命令

devtools::install_github("sqjin/CellChat")

其中在安装这些的时候会遇到很多没有安装的包

只需要三步骤:

步骤一:

使用conda进行安装;

例如:

conda install r-devtools

步骤二:

conda安装完成以后,进入R继续安装:

install.packages("devtools")

步骤三:

遇到生物类的包使用以下命令进行安装:

install.packages("BiocManager")

BiocManager::install('xxxx')

linux安装python

官方网站:

https://www.python.org/

在Linux的任何的版本都会自带python环境,因此系统中会自带内置python;

因此,这就需要查看内置的python是多少,是否符合自己的开发环境条件;否则就自己安装新的版本

查看python:输入python3

至于为什么输入python3,不输入python,是因为输入python是调用的python2.x的版本;(而2.x的版本已经在2020年停止使用)

[root@localhost]~# python3
Python 3.6.8 (default, Nov 16 2020, 16:55:22) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

更新内置的python:(切记使用的是大版本,不可以使用小版本;如:可以使用python3.8,不可以使用python3.8.3)

yum -y install python3.8

重新安装python

首先先安装python依赖:

yum install -y gcc glibc-headers libreadline6-dev gfortran readline-devel wget libXt-devel fonts-chinese tcl tcl-devel tclx tk tk-devel  mesa-libGLU mesa-libGLU-devel bzip2-devel  xz-devel.x86_64  pcre-devel libcurl libcurl-devel texinfo.x86_64 texlive-pdftex-doc.noarch texlive gcc-gfortran patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

解压python(存放路径/usr/local/software)

cd /usr/local/software

tar -zxvf Python-3.11.1.tgz

移动python至local目录下:

mkdir /usr/local/python

mv Python-3.11.1/ /usr/local/python

编译:

cd /usr/local/python/Python-3.11.1/

./configure --prefix=/usr/local/python

make 

make install

配置python的环境变量

vim /etc/profile


# python环境变量
export PYTHON_HOME=/usr/local/python
export PATH=$PATH:$PYTHON_HOME/bin


source /etc/profile

检测:

python -V

千万不可随意删除Linux系统中的python,否则yum就不可以使用了

linux安装conda

官方网站:

https://docs.conda.io/en/latest/#

miniconda下载地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/

anaconda下载地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

必要的依赖:

yum install -y gcc glibc-headers libreadline6-dev gfortran readline-devel wget libXt-devel fonts-chinese tcl tcl-devel tclx tk tk-devel  mesa-libGLU mesa-libGLU-devel bzip2-devel  xz-devel.x86_64  pcre-devel libcurl libcurl-devel texinfo.x86_64 texlive-pdftex-doc.noarch texlive gcc-gfortran patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

关于conda,啰嗦几句:

  • conda是一个配置隔离python环境的工具

  • 因为有些时候我们需要不同版本的python或不同版本的pip模块(比如你需要跑两个从github上下下来的代码,他们的tensorflow版本一个要求1.0一个要求2.0)

  • conda既可以实现pip模块不同版本共存,也可以实现python不同版本共存

  • conda只是一个工具,它有两种发行版,分别是Anaconda和Miniconda

    anaconda是一个大而全的工具集合,包括了非常多常用的pip模块(如numpy、pandas、scipy、matplotlib等),它还有图形化的管理工具等

    miniconda是一个单纯的conda工具,仅自带极少的python必要的包,干净纯粹,可以按照自己的需求构建任意环境

    miniconda比anaconda小非常多,可以实现全部日常需求,只不过需要自己动手
    作者:济北周南 https://www.bilibili.com/read/cv8956636 出处:bilibili

下载安装anaconda:(我的下载位置在/usr/local/software)

cd /usr/local/software

wget https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2022.10-Linux-x86_64.sh


bash Anaconda3-2022.10-Linux-x86_64.sh

配置conda的环境变量:(conda默认安装好的位置就是root路径下)

vim /etc/profile

# conda环境
export CONDA_HOME=/root/anaconda3
export PATH=$PATH:$CONDA_HOME/bin


source /etc/profile

检测:

conda --version

conda 22.9.0

初始化conda的默认基础环境:

cd /root/anaconda3/bin

./conda init bash

修改conda的镜像源:

如果没有,输入conda config

cp /root/.condarc /root/.condarc.bat

vim /root/.condarc

访问镜像网站:

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

复制里面的内容:

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

删除里面的所有信息,并将上述的内容全部copy到里面;

使其生效:

conda clean -i

conda用法

1、conda创建环境:

conda create --name 【你想要的名字】 python

示例:(1、可以指定版本)

conda create --name test python=3.8

示例:(2、可以跟随多个环境)

conda create --name test python=3.8 R=4.1

示例:(3、指定安装位置,可以通过指定-p / --prefix选项来指定环境的安装目录)

conda create -p /opt/test python=3.8

2、移除conda创建的:

conda remove --name test --all

指定路径的就直接删除路径下的所有内容即可;
conda remove -p /opt/test --all

3、查看所有的conda创建的环境:

conda info -e

4、激活使用conda创建的环境:

创建好了之后,我们就可以执行命令通过名字来激活指定的环境,比如我可以执行:

conda activate test

来切换到我这个环境 !(有多个环境的时候也是这样操作)

5、安装模块:

例如:我需要在test中安装R4.2

# 利用conda创建一个test环境
conda create -p /opt/test python=3.8

# 激活虚拟环境
source activate

# 激活test环境
conda activate /opt/test

# 安装R语言模块(可以通过conda search r查看r的版本信息)
conda install r-base=4.2

# 退出虚拟环境
source deactivate

6、退出当前环境:

conda deactivate

linux开启github加速

访问地址:

https://github.com/dotnetcore/fastgithub/releases

在Linux中安装:

cd /opt

wget https://github.com/dotnetcore/FastGithub/releases/download/2.1.4/fastgithub_linux-x64.zip

解压:

unzip fastgithub_linux-x64.zip

运行&启用:

cd /fastgithub_linux-x64

./fastgithub 
2022-12-15T15:32:10.9856067+08:00 [INF]
FastGithub.HttpServer
已监听http://localhost:38457,http代理服务启动完成

2022-12-15T15:32:11.3295460+08:00 [INF]
FastGithub.AppHostedService
FastGithub启动完成,当前版本为v2.1.4,访问 https://github.com/dotnetcore/fastgithub 关注新版本

2022-12-15T15:32:12.3513424+08:00 [WRN]
FastGithub.AppHostedService
请设置系统自动代理为http://127.0.0.1:38457,或手动代理http/https为127.0.0.1:38457

检测:

ping github.com


PING github.com (39.102.194.95) 56(84) bytes of data.
64 bytes from 39.102.194.95 (39.102.194.95): icmp_seq=1 ttl=89 time=42.1 ms
64 bytes from 39.102.194.95 (39.102.194.95): icmp_seq=2 ttl=89 time=41.6 ms
64 bytes from 39.102.194.95 (39.102.194.95): icmp_seq=3 ttl=89 time=42.6 ms
64 bytes from 39.102.194.95 (39.102.194.95): icmp_seq=4 ttl=89 time=43.0 ms
64 bytes from 39.102.194.95 (39.102.194.95): icmp_seq=5 ttl=89 time=43.2 ms
64 bytes from 39.102.194.95 (39.102.194.95): icmp_seq=6 ttl=89 time=43.1 ms

关掉:

./fastgithub stop

修改hosts进行加速:

vim /etc/hosts


# GitHub Start 
140.82.113.3      github.com
140.82.114.20     gist.github.com
151.101.184.133    assets-cdn.github.com
151.101.184.133    raw.githubusercontent.com
151.101.184.133    gist.githubusercontent.com
151.101.184.133    cloud.githubusercontent.com
151.101.184.133    camo.githubusercontent.com
151.101.184.133    avatars0.githubusercontent.com
199.232.68.133     avatars0.githubusercontent.com
199.232.28.133     avatars1.githubusercontent.com
151.101.184.133    avatars1.githubusercontent.com
151.101.184.133    avatars2.githubusercontent.com
199.232.28.133     avatars2.githubusercontent.com
151.101.184.133    avatars3.githubusercontent.com
199.232.68.133     avatars3.githubusercontent.com
151.101.184.133    avatars4.githubusercontent.com
199.232.68.133     avatars4.githubusercontent.com
151.101.184.133    avatars5.githubusercontent.com
199.232.68.133     avatars5.githubusercontent.com
151.101.184.133    avatars6.githubusercontent.com
199.232.68.133     avatars6.githubusercontent.com
151.101.184.133    avatars7.githubusercontent.com
199.232.68.133     avatars7.githubusercontent.com
151.101.184.133    avatars8.githubusercontent.com
199.232.68.133     avatars8.githubusercontent.com
# GitHub End

linux中source profile报错

报错信息:

[root@localhost ~]# source /etc/profile
'abrt-cli status' timed out

解决方法:

1、查看abrt服务状态:

[root@localhost ~]# systemctl status abrtd.service
● abrtd.service - ABRT Automated Bug Reporting Tool
   Loaded: loaded (/usr/lib/systemd/system/abrtd.service; disabled; vendor preset: enabled)
   Active: active (running) since 三 2022-12-21 17:13:22 CST; 2min 29s ago
 Main PID: 27294 (abrtd)
    Tasks: 1
   CGroup: /system.slice/abrtd.service
           └─27294 /usr/sbin/abrtd -d -s

12月 21 17:13:22 localhost.localdomain systemd[1]: Started ABRT Automated Bug Reporting Tool.
12月 21 17:13:22 localhost.localdomain abrtd[27294]: Init complete, entering main loop

2、查看端口信息:

如果拥有多个启动端口,需要全部关闭;

[root@localhost ~]# ps aux | grep 27294
root      27294  0.0  0.0 228188  5620 ?        Ss   17:13   0:00 /usr/sbin/abrtd -d -s
root      34449  0.0  0.0 108512   924 pts/0    S+   17:17   0:00 grep --color=auto 27294

3、关闭端口

kill -9 27294

4、关闭abrtd服务

[root@localhost ~]# systemctl stop abrtd.service

5、移除abrtd服务

[root@localhost ~]# systemctl disable abrtd
Removed symlink /etc/systemd/system/multi-user.target.wants/abrtd.service.

6、永久移除

[root@localhost ~]# systemctl disable avahi-deamon

补充:

启用abrtd服务

[root@localhost ~]# systemctl enable abrtd
Created symlink from /etc/systemd/system/multi-user.target.wants/abrtd.service to /usr/lib/systemd/system/abrtd.service.

启动abrtd服务

[root@localhost ~]# systemctl restart abrtd.service

linux VPS网络加速

参考地址:

[最全面的 Linux VPS 网络优化加速技术详解和一键加速脚本推荐 - 一灯不是和尚 (iyideng.net)](https://iyideng.net/black-technology/accelerator/best-linux-vps-network-speed-up-and-one-click-install-scripts.html#:~:text=最全面的 Linux VPS 网络优化加速技术详解和一键加速脚本推荐 1 1、BBR%2FBBR Plus%2FBBR 魔改版%2FLotServer,3、KCPTUN一键加速脚本 KCPTUN是一款服务器双边加速工具,可以将服务器的TCP流量,比如Shadowsokcs%2FShadowsocksr的流量,转化为KCP协议的UDP流量发出。 … 4 4、TCPA 一键加速脚本 TCPA是腾讯TEG操作系统组发布了免费的TCPA加速程序,对标谷歌的BBR,并与谷歌BBR做了对比。 )

一键安装脚本:

wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

宝塔安装

官方网址 :

https://www.bt.cn/bbs/thread-19376-1-1.html

资源下载链接 :
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

更新升级 :
curl http://download.bt.cn/install/update6.sh|bash

卸载宝塔 :
下载卸载程序
wget http://download.bt.cn/install/bt-uninstall.sh

sh bt-uninstall.sh

没有找到站点

解决方法如下:
1 登录宝塔面板后台,找到你添加的站点域名,点击“设置”,请注意对照域名填写是否有误,www和不带www的域名是否都已经添加到域名管理中,将域名填写进去即可解决问题!

二:更改配置文件
登录宝塔面板后台,找到你添加的站点域名,点击“设置”
将配置文件中的域名替换为你的新域名

三:浏览器缓存

清除浏览器缓存(快捷键CTRL+SHIFT+DEL)。

综上,“您的请求在Web服务器中没有找到对应的站点”错误,90%是由于www域名和不带www域名没有填好或者配置文件没有设置好导致的,请仔细检查宝塔面板中绑定的域名!
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐