Linux笔记

基本命令

目录结构

远程软件(附Xshell和Xftp)

vi编辑器

关机、重启

远程登录注销

用户、组管理

运行级别

隐藏文件

文件和目录的权限

rwx权限

修改文件或目录权限

定时任务

磁盘分区和挂载

统计命令

树状形式显示目录

修改ip地址

进程管理

服务

rpm和yum

配置环境变量

防火墙

mysql安装和配置

基本命令

  • cd 切换目录

  • ls和ll
    • ls显示当前目录下的文件和文件夹名称
    • ll显示详细信息
  • pwd 显示当前目录路径

  • man 命令(用于查看命令)

  • help 命令(用于查看命令)

  • cd ~ 回到自己的家目录

  • mkdir 创建目录
    • 创建多级目录:mkdir -p /home/zrk/data
  • rm 删除目录(如果目录下不为空,则无法删除)
    • rm -rf 目录名称(强制删除)
      • -r 递规删除
      • -f 强制删除不提示
  • touch 创建新文件(可以创建多文件,以空格隔开)

  • 拷贝:cp 源文件 目标路径
    • 拷贝文件夹:cp -r 源文件夹 目标文件路径
      • 如果是覆盖操作,使用 \cp 系统不会进行提示
  • mv(移动,可用于重命名)
    • mv 原文件 新文件
  • cat (查看文件,不能修改文件)
    • cat -n 文件名(-n显示行号)
    • cat 文件名 | more (分页显示,空格显示下一页)
  • more 分屏查看
    • 显示下一页:空格
    • 下翻一行:Enter
    • 离开:q
    • 向下滚动一屏:Ctrl+F
    • 返回上一屏:Ctrl+B
    • 输出当前行号:=
    • 输出文件名和当前行号::f
  • less 分屏查看,适合查看大文件(不全部加载)
    • 向下翻页:空格
    • pagedown、pageup键
    • 查询:/关键字(n向下查找,N向上查找)
  • > 重定向指令 和 >> 追加指令
    • ls > 文件名(将ls输出的内容放到文件中)
  • echo 输出内容到控制台
    • echo "字符串"
    • echo $PATH(输出环境变量)
  • head 显示文本前几行(默认前十行)
    • head -n 5 文件(显示前五行)
  • tail -n 5 (显示后五行)
    • tail -f 文件(实时显示文件变化)
  • ln 软链接(快捷方式)
    • ln -s 源文件 链接名称
  • history 查看已经执行过的指令
    • history 5 (显示最近5条指令)
    • !5 (执行编号为5的指令)
  • 时间日期类
    • date 显示当前时间
    • date "+%Y-%m-%d %H:%M%%S" (2019-05-30 14:47:05)
    • date -s "时间" (设置当前系统时间)
  • cal日历指令
    • cal 年 (显示一年的日历)
  • 搜索指令
    • find
      • 通过文件名:find 路径(查找范围) -name 文件名
      • 通过文件的拥有者:find 路径 -user 用户名
      • 通过文件大小:find 路径 -size +4M(+大于,-小于)
    • locate,可以快速定位
      • 需要先建立locate数据库:updatedb
      • locate 文件名
        • grep
      • cat 文件名 | grep -n 关键字 (显示匹配行和行号)
      • cat 文件名 | grep -i 关键字 (忽略大小写)
  • 管道符号 |(将左侧的输出传递给右侧的命令进行处理)

  • 压缩和解压缩
    • gzip/gunzip 名称
    • zip/unzip
      • zip -r 压缩文件名 文件夹路径(递规压缩文件夹)
      • unzip -d 解压路径 压缩文件 (解压缩到指定文件夹)
    • tar
      • -c 产生.tar打包文件
      • -v 打包时显示详细信息
      • -f 指定解压后的文件名
      • -z 打包同时压缩
      • -x 解压.tar文件
      • tar -zcvf 压缩文件名 文件1 文件2 (一般的压缩组合指令)
      • tar -zxvf 要解压的文件 (一般的解压组合指令)
      • 解压到指定目录(目录需要存在):tar -zxvf 要解压的文件 -C 路径

