[转帖]Linux中最全shell命令&常用注意事项
在编辑linux脚本中不断的会用到复杂的脚本编辑,写文章记录。
Linux命令大全(手册) – 真正好用的Linux命令在线查询网站
目录
在linux shell脚本中root切换到普通用户执行脚本
Linux—shell中$(( ))、$( )、``与${ }的区别
linux shell中交互命令提示确认(Y / N,YES / NO)
Linux中max_user_processes和open_file的修改
推荐书籍:
《Linux就该这么学》,电子版下载地址:
《Linux就该这么学》 - 必读的Linux系统与红帽RHCE认证免费自学书籍
Linux常用命令
Linux 常用命令
在linux shell脚本中root切换到普通用户执行脚本
有时候脚本中遇到root用户执行sh文件,但是需要其他用户的权限,可以用以下命令
-
#!/bin/bash
-
su - pentaho <<EOF
-
USER=`whoami`
-
echo $USER
-
pwd
-
EOF
root用户执行脚本,可以看到还是在root用户的环境变量下,但是执行目录是切换的普通用户

其中需要注意的是
1. 只要你的<<之后的字符和结束的对应上就可以啦,可以都是EOF,也可以都是!

2. 第二个标志符EOF需要顶格写,不然会报错
Linux—shell中$(( ))、$( )、``与${ }的区别
参考文章:Linux—shell中$(( ))、$( )、``与${ }的区别 - chengd - 博客园
在shell命令中$( )与` `(反引号)都是用来作命令替换的,所以新手记得区分“”引号和反引号是不同的,例如:

