目录
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、详细命令
查找Linux下的大目录? du -h --max-depth=1
结果:
16K ./lost+found
37G ./oradata
Ctrl+a --回到行首 、Ctrl+e --回到行尾 、终止执行: Ctrl+c 或 q
参数前加单-表示后面参数为字符形式,如tar -zxvf
加-- 表示后面参数为单词,如rm - -help
加不加-执行命令结果相同,涉及Linux风格,加-属于BSD,不加-属于System V
man 查看程序或命令的帮助手册
uname -a 查看系统版本
free 查看内存相关(加 -m / -g 指定单位显示)
free -m | awk '{print $2" "$3}' | sed -n "2,2p" 将内存总大小和使用大小这两个数字打印出
ls -a .文件也显示、 ls -l 显示出文件详细信息
cd - --回到上次所在的目录
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区分大小写)
telnet 127.0.0.1 8084 windows下看服务器端口号是否开放
lsof -i:8848 linux下测试端口号是否开放
window下端口8081占用
netstat -ano |findstr "8081" 查看端口信息,找到 PID
tasklist |findstr "9088" 查看指定 PID 的进程
taskkill /T /F /PID 9088 强制-/F杀死 9088 的所有进程包括子进程-/T
kill解析:执行kill,系统发送一个SIGTERM信号给对应的程序,SIGTERM多半会被阻塞, 执行kill -9,系统给对应程序发送的信号是SIGKILL,即exit,exit不会被阻塞,所以kill -9能顺利杀掉进程
touch 11 --创建文件 、mkdir aa --创建文件夹 、mkdir -p bb/cc --创建嵌套文件夹
rm 11 --删除文件 、rmdir aa --删除文件夹 、rmdir -p bb/cc --删除嵌套文件夹
rm -rf * 删除目录所有,-r 向下递归,一并删除; -f 强行删除,不作任何提示
cp aa/22 bb/222 --复制22文件到bb文件夹,并改名为222
cp -r aa bb/aaa --复制aa文件夹到bb文件夹下,并改名为aaa
mv 33 aa/333 --剪切33文件到aa文件夹下,并改名为333
mv aa /bb/aaa --剪切文件夹,里面有文件也可以,并改名为aaa
cat 1.log | grep '\-10005' > /2019/$(hostname)-1.log --将1.log的内容筛选后写入fcpprdca01-1.log
cat --将文件内容输出
| grep '\-10005' --筛选, '\' 对 '-'转义
> 输出重定向:将原来输出到屏幕的内容输出到指定文件 (>>追加内容)
< 输入重定向:将原来需要由键盘输入的数据,改由文件内容来取代
echo $(hostname) --打印文本 ,此处打印 服务器主机名(fcpprdca01)grep root /etc/passwd 查找root
grep -v root /etc/passwd 打印没root的行
grep root /etc/passwd /etc/111 在多个文件中查找
wc -l 1.log --统计文本
-l 统计行数、 -w 统计单词数 、-c 统计字符数、 不写 三个都打印出来
内容查找
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)作用范围内每一行出现的不仅第一个目标,而是所有目标都会被替换
文件操作
dd (删除光标所在的这一行,命令模式下)
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 全局配置文件
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(登录认证)
systemctl start/stop/restart redis
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路径下)