@shell点滴
1、
linux操作系统加固后root用户无法登陆解决方案如下
cd /etc/ssh
vi sshd_config
修改Permitrootlogin=yes;
/etc/init.d/sshd restart
2、
远程复制文件:
@1、scp root@11.12.13.136:/home/file /home/software [复制file到本地/home/software目录下]
加参数-r 可以复制整个目录以及目录下的所有文件
scp -r root@11.12.13.136:/home/* /home/software
@2、也可以反过来讲本地的文件复制到远程机器上
scp -r /home/* root@IP:/data/
3、
验证定时任务的方法:
@1、先进入crontab -e查看定时任务
@2、修改执行定时任务的时间跟当前服务器的时间接近
@3、然后查看定时脚本执行的结果
举例:
30 1 * * *(30表示分钟,1表示小时,* * * 从左到右依次表示日、月、周)
即从右往左依次是:周、月、日、时、分;*代表每周、每月、每日、每时、每分;*/2代表每2分钟,每2周,每2月,每2小时等
4、
当原压缩包被压缩成了2个压缩包,需要重新解压成一个压缩包,可直接全选中两个压缩包右键选择解压到目录
5、
设置xshell保持长连接:
ssh保持长连接:
三种方法:
(1)、修改server端/etc/ssh/sshd_config {此方法适用linux发行版的Openssh}
ClienAliveInteval 60 {表示server每隔60秒发送一次请求给client,然后client响应从而保持长连接}
ClienAliveCountMax 3 {表示server发出请求后,客户端没有响应的次数达到3次,就自动断开连接,正常情况下client不会不响应}
systemctl reload sshd
(2)、修改client端/etc/ssh/sshd_config
ServerAliveInterval 60 {表示client每隔60秒发送一次请求给server,然后server响应,从而保持连接}
ServerAliveCountMax 3 {表示client发出请求后,服务器端没有响应的次数达到3次,就自动断开连接,正常情况下,server不会不响应}
(3)、在命令参数里加上ssh -o ServerAliveInterval 60 IP
这样子只会在需要的连接中保持长连接,并不是所有的连接都要保持长连接
重启ssh服务:/etc/init.d/ssh restart [centos的系统重启:service sshd restart]
6、
启动关闭linux的ping服务:
查看文件/proc/sys/net/ipv4/icmp_echo_ignore_all;值为0表示ping服务启动正常;值为1表示ping服务关闭
echo "0" >/proc/sys/net/ipv4/icmp_echo_ignore_all
echo "1" >/proc/sys/net/ipv4/icmp_echo_ignore_all
7、
touch * 可以更改目录下所有文件的系统时间为当前时间
8、
linux操作系统加固后管理版登录后台提示:Model is unknown
xshell登录后台,vi /etc/pam.d/login
session required /lib/security/pam_limit.so 修改为:session required pam_limit.so
9、
关闭启动网卡:
ifconfig eth1 down
ifconfig eth1 up
10、
释放内存:sync;sync;sync;echo 3 > /proc/sys/vm/drop_caches
查询用户UID:cat /etc/passwd | grep username
11、
shell脚本的调试:sh [参数] script.sh
参数:
-x 启用调试
-v 打印脚本的详细信息即把脚本里的内容也打印出来
-e 如果一个命令失败就立即退出
-n 读入命令但是不执行他们
-u 置换时把未设置的变量看作出错
12、
uniq命令
查询重复行或列
cat file|uniq -c 【统计重复的次数】
cat file|uniq -d 【显示重复的行】
cat file|uniq -u 【显示不重复的行】
13、
当在shell脚本里,shell命令提示找不到时,多半是因为命令不能定位到/bin/command目录下:
解决方法:
1、命令改写成/bin/cp 形式;
2、编辑.bash_profile文件,配置PATH环境变量增加:/bin,source .bash_profile生效
14、
模拟服务器的网络波动,可编写脚本执行重启网络服务的动作
注:不能手动自己执行,因为手动stop之后服务器就断网了xshell就无法再连接
对于centos:
#!/bin/bash
systemctl stop network
sleep 10
systemctl start network
15、
shell的前台和后台
jobs 查看后台的进程,
ctrl+z 将前段的程序调到后台,
fg %n 将后台的第n个进程调到控制台
16、
shell命令read
语法:read [-pt] var
-p 后面接提示语句
-t 后面接等待的秒数
read aset 由控制台输入内容,该内容保存至变量aset】
read -t 30 aset 在控制台提示使用者30秒内要输入内容】
17、
ethtool 【获取以太网的配置信息】
ethtool 网卡名 | grep Speed 【获取该网卡的网速】
18、
反向重定向,多用于while循环中
while read line
do
command
done < file
【读取file文件里的每一行写入line变量,然后循环变量file的每一行内容】
19、
自己用户下的环境变量配置;若要使用自己用户下的jdk环境变量,将java的家目录放在$PATH的前面:
JAVA_HOME=/usr/java/jdk1.8.0_15
PATH=$JAVA_HOME/bin:$PATH
export $PATH
20、
tee命令
date | tee file 【date的输出到控制台且覆盖方式记录到file文件】
date | tee -a file 【date的输出到控制台且追加方式记录到file文件】
21、
对输入的参数$1、$2...进行修饰变动
var=${1//,/ } 【对输入的第一个参数$1中的逗号替换为空格】
var=${2//,/#} 【对第二个参数的逗号替换为#号,第一个斜线代表第几个参数,后两个斜线代表替换的字符】
var=(${1//,/ }) 【当用()小括号括起来,var就变成一个数组list】
举例:
#!/bin/bash
var=${1//,/ }
var2=(${1//,/ })
echo $var
for i in ${var2[@]} 【遍历数组var2的参数】
do
echo $i
done
ehco ${#var2[@]} 【求数组var2的参数个数】
执行脚本:sh test.sh ab,cd
ab cd 【echo $var】
ab
cd 【echo $i】
2 【ehco ${#var2[@]} 】
22、ping命令
ping IP 【不加选项,控制台会一致返回ping的结果】
ping -c 3 IP 【-c 表示完成次数,ping 3次返回控制台结果】
参数:
-c 【完成次数】
-i 【间隔秒数】
-w 【等待每次回复的超时时间;ping -w 10 等待每次回复的超时时间为10秒】
23、source /home/shell.sh 【加载shell.sh脚本你,这样就可以本脚本中调用shell.sh中的函数和变量】
24、nohup命令
在unix/linux中,普通进程用&符号放到后台进行,如果启动该程序的控制台logout,则该进程随即终止,为守护进程可以使用
nohup命令
nohup <程序名> & 【使用nohup,原程序的标准输出被自动重定向到当前目录下的nohup.out文件】
举例:
nohup command|args | &
指定nohup输出到某文件:
nohup cmmand>file 2>&1 &
nohup cmmand 2>&1 | tee -a file & 【command内容输出到控制台器追加到file文件】
25、sysctl命令
sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。它包含一些TCP/ip堆栈和虚拟内
存系统的高级选项。
语法:
sysctl (选项) (参数)
选项:
-n: 打印值时不打印关键字;
-e: 忽略未知关键字错误;
-N: 仅打印名称;
-w: 当改变sysctl设置时使用此项;
-p: 从配置文件“/etc/sysctl.conf”加载内核参数设置;
-a: 打印当前所有可用的内核参数变量和值;
-A: 以表格方式打印当前所有可用的内核参数变量和值。
sysctl --system 【手动加载所有的配置文件】
sysctl -p filename.conf 【单独指定配置文件加载】
sysctl kernel.sysrq=1 【效果等同:# echo "1" > /proc/sys/kernel/sysrq ,直接通过sysctl工具配置值】
26、对于centOS7系统,/etc/hosts文件里IP domain domain2...
IP后面的称为域名,是用户自定义的,可以随意命名,且可以接多个;
命名后保存即生效,可用于ssh domain远程跳转
27、域名解析配置文件
/etc/resolv.conf
/etc/resolv.conf是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序:
其中参数代表的意思:
(1)、resolv.conf的关键字
nameserver 定义DNS服务器的IP地址
domain 定义本地域名
search 定义域名的搜索列表
sortlist 对返回的域名进行排序
(2)、一个/etc/resolv.conf的示例:
domain 51osos.com
search www.51osos.com 51osos.com
nameserver 202.102.192.68
nameserver 202.102.192.69
(3)、一般就配置nameserver关键字
nameserver 202.102.192.68
28、command是shell的内键,无视shell脚本中的"同名"函数,执行特定的命令
#!/bin/bash
echo 123
command "ls" 【直接执行ls的命令,且是当前脚本路径执行】
29、basename命令用法
为basename指定一个路径,basename命令会删掉所有的前缀包括最后一个slash(‘/’)字符,然后将字符串显示出来。
格式:
basename [pathname] [suffix]
basename [string] [suffix]
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
示例:
basename /usr/bin/sort 【输出 sort】
basename ./include/stdio.h .h 【输出 stdio,指定后缀为.h,删除第一个参数的文件名的后缀.h】
basename -s .h include/stdio.h 【输出 stdio,-s 指定后缀.h,从而删除后缀只显示文件名】
basename -a any/str1 any/str2
结果:
str1
str2
注意点:
1、如果传递参数给basename,参数为空,basename会将参数左移
2、basename最多接受两个参数,如果设置的参数多于两个,会提示错误。
举例:
basename ab b 【输出a 因为这里把b当做后缀,删除字符串ab中的后缀】
30、type命令
type命令 用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。
命令类型:
alias: 别名
keyword: 关键字,Shell保留字
function: 函数,Shell函数
builtin: 内建命令,Shell内建命令
file: 文件,磁盘文件,外部命令
unfound: 未找到
语法:
tpye [选项] [参数]
选项:
-t: 输出"file"、"alias"或者 "builtin",分别表示给定的指令为:"外部指令"、"命令别名" 或者 "内部指令";
-p: 如果给出的指令为外部指令,则显示其绝对路径;
-a: 在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。
参数:
指令:要显示类型的指令
举例:
[root@localhost ~]# type ls
ls is aliased to `ls --color=tty'
[root@localhost ~]# type cd
cd is a shell builtin
31、要对文本数据的每一行后面加上 ' , (单引号和逗号),可以使用UE工具:
ctrl+r ,复制每行的最后到下一行的开头,替换为 (单引号和逗号)
32、
wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络
的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地
方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。
wget(选项)(参数)
选项
-P 表示下载到哪个目录
-r 表示递归下载
-R 拒绝接受的文件类型{-R *.txt}
-np 不要追溯到父目录
-nd 递归下载时不创建一层一层的目录,把所有的文件下载到当前目录
-nH 不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目录下
-nc 不要覆盖存在的文件或使用.#前缀
-k 表示将下载的网页里的链接修改为本地链接.
-p 获得所有显示网页所需的元素
-c 断点续传
-o 将log日志指定保存到文件(新建一个文件)
-O test.zip 下载并以不同的文件名保存
-a –append-output=FILE 把记录追加到FILE文件中
-A zip 只下载指定文件类型(zip)
-N 不要重新下载文件除非比本地文件新
-m –mirror 等价于 -r -N -l inf -nr
--passive-ftp 使用被动模式PASV连接FTP服务器
--follow-ftp 从HTML文件中下载FTP连接文件
实例:
使用wget下载单个文件
wget http://www.linuxde.net/testfile.zip
33、free -g(查看linux系统内存使用情况);free -h(可显示单位查看具体内存值)
34、Centos7密码复杂度设置:
Linux对应的密码策略模块有:pam_passwdqc 和 pam_pwquality 。其中pam_passwdqc模块对应的是/etc/login.defs,pam_pwquality对应的是/etc/security/pwquality.conf
1)、/etc/security/pwquality.conf详解:
retry=N: 定义登录/修改密码失败时,可以重试的次数;
Difok=N: 定义新密码中必须有几个字符要与旧密码不同。但是如果新密码中有1/2以上的字符与旧密码不同时,该新密码将被接受;
minlen=N: 定义用户密码的最小长度;
dcredit=N: 定义用户密码中必须包含多少个数字;
ucredit=N: 定义用户密码中必须包含多少个大写字母;
lcredit=N: 定义用户密码中必须包含多少个小些字母;
ocredit=N: 定义用户密码中必须包含多少个特殊字符(除数字、字母之外);
【其中 =-1表示,至少有一个】
2)、/etc/login.defs详解:
PASS_MAX_DAYS 99999 密码的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0 是否可修改密码,0可修改,非0多少天后可修改
PASS_MIN_LEN 5 密码最小长度,使用pam_cracklib module,该参数不再有效
PASS_WARN_AGE 7 密码失效前多少天在用户登录时通知用户修改密码
3)、实际生产环境配置
vim /etc/security/pwquality.conf
minlen = 8
minclass = 1
maxrepeat = 0
maxclassrepeat = 4
lcredit = -1
ucredit = -1
dcredit = -1
ocredit = -1
difok=5
vim /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_LEN 12
PASS_MIN_DAYS 7
PASS_WARN_AGE 30
35、
删除大容量文件(直接用rm命令会卡死shell)
注:如下的命令都是清空文件的内容,并未删除文件,可以再清空之后再执行rm命令删除文件
1)、
> file.log
2)、
:> file.log
3)、
true> file.log
4)、
cat /dev/null > file.log
5)、
dd if=/dev/null of=file.log (if代表输入文件,of代表输出文件)
6)、
echo > file.log 或 echo "" > file.log
7)、
truncate -s 0 file.log (数字0)
36、
cd用于切换工作目录,但是如果你在两个目录之间需要频繁切换时,比如/etc/httpd/log/error和/home/testUser/Desktop/shell_test,那这样一直
cd会发疯的。所以pushd在此时是个好选择
(1)、dirs
1】功能
显示当前目录栈中的所有记录(不带参数的dirs命令显示当前目录栈中的记录)
2】语法
格式:dirs [-clpv] [+n] [-n]
选项:
-c 删除目录栈中的所有记录
-l 以完整格式显示
-p 一个目录一行的方式显示
-v 每行一个目录来显示目录栈的内容,每个目录前加上的编号
+N 显示从左到右的第n个目录,数字从0开始
-N 显示从右到左的第n个日录,数字从0开始
注意:dirs始终显示当前目录, 再是堆栈中的内容;即使目录堆栈为空, dirs命令仍然只显示当前目录
(2)、pushd
1】功能
pushd命令常用于将目录加入到栈中,加入记录到目录栈顶部,并切换到该目录;若pushd命令不加任何参数,则会将位于栈最上面的2个目录兑换位置
2】语法
格式: pushd [目录] [-N] [+N] [-n]
选项:
[目录] 将该目录加入到栈顶,并执行"cd 目录"
[+N] 将第N个目录移至栈顶,并切换至该目录(从左边数起,数字从0开始)
[-N] 将第N个目录移至栈顶,并切换到该目录(从右边数起,数字从0开始)
-n 将目录入栈时,不切换目录
(3)、popd
1】功能
popd用于删除目录栈中的记录;如果popd命令不加任何参数,则会先删除目录栈最上面的记录,然后切换到删除过后的目录栈中的最上面的目录
2】语法
格式:popd [-N | +N] [-n]
选项:
+N 将第N个目录删除(从左边数起,数字从0开始)
-N 将第N个目录删除(从右边数起,数字从0开始)
-n 将目录出栈时,不切换目录
举例:
[root@hdc_1 software]# pushd test
/home/software/test /home/software
[root@hdc_1 test]# {将/home/software/test目录压入栈顶,并cd到该目录}
[root@hdc_1 test]# dirs
/home/software/test /home/software {dirs命令显示当前目录栈中的所有记录}
[root@hdc_1 software]# pushd sbin/
/home/software/sbin /home/software /home/software/test
[root@hdc_1 sbin]# pushd
/home/software /home/software/sbin /home/software/test
[root@hdc_1 software]# {不加参数时,将目录栈中的前两个目录互换位置并cd到互换后的栈顶目录里}
/home/software /home/software/sbin /home/software/test
[root@hdc_1 software]# popd -0
/home/software /home/software/sbin
[root@hdc_1 software]# {将目录栈中右边第一个目录/home/software/test删除栈}
37、
visudo命令
即编辑/etc/sudoers配置文件
root ALL=(ALL) ALL 【在该行下面增加如下】
test ALL=(root) /usr/sbin/useradd 【新增加用户行】
……后面省略
说明:test ALL=(root) /usr/sbin/useradd
第一个字段:test为能使用sudo命令的用户;
第二个字段:第一个ALL为允许使用sudo的主机,第二个括号里的root为使用sudo后以什么身份(目的用户身份)来执行命令;
第三个字:/usr/sbin/useradd为以sudo命令允许执行的命令;
故解释为:表示允许test用户从任何主机登录,以root的身份执行/usr/sbin/useradd命令。
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