linux建立和彻底删除用户
新建用户:useradd user1
删除用户的命令是:userdel user1
但是userdel user1只是删除这个用户,用户的主目录还是保留的,想要删除用户主目录可以手动删除:rm -rf /home/user1
也可以执行命令:
userdel -r user1
linux脚本判断用户是否存在
-
#create user postgres
-
#read -p "please input a username:" username
-
username=postgres
-
if id -u $username >/dev/null 2>&1; then
-
echo "user $username exists"
-
else echo "user does not exist"
-
useradd $username
-
fi
linux shell中"2>&1"含义
为何2>&1要写在后面?
参考文章:Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别 - EasonJim - 博客园
useradd user1 >/dev/null 2>&1
我们可以理解为,左边是标准输出,现在标准输出直接输入到 /dev/null 中,而2>&1是将标准错误重定向到标准输出,所以当程序产生错误的时候,相当于错误流向左边,而左边依旧是输入到/dev/null中。
linux shell中交互命令提示确认(Y / N,YES / NO)
在linux脚本中,编写一键安装pentaho、postgresql数据库的脚本,在交互命令输入路径的时候,需要提示用户路径是否正确,
输入yes则继续下一步
输入no,则重新输入
输入其他字符,则提示输入无效,并重新输入
输入exit,则退出安装脚本
-
#/bin/bash
-
while true
-
do
-
read -p "Please input Pentaho server installation path:" PENTAHO_PATH
-
-
read -r -p "Are You Sure the Path? [Y/n]" YESNO
-
-
case $YESNO in
-
[yY][eE][sS]|[yY])
-
echo "the Pentaho server install path is:" $PENTAHO_PATH
-
break
-
;;
-
[nN][oO]|[nN])
-
echo "Please input again!"
-
;;
-
[eE][xX][iI][tT])
-
echo "exit!"
-
exit 1
-
;;
-
*)
-
echo "Invalid input ..."
-
;;
-
esac
-
done
linux通过scale 和bc命令设置结果的位数
例如:
-
echo "scale=4; 1.2323293128 / 1.1" | bc -l
-
1.1202
注意事项:
scale只对除法、取余、乘幂有效,比如乘法就无效,保留的小数也不是四舍五入
-
echo "scale=4; 1.2323293128 * 1.1" | bc -l
-
1.3555622440
可以变通的是,乘法的时候除以1:
-
echo "scale=4; (1.2323293128 * 1.1) / 1" | bc -l
-
1.3555
Linux防火墙对所有IP地址开放8080端口
查看、打开、关闭防火墙命令:
-
systemctl status firewalld
-
systemctl stop firewalld
-
systemctl start firewalld
开启8080端口访问:
firewall-cmd --zone=public --add-port=8080/tcp --permanent;
- zone=public:表示作用域为公共的;
- add-port=8080/tcp:添加tcp协议的端口8080;
- permanent:永久生效,如果没有此参数,则只能维持当前服务生命周期内,重新启动后失效;
开启8080端口后需要重启:
systemctl restart firewalld
输入命令重新载入配置
firewall-cmd --reload
linux查看硬盘挂载
查看过去的文章:
linux的硬链接和软连接
查看过去的文章:
Shell中常用的date时间命令
查看过去的文章:
Linux定时任务Crontab命令详解
查看过去的文章:
Linux中max_user_processes和open_file的修改
查看过去的文章:
Linux中max_user_processes和open_file的修改
Linux 设置开机自启动脚本命令
查看过去的文章:
设置Linux自动发送邮件
文章:
linux脚本监控系统性能CPU、内存和java进程情况
文章:
linux下批量kill多个进程
ps -ef|grep nginx|grep -v grep|cut -c 9-15|xargs kill -9
或者ps -ef | grep pentaho-server| grep -v grep| awk '{print $2}'|xargs kill -9
管道符"|"用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的几个命令:
"ps - ef"是linux 里查看所有进程的命令。这时检索出的进程将作为下一条命令"grep mcfcm_st"的输入。
"grep nginx"的输出结果是,所有含有关键字"nginx"的进程
"grep -v grep"是在列出的进程中去除含有关键字"grep"的进程。
"cut -c 9-15"是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。
awk '{print $2}'效果和"cut -c 9-15"是一样的,都是返回查询出来的进程号
"xargs kill -9"中的xargs命令是用来把前面命令的输出结果(PID)作为"kill -9"命令的参数,并执行该令。
"kill -9"会强行杀掉指定进程,这样就成功清除了oracle的所有远程连接进程。其它类似的任务,只需要修改"grep nginx"中的关键字部分就可以了。
echo中是否加引号
约定俗成的是,echo hello my name is wang,这句话中有空格的就会加双引号。
""双引号:有空白的字符、变量就会使用双引号
反斜杠(\):使反斜杠后面的一个变量变为单纯的字符。
单引号(' '):转义其中所有的变量为单纯的字符串。
双引号(" "):保留其中的变量属性,不进行转义处理。
反引号(` `):把其中的命令执行后返回结果。
目录和文件权限的备份
例在备份/home目录上的ACL权限时,可使用-R递归参数,这样不仅能够把目录本身的权限进行备份,还能将里面的文件权限也自动备份。
需要注意,getfacl在备份目录权限时不能使用绝对路径的形式,因此我们需要先切换到最上层根目录,然后再进行操作。
getfacl -R home > backup.acl ACL权限的恢复也很简单,使用的是--restore参数。由于在备份时已经指定是对/home目录进行操作,所以不需要写对应的目录名称,它能够自动找到要恢复的对象:
setfacl --restore backup.acl
这里恢复的是备份的目录和文件权限,对于备份之后产生的新文件是权限是不会改变的。
linux用户权限
一共分为普通权限、特殊权限(suid/sgid/sbit)和隐藏权限(chattr/lsattr)以及文件访问控制列表(getfacl/setfacl)
Linux增加swap空间的设置
如何过滤掉find显示的大量Permission denied
结论:find / -name xxx 2>/dev/null
这个操作最方便,直接把错误输出丢弃
之前尝试直接用find / -name xxx | grep -v的功能,但是这个对标准输出有效,对错误输出无效。要用grep的话可以这样写:
find / -name xxx 2>&1 | grep -v “denied”
shell执行oracle脚本
sqlplus命令行的执行结果

