linux、redis、openldap

目录

linux

1、yum介绍

2、详细命令

3、定时执行命令

redis

openldap


linux

1、yum介绍

yum install -y gcc g++ gcc-c++ make 

在Linux下进行C/C++编程时,就需要用到gcc,g++(编译工具),以及gdb(调试工具)

1)没有root权限: 命令前加上 sudo (乌班图, rehat是 su)

2)yum原理:CentOS将发布的软件放置到yum服务器,然后分析这些软件的依赖属性,将软件内的记录信息写下来,记录成软件相关性的清单列表。 当客户端有软件安装的需求时,客户端主机会主动向网络上面的yum服务器请求下载要安装的软件 【全称:Yellow dog Updater Modified,一个前端软件包管理器。能够从指定服务器自动下载RPM包并且安装,可以自动处理依赖性关系, 并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装】

3) -y 无需确认,直接安装,make,一个自动化编译工具,使用一条命令编译多个软件包

4)rpm -q gcc 命令可以查询安装的 gcc等

5)gcc-c++是为gcc提供c++语言特性支持的

2、详细命令

快捷键:Ctrl+a --回到行首 、Ctrl+e --回到行尾 、终止命令执行: Ctrl+c 或 q

man :查看程序或命令的帮助手册

uname -a --查看系统版本详细信息

free --查看内存相关(可加 -m / -g 指定单位显示)

free -m | awk '{print $2" "$3}' | sed -n "2,2p" --将内存的总大小和使用大小这两个数字单独打印出来

ls -a -- .文件也显示、 ls -l  --显示出文件详细信息(drwxr-xr-x 2 root root 4096 8月 15 11:16 test)

cd -  --回到上次所在的目录

telnet 127.0.0.1 8084 -- windows下测试服务器端口号是否开放

netstat -na --windows下测试本机端口是否开放

lsof -i:8848 -- linux下测试端口号是否开放

netstat -ntlp --查看所有端口信息

netstat -ntlp |grep 8081 --查看某一端口信息

kill解析:执行kill,系统发送一个SIGTERM信号给对应的程序,SIGTERM多半会被阻塞, 执行kill -9,系统给对应程序发送的信号是SIGKILL,即exit,exit不会被阻塞,所以kill -9能顺利杀掉进程

tar cvf etcbak.tar etc/ 打包一个tar               、tar xvf etcbak.tar 解开一个tar

tar cvfz etcbak.tar.gz etc/ 打包压缩一个 tar 、tar xvfz etcbak.tar.gz 解压一个tar

加 -C 可解压到指定目录:tar -xvfz mysql.tar.gz -C ../websoft/ (此处-C区分大小写)

参数前加-的区别:参数前单-表示后面参数为字符形式,如tar -zxvf ;加-- 表示后面参数为单词,如rm - -help。 加不加-执行命令的结果是相同的,区别主要涉及Linux风格,System V和BSD,加-属于BSD风格,不加-属于System V风格

touch 11  --创建文件  、mkdir aa  --创建文件夹  、mkdir -p bb/cc  --创建嵌套文件夹

rm 11 --删除文件 、rmdir aa --删除文件夹 、rmdir -p bb/cc --删除嵌套文件夹

rm -rf *  --不提示,删除当前目录所有文件(所以,删除文件夹也可: rm -rf aa)

-r 向下递归,不管多少级目录,一并删除; -f 强行删除,不作任何提示 

cp aa/22 bb/222  --复制aa文件夹下22文件到bb文件夹,并改名为222

cp -r aa bb/aaa  --复制aa文件夹到bb文件夹下,并改名为aaa

mv 33 ../aa/333  --剪切33文件到aa文件夹下,并改名为333

mv aa ../bb/aaa  --剪切文件夹,里面有文件也可以,aa文件夹剪切到bb文件夹下,并改名为aaa

cat 1.log | grep '\-10005' > /2019/$(hostname)-1.log --将1.log的内容筛选后写入fcpprdca01-1.log

cat                     --将文件内容输出
| grep '\-10005'  --筛选, '\' 对 '-'转义
 > 输出重定向:将原来输出到屏幕的内容输出到指定文件 (>>追加内容)
 < 输入重定向:将原来需要由键盘输入的数据,改由文件内容来取代 
echo $(hostname)  --打印文本 ,此处打印 服务器主机名(fcpprdca01)

内容查找

find . -name test 2>>222 1>>111 将错误的查找结果输入到222,正确的结果输入到111

find . -name test 2>>222 1>&2 将结果都放入222