目录结构

  • 根目录 /
    • /bin 存放常用的命令
    • /sbin 系统管理员使用的管理程序
    • /home 创建用户时会在此新建属于自己的目录
    • /root 系统管理员的目录
    • /lib 系统开机所需最基本的动态连接共享库,几乎所有的程序都会用到
    • /lost+found 一般为空,系统非法关机时存放一些文件
    • /etc 系统管理所需的配置文件和子目录
    • /usr 存放用户的应用程序等
    • /boot 引动系统启动的核心文件
    • /proc 虚拟目录,系统内存的映射,可以获取系统信息
    • /srv 服务启动后需要的数据
    • /sys 该文件系统是内核设备树的一个直观反映
    • /tmp 存放临时文件
    • /dev 将所有硬件用文件的形式存储
    • /media 设备挂载目录
    • /mnt 临时挂载别的文件系统
    • /opt 安装软件存放目录
    • /usr/local 软件安装后的目录
    • /var 存放不断扩充的文件,即经常被修改的文件放在此目录,包括日志文件
    • /selinux 安全子系统,可以控制程序只能访问特定文件

远程软件

  • 远程登录软件XShell

  • 上传下载文件XFtp

  • 链接: https://pan.baidu.com/s/1WCq7Mmz4k2MOdspvuAFtNA 提取码: px6m
    • 运行绿化.bat
    • 如果报错,根据提示安装windows相应环境

vi(Linux内置)和vim(增强版)编辑器

  • 三种模式:正常模式、插入模式(编辑模式)、命令行模式
    • 打开后先进入正常模式,可以使用快捷键(按Esc回到正常模式)
    • 按下i进入插入模式,进行文本修改
    • 按下 : 进入命令行模式,提供相关指令,如:保存退出(:wq)
  • 快捷键
    • yy 复制当前行,5yy 复制当前行下向下的5行
    • p 粘贴
    • dd 删除当前行,5dd 删除当前行下向下的5行
    • 在文本中查找,输入 /关键字,在输入n,即查找下一个
    • :set nu 显示行号,:set nonu 不显示行号
    • G 到文本最后一行,gg 到文本第一行
    • 行号 G,到达指定行号
    • u 撤销

关机、重启(之前执行 sync 把内存数据同步到磁盘,防止数据丢失)

  • shutdown
    • shutdown -h now 立即关机
    • shutdown -h 1 1分钟后关机
    • shutdown -r now 重启
  • halt 关机

  • reboot 重启

远程登录注销

  • logout

用户管理、用户组

  • root管理员 属于root组,一个用户至少属于一个组

  • 添加用户:useradd [选项] 用户名
    • 当创建用户时,没有指定组将创建和用户同名的组
    • 指定用户组 useradd -g 组名 用户名
    • 用户创建时系统自动在home目录创建同名文件夹
      • 如果不想系统创建,也可以指定创建的文件夹名 useradd -d 文件夹路径 用户名
  • 设置或修改密码:passwd 用户名,然后输入密码

  • 删除用户:userdel 用户名
    • 不带参数删除用户,保留用户家目录
    • userdel -r 用户名,删除用户及其家目录
  • 查询用户信息:id 用户名
    • 查询出uid(用户id)、gid(组id)、组(组名称)
  • 切换用户:su - 用户名
    • 从高级别用户到低级别用户时不需要输入密码,输入exit会回到高级别用户
  • 查询当前用户:whoami

  • 添加用户组 groupadd 组名

  • 修改用户所在组
    • usermod -g 组名 用户名
      • 修改用户的主组,之前的主组变为附属组
    • usermod -G 组1,组2 用户名
      • 替换用户的附属组,如果附属组和主组相同,表示只有主组
    • usermod -a -G 组1,组2 用户名
      • 添加用户的附属组
  • 删除用户组 groupdel 组名

  • 用户配置文件:/etc/passwd
    • 部分行的含义:用户名:口令:用户id:组id:注释描述信息:主目录:shell
  • 组信息文件:/etc/group
    • 部分行含义:组名:口令:组id:组内用户列表(隐藏)
  • 口令配置文件(密码和登录信息,加密文件):/etc/shadow
    • 部分行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • chown 修改文件所有者
    • chown 用户名 文件名
  • chgrp修改文件所在组
    • chgrp 组名 文件名
  • chown -R 人:组 目录 (递规修改目录和文件的所有者和组)

Linux七个运行级别

  • 0:关机
  • 1:单用户[找回丢失密码]
  • 2:多用户,无网络
  • 3:多用户,有网络
  • 4:系统未使用,保留
  • 5:图形界面
  • 6:重启
  • 配置文件路径:/etc/inittab
  • 指定级别:init 级别

隐藏文件(以.开头的文件)

文件和目录的权限