通过shell的截取字符串方法结果:
-
#!/bin/sh
-
ORACLE_SID=IOM
-
code=`
-
sqlplus / as sysdba@IOM <<EOF
-
@/home/oracle/test.sql
-
EOF
-
`
-
echo >> /home/oracle/code.txt
-
echo `date +%F_%T` >> /home/oracle/code.txt
-
echo $code >> /home/oracle/code.txt
-
-
l_code=${code#*SQL>}
-
echo ${l_code%SQL>*}

[转帖]Linux中最全shell命令&常用注意事项的更多相关文章
- [转帖]linux中systemctl详细理解及常用命令
linux中systemctl详细理解及常用命令 2019年06月28日 16:16:52 思维的深度 阅读数 30 https://blog.csdn.net/skh2015java/article ...
- [转]linux中强大的screen命令
[转]linux中强大的screen命令 http://pythonorg.diandian.com/post/2012-01-05/40027464147 今天用SCREEN用点生了,有几个功能不知 ...
- 利用ganymed-ssh2远程执行其它Linux机器上的shell命令
实际应用中,有时候需要从web管理界面上,远程去启动其它linux主机上的程序,利用ssh协议可以方便的满足这一需求.事实上hadoop架构中,从nn上启动dn时,就是利用了免密码ssh登录.gany ...
- Linux中find、grep命令详细用法
在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 find命令的一般形式 ...
- Linux中W与Who命令的使用
踢掉一个从某个终端连上的用户pkill -kill -t pts/0 ---------------------------------------------------------------- ...
- linux中systemctl详细理解及常用命令
linux中systemctl详细理解及常用命令 https://blog.csdn.net/skh2015java/article/details/94012643 一.systemctl理解 Li ...
- Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块
Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块 http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjz ...
- Linux中rz和sz命令用法详解
http://www.111cn.net/sys/linux/67810.htm 在linux中rz 和 sz 命令允许开发板与主机通过串口进行传递文件了,下面我们就来简单的介绍一下rz 和 sz 命 ...
- linux中wget未找到命令
(转)linux中wget未找到命令 转:https://blog.csdn.net/djj_alice/article/details/80407769 在装数据库的时候发现无法使用wget命令 ...
- linux环境 c 中如何执行shell命令
1 system 相当简单: int system(const char *command); system("ps -aux"); 2 popen popen有两个参数,第一个是 ...
随机推荐
- 云图说|AppCube零代码,开启无码新生活
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 应用魔方 App ...
- 云图说丨初识数据工坊DWR
摘要:数据工坊DWR是一款近数据处理服务,通过易用的工作流编排和开放生态的数据处理算子,能够在云上实现图像.视频.文档.图片等数据处理业务. 本文分享自华为云社区<[云图说]第236期 初识数据 ...
- 开心档之CSS 测验
目录 CSS 测验 编辑 CSS 测验 CSS测验是一种衡量前端开发人员对CSS的熟练程度的测试.通过CSS测验,可以评估一个人对CSS语言的掌握程度和应用能力,帮助公司或招聘方挑选合适的人才. ...
- gunicorn 高性能wsgi服务器
参考: https://zhuanlan.zhihu.com/p/102716258 Gunicorn是什么 Gunicorn Green Unicorn 是一个 UNIX 下的 WSGI HTTP ...
- 玩转Python:在Python中处理表格数据,几个非常流行且功能强大的库
在Python中处理表格数据,有几个非常流行且功能强大的库.以下是一些最常用的库及其示例代码: 1. Pandas Pandas是一个开放源代码的.BSD许可的库,为Python编程语言提供高性能.易 ...
- 关于 Jupyter 导出 PDF/Latex 格式报错的简单解决方法
利用 Jupyter 提供的 Print Preview 功能,然后鼠标右键点击打印,就能导出PDF了,而且不会出问题,中文,图片都可以
- L1-018 大笨钟 (10分)
开始天梯赛专项训练 微博上有个自称"大笨钟V"的家伙,每天敲钟催促码农们爱惜身体早点睡觉.不过由于笨钟自己作息也不是很规律,所以敲钟并不定时.一般敲钟的点数是根据敲钟时间而定的,如 ...
- 阿里云 Serverless 应用引擎(SAE)2
8月7日,阿里云 Serverless 应用引擎(SAE)2.0正式公测上线!全面升级后的SAE 2.0具备极简体验.标准开放.极致弹性三大优势,应用冷启动全面提效,秒级完成创建发布应用,应用成本下降 ...
- C语言常用字符串操作函数整理(详细全面)
目录 字符串相关 1.char *gets(char *s); #include<stdio.h> 2.char *fgets(char *s, intsize, FILE *stream ...
- Mycat 实现分库分表及读写分离
本文为博主原创,未经允许不得转载: Mycat 官网: http://mycat.org.cn/ MyCat 权威指南 文档:http://www.mycat.org.cn/document/myca ...