在编辑linux脚本中不断的会用到复杂的脚本编辑,写文章记录。

Linux命令大全(手册) – 真正好用的Linux命令在线查询网站

目录

推荐书籍:

Linux常用命令

Linux 常用命令

在linux shell脚本中root切换到普通用户执行脚本

Linux—shell中$(( ))、$( )、``与${ }的区别

linux建立和彻底删除用户

linux脚本判断用户是否存在

linux shell中"2>&1"含义

linux shell中交互命令提示确认(Y / N,YES / NO)

linux通过scale 和bc命令设置结果的位数

Linux防火墙对所有IP地址开放8080端口

linux查看硬盘挂载

linux的硬链接和软连接

Shell中常用的date时间命令

Linux定时任务Crontab命令详解

Linux中max_user_processes和open_file的修改

Linux 设置开机自启动脚本命令

设置Linux自动发送邮件

linux脚本监控系统性能CPU、内存和java进程情况

linux下批量kill多个进程


推荐书籍:

《Linux就该这么学》,电子版下载地址:

《Linux就该这么学》 - 必读的Linux系统与红帽RHCE认证免费自学书籍

Linux常用命令

Linux 常用命令

在linux shell脚本中root切换到普通用户执行脚本

有时候脚本中遇到root用户执行sh文件,但是需要其他用户的权限,可以用以下命令


  1. #!/bin/bash
  2. su - pentaho <<EOF
  3. USER=`whoami`
  4. echo $USER
  5. pwd
  6. 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脚本判断用户是否存在


  1. #create user postgres
  2. #read -p "please input a username:" username
  3. username=postgres
  4. if id -u $username >/dev/null 2>&1; then
  5. echo "user $username exists"
  6. else echo "user does not exist"
  7. useradd $username
  8. 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,则退出安装脚本


  1. #/bin/bash
  2. while true
  3. do
  4. read -p "Please input Pentaho server installation path:" PENTAHO_PATH
  5. read -r -p "Are You Sure the Path? [Y/n]" YESNO
  6. case $YESNO in
  7. [yY][eE][sS]|[yY])
  8. echo "the Pentaho server install path is:" $PENTAHO_PATH
  9. break
  10. ;;
  11. [nN][oO]|[nN])
  12. echo "Please input again!"
  13. ;;
  14. [eE][xX][iI][tT])
  15. echo "exit!"
  16. exit 1
  17. ;;
  18. *)
  19. echo "Invalid input ..."
  20. ;;
  21. esac
  22. done

linux通过scale 和bc命令设置结果的位数

例如:


  1. echo "scale=4; 1.2323293128 / 1.1" | bc -l
  2. 1.1202

注意事项:

scale只对除法、取余、乘幂有效,比如乘法就无效,保留的小数也不是四舍五入


  1. echo "scale=4; 1.2323293128 * 1.1" | bc -l
  2. 1.3555622440

可以变通的是,乘法的时候除以1:


  1. echo "scale=4; (1.2323293128 * 1.1) / 1" | bc -l
  2. 1.3555

Linux防火墙对所有IP地址开放8080端口

查看、打开、关闭防火墙命令:


  1. systemctl status firewalld
  2. systemctl stop firewalld
  3. 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查看硬盘挂载

linux的硬链接和软连接

查看过去的文章:

linux的硬链接和软连接

Shell中常用的date时间命令

查看过去的文章:

Shell中常用的date时间命令

Linux定时任务Crontab命令详解

查看过去的文章:

Linux定时任务Crontab命令详解

Linux中max_user_processes和open_file的修改

查看过去的文章:

Linux中max_user_processes和open_file的修改

Linux 设置开机自启动脚本命令

查看过去的文章:

Linux 设置开机自启动脚本命令

设置Linux自动发送邮件

文章:

设置Linux自动发送邮件

linux脚本监控系统性能CPU、内存和java进程情况