(例如/home下的文件) -rw-r--r--. 1 zrk NetCore 120 2月 28 12:12 zrk

  • 0:- 普通文件,d 文件夹,l 软链接,c 设备(键盘或鼠标),b 块文件(硬盘)
  • 1-3:文件所有者权限
  • 4-6:文件所在组的用户权限
  • 7-9:文件其他组的用户权限
  • 如果是文件,1表示硬链接;如果是目录,表示目录下的子目录个数
  • 表示拥有者
  • 表示所属组
  • 表示文件大小
  • 文件的修改时间
  • 名称

rwx权限,读、写、可执行/可进入

  • 对文件有写权限,表示可以修改,但是删除,需要有目录的写权限
  • r=4,w=2,x=1
  • rwx(有权限表示1,没有权限表示0)只有r就是100(二进制)=4,只有w就是010(二进制)=2,只有x就是001(二进制)=1

修改文件或目录权限chmod

  • chmod u=rwx,g=rx,o=x 名称
  • chmod o+w 名称 (给其他人加写权限)
  • chmod a-r 名称 (给全部人减少读权限)
  • chmod 777 名称 (通过数字给权限,给全部人所有权限)

定时任务 crontab

  • -e 编辑定时任务,例如(每分钟在result中写入ll命令的结果):/1 * * * ll /etc/ >> /tmp/result.txt
    • 第一个*:分钟(0-59)
    • 第二个*:小时(0-23)
    • 第三个*:天(1-31)
    • 第四个*:月(1-12)
    • 第五个*:星期(0-7,0和7都表示星期天)
  • 特殊符号说明
    • *代表任何时间,每秒、每分、每小时...
    • ,表示不连续的时间
    • -表示范围
    • /表示,左边表示开始,右边表示步长
  • -l 列出当前所有定时任务

  • -r 终止所有任务

  • service crond restart 重启任务

磁盘分区和挂载 crontab

  • 分区方式
    • mbr分区
      • 最多支持4个主分区
      • 系统只能安装在主分区
      • 扩展分区要占用一个主分区
      • 最大只支持2TB,但是兼容性好
    • gtp分区
      • 不限主分区(但是操作系统有可能限制)
      • 最大支持18EB(EB=1024PB,PB=1024TB)
      • win7 64位后支持gtp
  • 硬盘:IDE(old)、SCSI(性能好)

  • 驱动器标识符:例如hdx~、sdx~
    • hd表示IDE设备类型,sd表示SCSI
    • x为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘)
    • ~表示分区,前1-4个分区是主分区或扩展分区,从5开始是逻辑分区
  • 查看系统分区和挂载的命令 lsblk [-f]

  • 挂载点实际上就是linux中的磁盘文件系统的入口目录

  • 实例:增加一块硬盘
    • 虚拟机添加硬盘:设置=>硬盘=>添加
    • 分区
      • fdisk /dev/磁盘(sdb)
      • m(显示帮助信息)
    • 格式化
      • mkfs -t ext4 /dev/分区(sdb1)
    • 挂载(下面只是临时挂载,重启后就消失)
      • mount /dev/分区 /home/文件目录(卸载 umount 分区或文件目录)
    • 设置可以自动挂载
      • etc/fstab (记录分区和挂载点信息),修改此文件会自动挂载
        • /dev/分区 /home/文件目录 ext4 defaults 0 0
  • 磁盘使用情况查询
    • df -h
    • 查询目录占用磁盘情况:du -ach --max-depth=1 目录
      • -s 指定目录占用大小
      • -h 带计量单位
      • -a 含文件
      • --max-depth=1 子目录深度
      • -c 列出明细,并增加汇总值

统计命令wc

  • -c 统计字节数
  • -l 统计行数
  • -m 统计字符数
  • -L 打印最长行的长度
  • 实例:
    • 统计目录下的文件个数:ll 目录 | grep "^-" | wc -l
    • 统计目录下的文件夹个数:ll 目录 | grep "^d" | wc -l

tree命令,以树状形式显示目录

修改ip地址

  • 指定固定ip地址
    • /etc/sysconfig/network-scripts/ifcfg-eth0
           ONBOOT=yes(启用)
           BOOTPROTO=static(以静态的方式获取ip)
           IPADDR=192.168.1.110(指定ip)
           GETWAY=关
           DNS1=dns和网关保持一致即可

    进程管理

  • ps 查看系统中的进程
    • -a 显示所有
    • -u 以用户的格式显示
    • -x 显示后台进程运行的参数
    • -ef 会显示进程的父进程
  • pstree -p 以树状的形式显示进程和pid

  • kill和killall 终止进程
    • kill [选项] 进程号
      • -9 (强制终止)
    • killall 进程名称(支持通配符)
  • top 动态监控进程
    • -d 数字,刷新时间
    • -i 不显示任何闲置或僵死进程
    • -p 监视某个进程状态
    • P 按cpu使用率排序(默认)
    • M 按内存使用排序
    • N 按PID排序
    • q 退出top
    • k 结束进程