find / -name 'java' --搜索java文件,查找jdk默认安装目录

sed:Stream EDitor(流编辑器)

sed -n '5,8 p' passwd          -- 查看passwd文件的第5到第8行内容

sed -n '/^root/ p' passwd     -- 查看passwd文件中以root开头的行

sed -n '/root/I p' passwd      --忽略大小写,对含有root字符的行打印出来

sed -n '\%root% p' passwd  -- 查找passwd文件中有root字符串的行

加 -i 会改变原文件,加扩展名则会先备份

sed -i '1 d' passwd                     -- 删除原文件第1行,-d ∶删除

sed -i.bak '1 d' passwd              -- 修改原文件之前备份

sed -n '5,10 s/aa/bb/g' passwd  -- 将passwd的5到10的aa字符串替换为bb

(s)全局范围

(g)作用范围内每一行出现的不仅第一个目标,而是所有目标都会被替换

grep root /etc/passwd 查找root

grep -v root /etc/passwd 打印没root的行

grep root /etc/passwd /etc/111 在多个文件中查找

文件操作

dd (删除光标所在的这一行,命令模式下)

wc -l 1.log  --统计文本

-l 统计文本的行数、 -w 统计文本的单词数 、-c 统计文本的字符数、 不写 三个都打印出来

ssh登录服务器

ssh hostname --hostname可以是域名、IP地址、局域网内部的主机名,不指定用户名,使用客户端当前用户

-l 指定用户登录远程服务器:ssh -l username hostname 等同于:ssh username@hostname

-p 指定连接的服务器端口(默认是22):ssh -p 90 hostname

直接执行远程命令:ssh username@hostname command

远程命令要交互输参数的,加 -t:ssh -t hostname command

-L 端口转发:ssh -L 9999:targetServer:80 username@hostname

--发向本地9999端口的请求,都经过 hostname 发往 targetServer 的80端口

其他登录参数:SSH 客户端 - SSH 教程 - 网道

用户操作

1)su root/otherUser --切换用户,切换到root用户,可省略root,直接su ,输入被切换用户的密码

     修改该用户密码:sudo passwd root / passwd otherUser

2)sudo -i  --切换到root用户,要输入当前用户的密码

3)useradd、adduser创建用户:useradd -u 500 -c adduser_yxw -d /usr/yxw -s /bin/sh -g users -m yxw

-c:加上备注文字,备注文字保存在passwd的备注栏中

-d:指定用户登入时的主目录,替换系统默认值/home/<用户名>

-g:指定用户所属的群组,值可以是组名、GID。用户组必须已经存在,默认值为100,即users

-m:主目录不存在自动创建

-s:指定用户登入后所使用的shell环境。默认值为/bin/bash

-u:指定用户ID号。该值在系统中必须唯一。0~499默认保留给系统账号,所以该值须大于499

4) usermod 修改用户帐号设定: usermod -d /home/yxw yxw ( 修改登录目录 )

-e:修改帐号的有效期限。            -f:修改在密码过期后多少天即关闭该帐号。

-G:修改用户所属的附加群组。    -l:修改用户帐号名称。

-L:锁定用户密码,使密码无效。 -U: 解除密码锁定。 ......

3)中的参数都有,加什么修改什么

chmod解析

操作文件或目录的用户,有3种:文件所有者、群组用户、其他用户

文件或目录的权限又分为3种:只读、只写、可执行(权限组合就是对应权限值求和,例如 7 = 4 + 2 + 1)=》 r 4 00000100 w 2 00000010 x 1 00000001

目录的默认权限755,文件默认权限644(-R 表示递归执行到子目录授权 )

所以:chmod –R 777 test.txt                -- 二进制写法:授予user group other 对test文件的rwx权限

chmod –R u+rwx,g+rwx,o+rwx test.txt  -- 第二种写法:+、-、=代表加入、删除、等于对应权限

chmod –R u=rx,g=rx,o=rx test.txt          -- 授予用户、组、其他人对test文件只有 rx 权限

chmod –R u-w test.txt           --撤销用户对test.txt拥有 w 权限 (chmod –R 555 test.txt 二进制表示)

某个linux命令没有权限执行:chmod +x aaa (aaa指要执行的linux命令)

shell编程

1、shell环境:shell编程跟JavaScript、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以

2、linux常见shell种类: C Shell (/usr/bin/csh)、 K Shell (/usr/bin/ksh)、 Shell for Root (/sbin/sh)、 Bourne Shell (/usr/bin/sh或/bin/sh)、 Bourne Again Shell (/bin/bash)

