linux笔记

LINUX

下载安装

  • 安装虚拟机

    • 新建虚拟机
    • 自定义
    • 稍后安装操作系统
    • 选择linux,选择对应的安装的版本
    • 然后选择nat网络模式
    • 然后选择创建新的虚拟机
    • 剩下没提到的都默认
  • 安装操作系统

    • 在新安装的虚拟机上,选择cd|dvd
    • 选择使用iso镜像文件
    • 选择install,确定
    • 如果跳出让你检查光盘介质,skip跳过
    • 选择datetime,选择Asia,上海(选择时区)
    • 选择installation destination 选择i will config partitioning
    • network 打开右上角的开关
    • 安装---配置用户密码
  • 设置nat模式网络

    centos7 查看ip地址:ip addr
    

    cd /etc/sysconfig/network-scripts

    vi ifcfg-eth0 | ens33 (centos7)

    i 编辑

    删除物理地址

    设置动态ip为静态static

    设置dns1 114.114.114.114

    设置 dns2 192.168.79.2是你的网关...


    DEVICE=eth0

    TYPE=Ethernet

    ONBOOT=yes

    NM_CONTROLLED=yes

    BOOTPROTO=static

    IPADDR=192.168.79.130

    NETMASK=255.255.255.0

    GATEWAY=192.168.79.2

    DNS1=114.114.114.114

    DNS2=192.168.79.2

    esc 命令模式

    :wq! 保存退出

克隆

  • 先给第一个linux拍摄快照,关机状态下
  • 右键克隆选择现有的快照、创建连接克隆 快
  • 修改配置vi ifcfg-eth0 访问地址修改
  • 修改cd /etc/sysconfig下的network 的hostname
  • cat /etc/udev/rules.d/70-persistent-net.rules
  • rm -f /etc/udev/rules.d/70-persistent-net.rules 删除这个文件会自动生成,里面克隆了上一个linux的网卡地址

问题:

Failed to start LSB: Bring up/down networking|service network restart出错

依次执行以下指令

systemctl stop NetworkManager

systemctl disable NetworkManager

重新启动网络:

systemctl start network.service

用户权限

用户操作

useradd name
#设置密码
passwd name


userdel name
#还需要手动删除以下
rm -rf /home/name/
rm /var/mail/name 

#查看所有用户
users 

组操作

groupadd name

groupdel name

用户、组、权限

添加用户到组
usermod -G share zpyu

//查看用户信息
[root@node2 home]# id zpyu
uid=500(zpyu) gid=500(zpyu) groups=500(zpyu),502(share)
文件夹组权限

chown

chown root:groupName directory

//此时groupName下的用户对share文件夹有r-x权限读和执行

文件夹设置rwx权限

chmod

权限分为u、g、o

//对组权限添加w,下面的share是一个文件夹
chmod g+w share

//对其他用户取消r和x权限,下面的share是一个文件夹
chmod o-r-x share

yum安装配置

yum配置ali镜像:mirrors.aliyun.com

  1. cd 到、/etc/yum.repos.d,备份之前的CentOS-Base.repo
  2. 阿里云镜像下载对应的CentOS-Base.repo
  3. yum clean all
  4. yum makecache

文件目录说明

详情请看:https://www.cnblogs.com/zhuchenglin/p/8686924.html

