好记性不如烂笔头,记录几个常用的Linux操作

作者:老王

Shell公共函数库

Linux系统里有一些公共的Shell函数库可供使用,最重要的是/etc/rc.d/init.d/functions,在/etc/init.d目录下有很多脚本都用到了这个函数库,里面提供了很多有用的方法,比如:killproc()等等。所以编写自己的Shell脚本时可以套用这个函数库:

if [ -f /etc/init.d/functions ]; then
    . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
    . /etc/rc.d/init.d/functions
else
    exit 0
fi


Shell里循环的几种方式

for i in `seq 1 10`; do echo $i; done
for ((i=1; i<=10; i++)); do echo $i; done

设置linux系统里打开文件描述符的最大值

通过ulimit -n命令可以查看linux系统里打开文件描述符的最大值,一般缺省值是1024,对一台繁忙的服务器来说,这个值偏小,所以有必要重新设置linux系统里打开文件描述符的最大值。那么应该在哪里设置呢?

比如说想把linux系统里打开文件描述符的最大值设置为65535, 命令是ulimit -n 65535。需要说明的是这是一个和会话相关的命令,比如说你打开两个命令行终端,分别设置一个不同的值,再查询,会发现彼此不受影响。那么到底应该在哪里设置linux系统里打开文件描述符的最大值呢?一个最常见的错误就是在/etc/rc.local里设置,因为rc.local是在最后才被加载的,所以前面加载的程序,如/etc/init.d里的程序都没有机会使用到这个设置值,只有rc.local文件里ulimit -n 65535声明后面的命令才能使用到这个设置值,因为它们在同一个会话里。

最正确的做法是在/etc/security/limits.conf里设置:

* hard nofile 65535
* soft nofile 65535


这样设置后所有的程序,所有的会话就都能使用到这个设置值了。

找出大文件

磁盘空间被耗尽的时候,免不了要清理一下,比如说/home目录太大,就可以使用下面命令看看到底是谁:

du -s /home/* | sort -nr

根据负载自动重启Apache


#!/bin/sh

APACHE=/usr/local/bin/apachectl
LOG=/var/log/apache.log

if [ `awk -F. '{print $1}' /proc/loadavg` -gt 100 ]; then
    echo "Stop Apache at `date`" >> $LOG

    $APACHE stop

    while [ `ps -ef | grep httpd | grep start | wc -l` -gt 0 ]; do
        killall httpd
        sleep 1
    done

    echo "Start Apache at `date`" >> $LOG

    $APACHE start
fi


查看服务器型号

dmidecode -s system-product-name

我在Dell的PowerEdge 1950服务器上使用上述命令能看到结果,但是在HP的ProLiant DL380 G5服务器上使用system-product-name却无效,什么也找不到,此时只能用dmidecode | more自己慢慢查了。

限制可以使用su命令的用户

vi /etc/pam.d/su

# Uncomment the following line to require a user to be in the "wheel" group.
# auth required pam_wheel.so use_uid


取消相应的注释仅让wheel组用户能使用su命令

/usr/sbin/visudo(vi /etc/sudoers)

# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL

# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL


一个是输入密码的,一个是不用输入密码的,选一个取消注释。

剩下的就是把用户加到wheel组,可以先在/etc/group文件里查询wheel的GID,然后修改密码文件:

/usr/sbin/vipw(vi /etc/passwd)

或者直接使用命令:

/usr/sbin/vigr(vi /etc/group)

把用户名加到wheel行的末尾,如果是多个用户名的话用逗号分隔,group文件的详细介绍看man group

但更好的方法是使用gpasswd命令:

gpasswd -a 用户名 wheel

设置好之后可以用groups命令查看一下:

groups 用户名

Debian下自动生成最快的sources.list

老版Debian可以使用base-config来设置sources.list,但是在新版中这个软件包已经被取消了,取而代之的是netselect-apt,先安装这个软件包:

aptitude install netselect-apt
cd /etc/apt
netselect-apt stable


这样就能自动生成最快的sources.list文件了。

题外话,aptitude install build-essential,装完系统顺手就装上这个,免得以后麻烦。

CentOS下有一个功能差不多的软件包,可以这样安装:yum install yum-fastestmirror( 参考链接)

万能的“-”参数

横线“-”参数在Linux里有很多奇妙的应用。

RewriteRule . - [F]

在rewrite里,横线"-"表示什么也不做,整句的含义直接按标志位[F]的意思来,也就是禁止。

cd -命令:An argument of - is equivalent to $OLDPWD(man cd)
su -命令:Make the shell a login shell(man su)

在tar命令里,横线“-”还代表着输入,输出:

tar zcvf - /path/to/foo | (cd /path/to/bar; tar zxvf -)
tar zcvf - /path/to/foo | ssh ip "cd /path/to/bar; cat > filename.tgz"


gzip -cd foobar.tar.gz | tar xf -

使用/dev/zero,/dev/null两个设备分别测试磁盘的读写性能

假设256M的数据,分别按4k, 8k的BlockSize大小进行读写测试:

time dd if=/tmp/testfile of=/dev/null bs=4k(4k读)
time dd if=/tmp/testfile of=/dev/null bs=8k
(8k读)

time dd if=/dev/zero of=/tmp/testfile bs=4k count=65536 (4k写)
time dd if=/dev/zero of=/tmp/testfile bs=8k count=32768 (8k写)

可以man zero或者man null看具体介绍。

查看Apache编译的模块

httpd -l (for static modules)
httpd -M (for shared/dynamic modules)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用matlab简单电路模型,基于MATLAB的电路模型仿真应用

基于MATLAB的电路模型仿真应用实验指导书一、实验目的1、掌握采用M文件及SIMULINK对电路进行仿真的方法。2、熟悉POWERSYSTEM BLOCKSET 模块集的调用、设置方法。3&#xff0e;进一步熟悉M脚本文件编写的方法和技巧。二、实验原理1、通过M文件实现电路仿真的一般仿真步骤为&…

春节期间小游戏同时在线人数最高达2800万人/小时

微信官方发布2018年春节期间微信数据报告&#xff1a;除夕至初五&#xff0c;总共有2,297亿条微信消息&#xff0c;28亿条微信朋友圈成功发出&#xff0c;音视频通话总时长175亿乙分钟。其中&#xff0c;90后用广的消息发送量占总量的42.5%&#xff0c;80后用户25.9%&#xff0…

C语言中* 和

&x是对x变量取地址&#xff0c;也就是返回的是x的地址。 int *i;这里面的*说明变量i是一个指针&#xff0c;存的是一个地址。 而 *i整体代表的是一个数值&#xff0c;例如可以int *i 5 这里整体的*i代表的是5&#xff0c;而i代表的是这个值存储的地址

餐馆的故事-浅析职责链模式

我们在餐馆吃饭的时候&#xff0c;一般都是在拿到菜单后&#xff0c;选择喜欢的菜&#xff0c;然后通知服务员。服务员会将我们的定单交给大厨&#xff0c;大厨可能会亲自去做这道菜&#xff0c;也可能安排给小厨来做&#xff0c;总之&#xff0c;我们不用担心他们没有人做菜&a…

JDBC数据对象存储

一&#xff1a;将查询的结果生成对象&#xff0c;储存在数组中。 1 package day31;2 3 import java.sql.Connection;4 import java.sql.PreparedStatement;5 import java.sql.ResultSet;6 import java.sql.SQLException;7 import java.util.ArrayList;8 9 public class java_ob…

个人工作13年的一些人生真实领悟

此文不定期的更新&#xff0c;想起来就写一些&#xff0c;我都忘了我曾经会过什么了。你可能会在许多的文章里看到类似的&#xff0c;但这些是我个人的真实体会。 1 技术服从于业务 此问题以前的一个文章提过&#xff0c;不再多说。 适用于大多数对技术的盲目崇拜者。在绝大…

matlab非齐次方程组的通解,用matlab求非齐次线性方程组的通解?

先向大家介绍一下非齐次线性方程组。所谓非齐次线性方程组就是方程组等号右边的常数项不全为零的线性方程组。全部等于零时&#xff0c;就称为齐次线性方程组。下面我们就讲解一下如何利用matlab快速求非齐次线性方程组的通解。工具/材料matlab电脑操作方法01线性方程组Axb的求…

Linux 终端仿真程序Putty

PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。较早的版本仅支持Windows平台&#xff0c;现在的版本中开始支持各类Unix平台。 用linux作为桌面系统&#xff0c;身为工程师很多时候需要通过Telnet、SSH协议进行远程管理&#xff0c;通过串口进行设备配置。Putty…

Mysql 数据库水平分表 存储过程

数据库存储量达到一定程度的时候&#xff0c;就需要进行分表以减轻检索的消耗。 常用的分表方式包括水平和垂直分表。本次进行的是按照uid进行水平分表。 ##分表思路&#xff1a; 水平分表平均的将数据按照特定方式分配到多个表中。理论上每个表的访问频次和数据量都是同一水平…

中国架构师,名符其实有多少?

先说一下读后感&#xff1a;我前段时间去过几个公司面试架构师&#xff0c;要求还是蛮高的&#xff0c;要熟悉大数据量处理&#xff0c;要熟悉高并发&#xff0c;要熟悉XX体系架构&#xff0c;要能在关键技术上实现突破。总之&#xff0c;架构错了&#xff0c;就啥都错了。呵呵…

粗识静态链表

为了弥补链表在内存分配上的不足&#xff0c;出现了静态链表这么一个折中的办法。静态链表比较类似于内存池&#xff0c;它会预先分配一个足够长的数组&#xff0c;之后链表节点都会保存在这个数组里&#xff0c;这样就不需要频繁的进行内存分配了。 当然&#xff0c;这个方法的…

php用date语句获取时间,关于php date()函数获取时间的设置和使用方法

date()函数是PHP自带的时间函数&#xff0c;可以获取当前服务器的时间echo date(Y-m-d H:i:s); //输出:2020-05-18 11:02:35date()函数中可以使用的字母含义&#xff1a;a-"am"(上午)或者"pm"(下午)A-"AM"或者"PM"Y-年&#xff0c;显示…

Django_form补充

问题1: 注册页面输入为空&#xff0c;报错&#xff1a;keyError&#xff1a;找不到passworddef clean(self): print("---",self.cleaned_data) # if self.cleaned_data["password"]self.cleaned_data["repeat_password"]: …

WF4.0:NativeActivity中的错误处理

备注&#xff1a;这篇文章的使用环境是.NET framework 4.0 RC 1 在WF4中创建native活动时&#xff0c;NativeActivity是非常强大的。其众多的功能之一是围绕错误处理。 调度子活动的时的基本错误处理。 当NativeActivity执行的时候&#xff0c;它是通过一个NativeActivityConte…

程序员提高建议之踏踏实实“扎马步”

踏踏实实“扎马步” 今天无意中看了“校长”的“程序员&司机”&#xff0c;其中谈到了关于程序员速成的问题。其实速成班毕业的“系统杀手”早已在遍布大江南北&#xff0c;只是在互联网时代&#xff0c;互联网的应用型软件生命周期越来越短&#xff0c;业务驱动主导…

c语言scanf返回值

1. scanf 函数是有返回值的&#xff0c;它的返回值可以分成三种情况1) 正整数&#xff0c;表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b);如果用户输入"3 4"&#xff0c;可以正确输入&#xff0c;返回2&#xff08;正确输入了两个变量…

gpgga格式读取MATLAB,GPS编码格式及读取.doc

GPS接收机只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息通过串口传送到计算机中。前面的代码只负责从串口接收数据并将其放置于缓存&#xff0c;在没有进一步处理之前缓存中是一长串字节流&#xff0c;这些信息在没有经过分类提取之前是无法加以利用的。因此…

Cadence 电源完整性仿真实践(二)

转载于:http://blog.csdn.net/wu20093346/article/details/38050917 通过以上步骤对每个平面进行了单节点分析并观测了响应曲线&#xff0c;接下来将观测平面对的目标阻抗是否满足要求&#xff0c;通过选择电容器的方法来减小含有电容器阻抗响应曲线中的反谐振波峰。在SigWave窗…

Johnson 全源最短路径算法

解决单源最短路径问题&#xff08;Single Source Shortest Paths Problem&#xff09;的算法包括&#xff1a; Dijkstra 单源最短路径算法&#xff1a;时间复杂度为 O(E VlogV)&#xff0c;要求权值非负&#xff1b; Bellman-Ford 单源最短路径算法&#xff1a;时间复杂度为 O…

单循环链表中设置尾指针比设置头指针更好的原因

尾指针是指向终端结点的指针&#xff0c;用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便。 设一带头结点的单循环链表&#xff0c;其尾指针为rear&#xff0c;则开始结点和终端结点的位置分别是rear->next->next和rear,查找时间都是O(1)。 若用头指…