主要使用的一种,即Bash(易用和免费,大多数Linux系统默认的Shell) 一般情况并不区分Bourne Shell 和 Bourne Again Shell,所以脚本中 #!/bin/sh 可改为 #!/bin/bash

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行

3、shell脚本编写:新建test.sh,扩展名sh代表shell,扩展名不影响脚本执行,见名知意就好,如果用php写shell脚本,扩展名可用php

#!/bin/bash echo "Hello World !"

4、运行shell脚本两种方式

1)作为可执行程序: chmod +x ./test.sh -- 让脚本有执行权限

./test.sh -- 执行脚本,会开启新的终端执行脚本

加 ./ 解析:运行二进制程序,直接写test.sh,linux系统会去PATH寻找test.sh,而只有 /bin, /sbin, /usr/bin,/usr/sbin等在PATH中, 你的当前目录通常不在PATH里,所以用 ./test.sh 告诉系统就在当前目录找

2)作为解释器参数:直接运行解释器,参数就是shell脚本文件名 (这种方式不需要在第一行指定解释器信息,写了也没用)

示例: /bin/bash test.sh  -- 执行脚本,会开启新的终端执行脚本

/bin/sh test.sh    、 /bin/php test.php

5、执行脚本文件的其他命令

1) source test.sh (从 C Shell 而来,是bash shell的内置命令,test.sh可以无"执行权限",且该命令通常用命令“.”来替代)  =》. test.sh
6、shell变量:定义变量不加美元符号($,PHP语言中变量需要),使用变量加美元符号

#!/bin/sh 
name="yxw" 
echo $name

谷歌云服务器操作实例

再试用一年:https://www.jianshu.com/p/8b5c268abc1a

(不让删除管理员账号,添加另一个账户小号然后就可以删了)

搭建实例:https://www.cnblogs.com/xapple/p/10337841.html

ssh连接谷歌云:https://blog.csdn.net/datadev_sh/article/details/79593360

1、jdk安装后配置:【删除自带的OpenJDK:rpm -qa|grep jdk  、yum remove *openjdk* 】

1)vim /etc/profile(添加如下内容)

export JAVA_HOME=/websoft/jdk1.8.0_172/     --注意点:路径最后一定要加上这个/ 
export PATH=$JAVA_HOME/bin:$PATH       
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

2)source /etc/profile :使生效

3)java –version :查看版本

yum安装jdk无需配置: yum install -y java-1.8.0-openjdk
find / -name 'java' --通过搜索java文件,查找jdk默认安装目录
which java --查看jdk在哪

4)导入证书(默认密码:changeit)

keytool -import -alias idmcrt -keystore /u01/jdk1.8.0_172/jre/lib/security/cacerts -file /u01/certificate/tomcat.crt -trustcacerts

2、ps -ef |grep tomcat   -- 查看tomcat进程 (e表示process ,f表示full)

3、ssh安装mysql:Google云服务器搭建MySQL数据库并且远程连接 - 云+社区 - 腾讯云

4、前台运行jar(进行相关的操作就会终止,后台则不会)

java -jar xiaoshuospring-0.0.1-SNAPSHOT.jar **--server.port=8080(可以再次制定新的端口号)后台运行jar: nohup java -jar xiaoshuospring-0.0.1-SNAPSHOT.jar >startlog.txt &

5、搭建wordpress网站:云服务器使用WordPress搭建个人博客并绑定域名全记录 | 派大星星星星

3、定时执行命令

1、创建sh脚本

#! /bin/bash
echo $(date +%s) >> /home/out.txt
 

2、添加定时任务

crontab -l  查看已添加的定时计划   

crontab -e 添加定时计划(每分钟执行一次cron.sh)

service crond restart 重启cron服务

service crond status  查看cron服务状态

cat /etc/crontab  全局配置文件

参考:https://www.jb51.net/article/197825.htm

redis

Mac 安装redis

方法一: 官网 https://redis.io/download 下载redis stable版压缩包,放到 /usr/local 目录下

方法二: brew install redis (会下载到 /usr/local/Cellar目录下) --数据库安装在 /usr/local的原因:make test 和make install命令环境就是在usr/local下编译安装

redis启动: 1)软件启动:redis-server.exe 或 redis-server(Mac)

2) 命令开启:D:\Program Files\Redis>redis-server.exe redis.windows.conf & (带配置文件、后台启动) 、cd /usr/local/redis-6.0.6  ->  ./src/redis-server redis.conf & (Mac、linux)