服务(service)

  • service 服务名 [start|stop|restart|reload|status](临时生效)
    • centos7.0后使用systemctl
  • 查看防火墙状态
    • service iptables或firewalld(默认防火墙) status
  • setup 查看所有服务(或者在/etc/init.d/)

  • chkconfig可以给服务的各个运行级别设置启动和关闭(永久生效)
    • chkconfig --level 运行级别 服务名 on/off
    • chkconfig --list 列表显示服务
  • 查看网络情况:netstat -anp
    • -an 按一定顺序排序输出
    • -p 显示哪个进程在调用

rpm和yum

  • rpm包(相当于windows中的安装程序)
    • -qa 查询所有已安装的rpm包
    • -qf 路径(查询文件所属的软件包)
    • -qi 软件包(查询详细信息)
    • -e 卸载rpm包(如果有依赖提示不让删,使用 -e --nodeps 包名)
    • -ivh rpm包路径
      • -i install
      • -v 提示
      • -h 进度条
  • yum 前端软件包管理,基于rpm,用的比较多,自动安装所有依赖包
    • install 安装
    • update 更新
    • check-update 检查可更新程序
    • info 显示安装包信息
    • list 查询服务器有没有所需的安装包(yum list | grep 软件)
    • remove 删除
    • deplist 查看程序包依赖

配置环境变量

  • 文件路径:/etc/profile

  • 以java环境变量为例
    • 在文件末尾添加:
    JAVA_HOME=路径
    PATH=路径:$PATH(冒号代表连接符)
    export JAVA_HOME PATH

防火墙(禁用firewall,使用iptables)

  • 关闭firewall:systemctl stop firewalld.service

  • 禁止firewall开机启动:systemctl disable firewalld.service

  • 安装iptables防火墙:yum install iptables-services

  • 编辑防火墙配置文件:vi /etc/sysconfig/iptables
    • 以3306端口为例:-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
  • 重启防火墙使配置生效:systemctl restart iptables.service

  • 设置防火墙开机启动:systemctl enable iptables.service

mysql安装和配置(以5.7为例,初始化方式和老版本不同)

  • 查看是否已有mysql,有则需要卸载:pm -qa | grep mysql

  • 下载解压到/usr/local/mysql

  • 添加mysql组和mysql用户

  • 修改 /usr/local/mysql的组和用户权限为mysql:chown -R mysql:mysql /usr/local/mysql

  • 初始化数据库:/usr/local/mysql/bin/mysqld --initialize --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
    • --user 启动mysql的用户
    • --basedir mysql安装目录
    • --datadir mysql数据仓库目录
    [root@z mysql]# /usr/local/mysql/bin/mysqld --initialize --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
    
    2019-05-31T10:21:06.750933Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2019-05-31T10:21:07.644227Z 0 [Warning] InnoDB: New log files created, LSN=45790
    2019-05-31T10:21:07.764158Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
    2019-05-31T10:21:07.777875Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: cdcb1ce4-838d-11e9-a1bd-000c29256118.
    2019-05-31T10:21:07.782886Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
    2019-05-31T10:21:07.784521Z 1 [Note] A temporary password is generated for root@localhost: pNRthyw-c31r
    
    • 初始化后打印的最后一行,也和之前版本不同,它给了root一个初始密码,后面要登录的时候要用到这个密码。
  • 将mysql/目录下除了data/目录的所有文件,改回root用户所有:chown -R root /usr/local/mysql

  • mysql用户只需作为data目录下所有文件的所有者:chown -R mysql /usr/local/mysql/data

  • 复制启动文件:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

  • 增加mysqld服务控制脚本执行权限:chmod 755 /etc/init.d/mysqld

  • 将mysqld服务加入到系统服务:chkconfig --add mysqld

  • 检查mysqld服务是否已经生效:chkconfig --list mysqld

  • 修改启动脚本:vi /etc/init.d/mysqld
    basedir=/usr/local/mysql/ datadir=/usr/local/mysql/data port=3306

  • 启动服务:service mysqld start

  • 加入环境变量,可以在任何地方用mysql命令,vi /etc/profile
PATH=/usr/local/mysql/bin:$PATH
export PATH
  • 刷新立即生效:source /etc/profile

  • mysql -u root -p
    • 输入之前的密码
  • 修改密码:set password=password('新密码');

  • 开放3306端口

你可能感兴趣的:(Linux笔记)