快速上手Linux

Linux学习记录

Posted by zhanghaichao on September 8, 2018

1.SSH命令

SSH是指Secure Shell,是一种安全的传输协议,Ubuntu客户端可以通过SSH访问远程服务器
SSH分客户端openssh-client和openssh-server.
如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudoapt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server。

1.1 ssh安装

客户端安装. sudo apt-get install ssh 或者 sudo apt-get installopenssh-client

安装服务端。 sudo apt-get install openssh-server

确认sshserver是否启动了:(或用“netstat -tlp”命令)ps -e grep ssh

如果只有ssh-agent那ssh-server还没有启动,需要/etc/init.d/ssh start,如果看到sshd那说明ssh-server已经启动了。

如果没有则可以这样启动:sudo/etc/init.d/ssh start

1.2 ssh服务命令

停止服务:sudo /etc/init.d/ssh stop

启动服务:sudo /etc/init.d/ssh start

重启服务:sudo /etc/init.d/sshresart

断开连接:exit

登录:sshroot@192.168.0.100

1.3 ssh登陆服务器

常用格式:ssh [-llogin_name] [-p port] [user@]hostname
例如 ssh -p 22 zhanghaichao@192.168.1.1

1.4 ssh config

  • 路径:~/.ssh/config
  • 语法关键字

      touch config 
      vim config
    	
      host "zhanghaichao"
      HostName 192.168.1.1
      User root
      Port 22
    	
      host "zhanghaichao2"
      HostName 192.168.1.2
      User root
      Port 22
    

加入配置文件之后可以通过别名连接服务器。
如:ssh zhanghaichao

1.5 ssh免密登陆

命令:ssh-keygen -t rsa.
可以不要指定加密方式:ssh-keygen

生成的密钥在 ~/.ssh/ 目录下
使用 cat ~/.ssh/id_rsa.pub 查看公钥,并将其写入到服务器中

写入方法:
登陆服务器,使用vim ~/.ssh/authorized_keys命令,将生成的公钥复制进去,并保存。

注意,如果如果写入之后还需要密码登陆,在客户端使用ssh-add ~/.ssh/id_rsa 将生成的私钥加载一下

1.6 修改ssh端口

命令:vim /etc/ssh/sshd_config.
在文件中加入Port 10086.
使用 service sshd restart,重启服务生效。

2.Linux常用命令

2.1 软件操作命令

  • 软件包管理器: yum
  • 安装软件:yum install xxx
  • 卸载软件:yum remove xxx
  • 搜索软件:yum search xxx
  • 清理缓存:yun clean packages
  • 列出已安装:yum list
  • 软件包信息:yum info xxx

2.2 服务器硬件资源和硬盘操作

  • 内存:free -m
  • 硬盘:df -h
  • 负载:w/top
  • cpu个数和核数:cat /proc/cpuinfo

2.3 文件和文件夹操作命令

  • Linux文件的目录结构
    • 根目录 /
    • 家目录 /home
    • 临时目录 /tmp
    • 配置目录 /etc
  • 文件基本操作

        cd /tmp
    	   
        ls -al
        ll
    	  
        touch file.txt #创建文件
        mkdir zhc_dir
        mkdir -p zhc_dir/test #创建目录
    	  
        rm file.txt #删除文件
        rm -rf zhc_dir #删除目录
    	  
        cp file1 /zhc_fir/file1 #复制
    	  
        mv flie1 file2 #重命名或移动
    
  • 文本编辑vim
    • 安装:yum install vim
    • 一般模式:
      esc进入该模式。
      G光标移到行末尾,
      gg光标移到行首,
      dd删除行,数字加dd删除n行
      u撤销删除
      yy复制行,p粘贴
    • 编辑模式: 一般模式输入i进入
    • 命令行模式: 一般模式输入:进入
  • 文件权限421

  • 文件搜索,查找,读取

    • grep -n “findword” filename #查找文件中的字符
    • cat filename wc -l #统计行数
    • grep “findword” filename wc -l
    • find dirname -name “*.java “ #查找文件
    • find dirname -type f #f表示文件,d表示目录
    • find . -ctime -20 #20天内有修改的文件
    • find dirname -type f -mtime +7 #更改时间在7天以前的
    • find . -type f -perm 777 -exec ls -l {} \;
  • 文件压缩解压

    • tar -cvf file.tar file # 创建压缩文件
    • tar -tf file.tar #显示压缩文件内容
    • tar -tvf file.tar #显示压缩文件详细内容
    • tar -xvf file.tar #解压缩文件内容
    • tar -czvf file.tar.gz file #gzip压缩
    • tar -xzvf file.tar #解压缩文件内容
    • 指定解压目录:tar -zxvf file.tar.gz -C dirname

2.4 系统用户操作命令

tips:

  1. 在root权限下,useradd只是创建了一个用户名,如 (useradd +用户名 ),它并没有在/home目录下创建同名文件夹,也没有创建密码,因此利用这个用户登录系统,是登录不了的,为了避免这样的情况出现,可以用 (useradd -m +用户名)的方式创建,它会在/home目录下创建同名文件夹,然后利用( passwd + 用户名)为指定的用户名设置密码。
  2. 可以直接利用adduser创建新用户(adduser +用户名)这样在/home目录下会自动创建同名文件夹

    • useradd username
    • passwd username
    • userdel -r username