redis关闭: ./src/redis-cli shutdown

 redis交互:redis-cli (在该文件的路径下执行) 【 redis-cli --raw 加上--raw可以在终端上强制原始输出,而不是一串utf-8编码字符串,使中文正常显示】 交互后可执行redis命令(127.0.0.1:6379>): ping   -- 检测 redis 服务是否启动 (pong代表启动)

redis-cli -v  -- 查看redis版本 、config get *   -- 获取可以配置的信息

redis-cli -h 127.0.0.1 -p 6379 -a "mypass"  -- 连接到主机为 127.0.0.1,端口为 6379 ,密码为 mypass 的 redis 服务上

redis设置密码

1)临时密码(redis重启之后密码就会消失):config set requirepass 123456 (配置文件配置:spring.redis.password=123456)

2) 永久方式:修改redis.conf  -》requirepass 123456(指定密码123456)

                      -》保存后重启redis -》auth 123456(登录认证)

键值对相关命令:Key值类型有string、link、set、order set、hash--基本上就是string

                            value值类型有string、list、set、zset、hash

string底层是char数组,java String底层是byte数组;list底层双端链表,链表最大长度为2^32-1

 redis 大key问题 

redis ke和value类型,值限制为512MB,其他类型限制个数最多为2^32-1

大key情形:

String类型为5MB;List类型列表数量为20000个;
ZSet类型成员数量为10000个;
Hash类型成员数量虽然只有1000个但这些成员的value总大小为100MB;

解决无非就是:首先是监听防止对大Key进行拆分;清理(可用unlink命令

set 包含字符串的无序集合;hash 包含键值对的无序散列表;zset 有序集合,存储键值对的散列结构,底层是压缩表ziplist 或 跳表skiplist

当redis插入第一个元素 同时满足以下条件,就是创建ziplist压缩表
节点数量<128 (可通过server.zset_max_ziplist_entries设置)
节点的长度<64(可通过server.zset_max_ziplist_value设置)
当选择用ziplist实现zset后,以后插入节点若不满足以上任一条件,就会转为skiplist
跳表的本质是一个多层链表,它能快速地查询、插入、删除,时间复杂度均为logn

type key1  -- 返回key值类型、  keys *  -- 显示所有key (* ? [] 3个通配符,?号匹配一个,[abc]匹配其中任意一个)

set key1 value1  -- 添加 (key1,value1)键值对,如果key值存在,则更新该key值value

setex key1 120 value1 -- 添加键值的同时,设置生命周期 120 秒

get key1   -- 获取key对应的value

hset hx h1 x1 [h2 x2 ...]  -- 为哈希表中的字段赋值(在实际业务中,表数据添加到redis,用hset,那样根据id查询单条数据时,在redis中存储更好看)

hget hx h1   -- 获取哈希表数据 、 hdel hx h1  -- 直接del,删除整个哈希表 

hgetall hx  -- 获取所有键值、  hkeys hx -- 获取所有键、  hvals hx   -- 获取所有value

randomkey  -- 获取随机key 、exists key1  -- 判断key是否存在,存在返回1,不存在返回0

del key1 key2 // 删除key1 key2,返回删除的数量,key不存在返回0

rename key1 newkey  --  修改key1名字,如果newkey已存在,则value会被覆盖(相当于set一个已存在的key)

flushdb  -- 清空当前数据库所有key,总是返回ok

redis数据库:redis默认开启了16个数据库,由redis.conf中的:databases 16 配置,可修改

keys *  -- 默认用的是0号数据库

move key1 1  -- 将当前数据库的 key1 移到 1号数据库  、 select 1  -- 切换到1号数据库

key的生命周期:set方式创建的key生命周期永久

ttl key2  -- 查询key生命周期,返回值是 秒数,不过期的key-》-1,不存在、已过期的key-》-2

pttl key3  -- 以 毫秒 返回生命周期

expire key2  -- 设置key的生命周期,单位为秒 ,设置成功返回1

pexpire key3  -- 设置key的生命周期,单位为毫秒 

persist key2  -- 设置key2永久有效 (当先设置了key2为有限生命周期后)

openldap

systemctl enable slapd、 systemctl start slapd、systemctl status slapd 、

systemctl stop firewalld  -- 关防火墙

改密码:slappasswd 开启:slapd -d 1 (数字1)

配置:slapadd -v -l ./config.ldif (字母l)

查询:ldapsearch -x -b "dc=tch,dc=com" "(objectclass=*)" (在ClentTools路径下)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值