目录
/bin 存放二进制可执行文件(ls,cat,mkdir等),用户命令一般都在这里。
/etc 存放系统管理和配置文件
/home 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/usr 用于存放系统应用程序,比较重要的目录/usr/local 本地系统管理员软件安装目录(安装系统级的应用)。这是最庞大的目录,要用到的应用程序和文件几乎都在这个目录。/usr/x11r6 存放x window的目录/usr/bin 众多的应用程序 /usr/sbin 超级用户的一些管理程序 /usr/doc linux文档 /usr/include linux下开发和编译应用程序所需要的头文件 /usr/lib 常用的动态链接库和软件包的配置文件 /usr/man 帮助文档 /usr/src 源代码,linux内核的源代码就放在/usr/src/linux里 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的库
/opt 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里。
/proc 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/root 超级用户(系统管理员)的主目录(特权阶级o
/sbin 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等。
/dev 用于存放设备文件。
/mnt 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统。
/boot 存放用于系统引导时使用的各种文件
/lib 存放跟文件系统中的程序运行所需要的共享库及内核模块。共享库又叫动态链接共享库,作用类似windows里的.dll文件,存放了根文件系统程序运行所需的共享文件。
/tmp 用于存放各种临时文件,是公用的临时文件存储点。
/var 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等。
/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
  • 查看磁盘使用情况:df -h(以kb单位显示)

  • 查看一个目录或者文件的占用空间:du -h path
[root@node2 audit]# du audit.rules 
4	audit.rules

[root@node2 audit]# du -h audit.rules  //-h会带单位
4.0K	audit.rules
[root@node2 audit]# 

  • 隐藏文件都是以” . “开头的
ls -a 显示全部子文件


[root@node2 ~]# ll -a 
total 2320
dr-xr-x---.  3 root root    4096 Jul 20  2019 .
dr-xr-xr-x. 22 root root    4096 Feb  5  2020 ..
-rw-------.  1 root root     900 Jul 16  2019 anaconda-ks.cfg
-rw-------   1 root root    2320 Jul 30  2019 .bash_history
-rw-r--r--.  1 root root      18 May 20  2009 .bash_logout
-rw-r--r--.  1 root root     176 May 20  2009 .bash_profile
-rw-r--r--.  1 root root     176 Sep 23  2004 .bashrc
-rw-r--r--.  1 root root     100 Sep 23  2004 .cshrc
-rw-r--r--.  1 root root    8815 Jul 16  2019 install.log
-rw-r--r--.  1 root root    3384 Jul 16  2019 install.log.syslog
-rw-r--r--   1 root root    1534 Jul 20  2019 pwd
-rw-r--r--   1 root root 2312076 Jul 18  2019 root
drwx------   2 root root    4096 Jul 17  2019 .ssh
-rw-r--r--.  1 root root     129 Dec  4  2004 .tcshrc

  1. d开头的是文件夹,以‘ - ’开头的是文件,L开头表示软连接像快捷方式一样,b(block)开头是块设备文件,c开头是字符设备文件,p开头命令管道文件,s开头是套接字文件

  2. 第二位开始向后是权限标识,每三位为一组

    • 第一组是所属主:表示对应的创建者对其的权限,

      drwx------   2 root root    4096 Jul 17  2019 .ssh
      这个表示是一个文件,且只有创建者对它有读写执行的权限
      
    • 第二组表示用户所在的组,用户可以属于一个组,这个组下的用户对这个文件所持有的

    • 第三组表示组之外的用户权限

  3. 权限后面的一个数字表示硬链接有几个

    drwx------   2 root root    4096 Jul 17  2019 .ssh
    如2就是
    
  4. 硬链接后面的两个单词root root表示,第一个是属主,第二个是主所在的组

  5. 再后面的4096表示所占空间单位是b

  6. Jul 17 2019 表示最后一次的修改时间

  7. 最后就是文件名

命令

命令分为外部和内部命令

​ 区分:type commandName

whereis commandName 表示这个命令在什么位置

file fileName 表示这个文件是什么类型的

常用命令

命令 作用
yum install man manpages 安装帮助文档
wget url path
echo 输出,像print
mkdir -p path -p:递归创建文件夹
mkdir a/b a/c a/d 给a下创建多个文件夹
mkdir a/ 同上
mv a b 移动a到b也可以相当于改名字,-r表示操作目录
cp a b copy a文件 到 b文件,-r表示操作目录
ln file other 硬链接的意思,我理解是相当于多个引用指向多块内存,file的删除不影响other
ln -s file other 软连接,other指向file的文件,file删除影响other
ll 或者 ls -a是显示所有包括隐藏的文件,-i显示文件号和其他信息
stat file 显示文件详细信息
su user 切换用户
sudo sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具
find /(查找范围) -name '查找关键字' -type d 查找目录
find /(查找范围) -name 查找关键字 -print 查找文件
unzip name.zip -d name 解压Zip
centos7
systemctl restart sshd 重启sshd
删除
  • rm -rf * 删除当前目录下的所有文件,这个命令很危险,应避免使用。
    所删除的文件,一般都不能恢复!
  • rm -f 其中的,f参数 (f --force ) 忽略不存在的文件,不显示任何信息
    不会提示确认信息
  • rm 命令删除一个目录中的一个或者多个文件或者目录,只用rm命令不会
    删除目录,通常文件通常可以恢。
  • 删除的时候注意不要直接删除,可以先mv或者cp文件到 tmp中观查一段时间后再删除
创建目录

​ mkdir -p /...path

​ -p是递归创建目录

查找目录

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

wget

wget -P /保存文件的目录 文件下载地址

vi 文档操作
  1. 关闭文件

    :w //保存文件
    :w vpser.NET //保存至vpser.net文件
    :q //退出编辑器,如果文件已修改请使用下面的命令
    :q! //退出编辑器,且不保存
    :wq //退出编辑器,且保存文件

  2. 滚屏

    Ctrl+u:向文件首翻半屏
    Ctrl+d:向文件尾翻半屏

  3. 在vi中按u可以撤销一次操作

    u 撤销上一步的操作
    Ctrl+r 恢复上一步被撤销的操作

  4. vi +5 file 表示编辑文件光标定位在第5行

sed 文本行操作

man 命令使用,awk文本分析工具了解,先在都是用工具比较方便

stat file查看文件的详细信息包括元数据
[root@node2 ~]# stat aa
  File: `aa'
  Size: 7         	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 786851      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-02-05 19:00:08.227612982 +0800   //文件访问时间
Modify: 2020-02-05 19:00:08.227612982 +0800	  //文件内容修改时间
Change: 2020-02-05 19:00:33.765375138 +0800	  //文件元数据修改时间

touch 摸一下文件
  • touch aa 生成一个aa的文件,也将8中三个文件的时间描述更新,一般和stat组合使用
cat和more、less、head、tail
  1. cat是直接拼接出来的,全部显示,不能直接看过大的文件
  2. more是分页显示一个文件,空格可换下一页,不能上一页
  3. less是分页可以向前用空格,上一页用b,是放在内存中的不能看过大的文件。
  4. head -5 看前5行
  5. tail -5 看后5行
    • tail -f file 监控file有增量数据就打印出来
echo和>>
>>表示重定向
echo ssss >> file 向file追加ssss 
| 管道

就像是一个包裹流的管道

grep

print lines matching a pattern 打印出所匹配的正则的行

grep -E pattern file,-E表示扩展类正则会被匹配,或者\转义

eg:grep -E “[25]{1}” file

eg:grep “[25]\{1\}” file

cut、sort、wc
  • cut 显示切割的行数据

    • -f选择显示的列:-f1,2,3 | -f1-3。显示1,2,3列

    • -s不显示没有分割符的行

    • -d自定义分隔符

      cut -d ' ' -f1,2
      以空格为分隔符切割,显示1,2列
      
  • sort

    • -n按数值排序
    • -r倒序
    • -t自定义分隔符
    • -k选择排序列
    • -u合并相同行
    • -f忽略大小写
  • wc,word count

    • 统计文件的行数,或者字节数等,查询man来操作
修改的资源立即生效
方法1:

让/etc/profile文件修改后立即生效,可以使用如下命令:

# .+空格+/etc/profile

方法2:

让/etc/profile文件修改后立即生效,可以使用如下命令:

\#source /etc/profile
配置jdk环境变量
/etc/profile
#配置环境变量
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/usr/local/jdk/jre
export CLASSPATH=$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/ext
export PATH=$PATH:$JRE_HOME/bin


启动tomcat
./catalina.sh run
或者 ./start.sh

bash shell

是一个软件,如linux的命令行就是,通过账号密码进入bash shell程序中

命令执行流程
  1. 根据空格来切割你输入的命令,第一个位置认为是 命令,后面的认为是参数
  2. 内部命令直接执行,如果是外部命令就去找它对应的可执行文件
  3. 所以会有一个环境变量path来缩小搜索范围,和window一样,还会用hash表来优化查询命令
查找hash表
hash

清空hash表
hash -r

path是以 : 分割多个路径的

定义变量和进程管理
  • 定义变量、输出

  • 定义集合
    • 变量和等号之间不能随便加空格,因为shell会以空格分割
    • 数组要加上括号,元素要以空格隔开
    • 大括号会对里面的表达式先解析
arr=(1 2 3)
echo ${arr[1]}

打印当前的shell进程号

echo $$

打印所有启动的进程信息
ps -ef

强制杀死进程
kill -9 pid

查看命令帮助

man(manual 指南、手动) + commandName ,用于外部命令帮助

help + commandName,用于内部命令的帮助

踩过坑和细节

查看nginx的log

我跑到tomcat下找不到这个文件

#要进到nginx的logs目录下的文件
#tail error.log 

添加组件

​ ./configure --prefix=/usr/local/tengine --add-module=modules/ngx_http_upstream_check_module

​ 实际上是找到模块的存在的目录就行了

远程复制

​ scp file 192.168.59.12:/'pwd'

页面禁用session

​ <%@ page session="true" %>

session共享

​ 每个tomcat里面的context.xml中加入

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
	memcachedNodes="n1:192.168.43.151:11211" 
    sticky="false" 
    lockingMode="auto"
    sessionBackupAsync="false"
	requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 
/>
  • 安装memcached

    yum -y install memcached

  • 启动memcached

    memcached -d -m 128 -u root -l 192.168.59.11 -p 11211 -c 256 -P /tmp/memcached.pid

  • 查看状态

    memcached-tool 192.168.59.11:11211

    启动tomcat之前一定要先启动memcache--又踩一个坑

开机启动
chkconfig --list
chkconfig --add nginx
chkconfig nginx on
时间问题
service ntpd status
虚拟目录
   location /www {
        alias  /var/data/www1;
        index  index.html index.htm a.html;
    }
自动索引
   location /art {
        alias  /var/data/www1/;
          autoindex on;
   
    }
动静分离
	#正则是谁在前先匹配谁
	location / {
		proxy_pass http://192.168.150.11:803;
    
        }

     
     
     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|html|htm|css|js)$ {
            root  /var/data/www1/;
	       
        }
时间不同造成session不同步
一:外网同步时间
  1. 查看ntpd服务状态
    [root@cdh sbin]# service ntpd status
    ntp: unrecognized service
    说明 ntpd没有安装。
  2. 查看是否存在ntp的yum源
    [root@cdh sbin]# yum list |grep ntp
  3. 如果有显示出yum源则安装ntp服务
    [root@cdh sbin]# yum -y install ntp;
    首先启动ntp服务:service ntpd start 即可,并设置ntp服务,开机自启动:chkconfig ntpd on。
    4.同步时间:(在每台服务器上执行,或者建一个crontab定时)
    [root@cdh sbin]# ntpdate asia.pool.ntp.org
  4. chkconfig 查看自启状态
虚拟路径
  • root在location中配置多个会出错

    换成alias来替换

  • autoindex on; 表示列出这个目录下所有的文件像spring的各版本列表

启动jar
  • java -jar jarName
  • --spring.profiles.active=dev
  • 返回逻辑视图的时候前面不要加/
网络相关

ip会和掩码做按位与运算,得到你的网络号,192.168.59.11 & 255.255.255.0 = 192.168.59.0;

route -n查看路由表

gateway:默认网关,也是下一跳的地址

你连接的网关一定是你网络号在一个网络号中

连接别的网络:

网络层找到下一跳 -》 链路层arp协议解析出mac地址

ssh

  • 配置:etc/ssh/sshd_config
posted @ 2020-02-06 15:16  zpyu521  阅读(137)  评论(0编辑  收藏  举报