文章:

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空间的设置

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的截取字符串方法结果:


  1. #!/bin/sh
  2. ORACLE_SID=IOM
  3. code=`
  4. sqlplus / as sysdba@IOM <<EOF
  5. @/home/oracle/test.sql
  6. EOF
  7. `
  8. echo >> /home/oracle/code.txt
  9. echo `date +%F_%T` >> /home/oracle/code.txt
  10. echo $code >> /home/oracle/code.txt
  11. l_code=${code#*SQL>}
  12. echo ${l_code%SQL>*}

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux进阶新增用户29259 人正在系统学习中

[转帖]Linux中最全shell命令&常用注意事项的更多相关文章

  1. [转帖]linux中systemctl详细理解及常用命令

    linux中systemctl详细理解及常用命令 2019年06月28日 16:16:52 思维的深度 阅读数 30 https://blog.csdn.net/skh2015java/article ...

  2. [转]linux中强大的screen命令

    [转]linux中强大的screen命令 http://pythonorg.diandian.com/post/2012-01-05/40027464147 今天用SCREEN用点生了,有几个功能不知 ...

  3. 利用ganymed-ssh2远程执行其它Linux机器上的shell命令

    实际应用中,有时候需要从web管理界面上,远程去启动其它linux主机上的程序,利用ssh协议可以方便的满足这一需求.事实上hadoop架构中,从nn上启动dn时,就是利用了免密码ssh登录.gany ...

  4. Linux中find、grep命令详细用法

    在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 find命令的一般形式 ...

  5. Linux中W与Who命令的使用

    踢掉一个从某个终端连上的用户pkill -kill  -t pts/0 ---------------------------------------------------------------- ...

  6. linux中systemctl详细理解及常用命令

    linux中systemctl详细理解及常用命令 https://blog.csdn.net/skh2015java/article/details/94012643 一.systemctl理解 Li ...

  7. Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块

    Linux中mod相关的命令 内核模块化   mod相关命令都是用来动态加载内核模块/驱动程序模块 http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjz ...

  8. Linux中rz和sz命令用法详解

    http://www.111cn.net/sys/linux/67810.htm 在linux中rz 和 sz 命令允许开发板与主机通过串口进行传递文件了,下面我们就来简单的介绍一下rz 和 sz 命 ...

  9. linux中wget未找到命令

    (转)linux中wget未找到命令   转:https://blog.csdn.net/djj_alice/article/details/80407769 在装数据库的时候发现无法使用wget命令 ...

  10. linux环境 c 中如何执行shell命令

    1 system 相当简单: int system(const char *command); system("ps -aux"); 2 popen popen有两个参数,第一个是 ...

随机推荐

  1. 华为云GaussDB助力工商银行、华夏银行斩获“十佳卓越实践奖”

    近日,2023金融街论坛年会在北京成功举办.活动期间,由北京金融科技产业联盟举办的全球金融科技大会系列活动--分布式数据库金融应用研究与实践大赛获奖结果正式公布.其中,由华为云GaussDB参与支持的 ...

  2. 物联网SIM卡和SIM卡真的不是一回事

    办卡吗,兄弟? 物联网卡?相信大家第一反应都是一愣.大家听过银行卡.电话SIM卡.会员卡-等等,很多人可能都是第一次听说物联网卡.那它到底是个什么东东?它能干什么呢?今天就带大家一探究竟. 那在物联网 ...

  3. JavaScript回调函数的高手指南

    摘要:本文将会解释回调函数的概念,同时帮你区分两种回调:同步和异步. 回调函数是每个前端程序员都应该知道的概念之一.回调可用于数组.计时器函数.promise.事件处理中. 本文将会解释回调函数的概念 ...

  4. 【云享·人物】华为云AI高级专家白小龙:AI如何释放应用生产力,向AI工程化前行?

    摘要:AI技术发展,正由应用落地阶段向效率化生产阶段演进,AI工程化能力将会不断深入业务,释放企业生产力. 本文分享自华为云社区<[云享·人物]华为云AI高级专家白小龙:AI如何释放应用生产力, ...

  5. 学习 Java 还是 Solon 简单,v1.9.0 发布

    入手很简单哦: pom.xml 添加依赖 <dependency> <groupId>org.noear</groupId> <artifactId>s ...

  6. hyper-v虚拟机中ubuntu连不上网络的解决办法

    首先重启下hyper-v的服务,看下情况: 1.检查hyper-v相关的服务有没有开启 2.如果开启了服务,unbuntu仍然不能连网,则在ubtuntu中进行接下来的步骤: 2.1 设置网络连接为N ...

  7. MB51选择屏幕与报表增强

    1.文档说明 如之前文档<MIGO新增页签增强>,在MIGO中增强自定义字段,那么在查询MB51时,想通过自定义字段进行筛选,并将数据展示到报表中,就需要对MB51进行增强. 此处需要说明 ...

  8. SpringBoot 学习笔记:运维篇

    SpringBoot程序的打包和运行 开发部门使用Git.SVN等版本控制工具上传工程到版本服务器 服务器使用版本控制工具下载工程 服务器上使用Maven工具在当前真机环境下重新构建项目 启动服务 程 ...

  9. Codeforces Round #666 (Div. 2) 题解报告

    https://codeforces.com/contest/1397/problem/A 题意: 给定n个字符串,问重新组合以后是否能构成相同的n个字符串 思路: 直接判断所给的字符串的每种字母是否 ...

  10. 前端科普系列(5):ESLint - 守住优雅的护城河

    作者:Morrain [前端科普系列]帮助阅读者了解web前端,主要覆盖web前端的基础知识,但不深入讲解,定位为大而全并非细而精,适合非前端开发的同学对前端有一个系统的认识,能更好的与前端开发协作. ...