2.5 防火墙相关设置

  • 安装:yum install firewalld
  • 启动:service firewalld start
  • 检查状态:service firewalld status
  • 关闭禁用:service firewalld stop/disablecd ~
  • 查找服务:ps -ef grep firewall
  • 查看版本:firewall-cmd –version
  • 查看状态:firewall-cmd –state
  • 查看区域:firewall-cmd –get-zones
  • 区域详细信息:firewall-cmd –list-all-zone
  • 列出服务:firewall-cmd –list-services
  • 查询服务:firewall-cmd –query-service=ssh
  • 删除服务:firewall-cmd –remove-service=ssh
  • 添加服务:firewall-cmd –add-service=ssh

2.6 提权操作sudo和文件传输操作

  • visudo 允许普通用户提权
  • wget url
  • curl -o filename url
  • windows平台使用xshell连接服务器,文件传输使用(rz,sz):yum install lrzsz

3.SCP命令

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 … [[user@]host2:]file2.
DESCRIPTION :scp copies files between hosts on a network.

利用scp传输文件

3.1 从服务器上下载文件

scp username@servername:/path/filename.
例如 scp zhanghaichao@192.168.0.101:/home/test.txt
把192.168.0.101上的/home/test.txt的文件下载到当前目录

3.2 上传本地文件到服务器

scp /path/filename username@servername:/path
例如scp /home/test.txt zhanghaichao@192.168.0.101:/home/test.txt
把本机/home/test.txt 目录下的test.txt文件上传到192.168.0.101这台服务器上的/home目录中

3.3 从服务器下载整个目录

scp -r username@servername:remote_dir/ local_dir/ 例如:scp -r zhanghaichao@192.168.0.101 /home/test /home/

3.4 上传目录到服务器

scp -r local_dir username@servername:remote_dir 例如:scp -r test zhanghaichao@192.168.0.101:/home
把当前目录下的test目录上传到服务器的/home目录

4.WebSever

4.1 Apache

  • 安装与启动

    • ps -ef grep httpd
    • netstat -anpl grep ‘http’
  • 配置虚拟主机

    • vim /etc/httpd/conf/httpd.conf

         <VirtualHost *:80>   
         ServerName www.xxx.xxx
         DocumentRoot /data/www 
         <Directory "/data/www">
             Options Indexes FollowSymLinks
             AllowOverride None
             Require all granted
      			
             <!-配置伪静态,先在httpd.conf中加载rewrite模块,所有后缀为htmp都指向index.html-->
             <IfModule mod_rewrite.c>
                 RewriteEngine On
                 RewriteRule ^(.*).htmp$ index.html
             </IfModule>
         </Directory>
      			
         </VirtualHost>
      		 
      
    • services httpd restart
    • mkdir -p /data/www
    • cd /data/www
    • vim index.html
    • sudo setenforce 0

    详解Mac自带apache配置

4.2 Nginx

  • 安装与启动

  • 伪静态 nginx.conf
  • 日志格式配置 log_format
  • 反向代理和负载均衡

Mac安装nginx配置过程

5.数据库服务

5.1 Mysql安装及链接

  • yum remove mariadb #卸载mariadb(mysql开源实现)
  • yum install mysql-community-server #安装mysql
  • cat /var/log/mysqld.log grep ‘password’ #查找原始密码
  • mysql -uroot -p #登陆mysql
  • set global validate_password_policy=0; #关闭密码安全策略
  • set global validate_password_length=1; #设置密码长度

5.2 远程链接

5.3 开启genelog

  • set global general_log_file=”/tmp/mysql.log”; #设置日志路径
  • set global general_log=on; #开启日志
  • set global general_log=on; #关闭日志

5.4 新建用户

  • create user ‘zhc’@’%’ identified by ‘123456’; #新建用户
  • grant all privileges on . to ‘zhc’@’%’ with grant option; #赋予用户所有的权限
  • grant select,insert,update,delete privileges on . to ‘zhc’@’%’ with grant option; #赋予用户增删改查权限
  • revoke all privileges on . From zhc; #移除用户所有全乡
  • flush privileges; #刷新权限,相当于重启服务
  • mysql -uzhc -p123456 #登陆新建的用户

5.5 找回mysql密码

6.缓存服务

6.1 Memcached基本操作

6.2 Redis基本操作

源码编译安装方法:
1. 从redis官网下载源码包,解压redis.tar.gz
2. 安装所需依赖:gcc
3. 进入解压目录,执行make(make malloc=libc)
4. sudo make install

redis命令:
1. 启动redis服务后使用 ./redis-cli命令启动客户端
2. set key value #设置redis缓存
3. get key #得到key对应的value
4. del key #删除这个键值对
5. LPUSH queuename value1 #队列存储。
6. RPUSH queuename value2
7. LPUSH queuename value3
8. LRANGE queuename 0 3 #查询队列。

7.GIT版本管理工具

  1. 安装: sudo yum install git
  2. 生成ssh_key:见第一章第五小节
  3. 基本使用:廖雪峰git
  4. 命令自动补全:
    • git clone git@github.com:git/git.git #下载github中的一个项目
    • sudo cp contrib/completion/git-completion.bash /etc/bash_completion.d/ #将项目中的一个脚本复制到指定目录
    • source /etc/bash_completion./git-completion.bash #加载bash脚本
    • 编辑 ~/.bash_profile 加入下面语句自动加载脚本.
      if[-f /etc/bash_completion./git-completion.bash];then
      source /etc/bash_completion./git-completion.bash
      fi

8.Python运行环境配置

9.常用服务(运维)

  1. 定时任务:crontab
    crontab -e
    五个星号按照时间排序为,分,时,天,月,周,后面接脚本命令

  2. 更新系统时间:ntpdate
    ntpdate cn.pool.ntp.org
  3. 日志分割:logrotate
  4. 进程监控管理:Supervisor
  5. 监控神器:zabbix