日常工作中的的Linux操作-Wiki

本文记录日常工作中涉及到的Linux命令以及常见的相关操作。持续更新

basename

basename命令用于打印目录或者文件的基本名称

[root@HGH1000059721 test]# basename a.tar .tar  #后缀:可选参数,指定要去除的文件后缀字符串。
a
[root@HGH1000059721 test]# basename /tmp/test/a.tar  #不带后缀,获取文件名
a.tar

参考:

cp

将目录src复制到dest目录下,复制好后,dest/src:

cp -r src dest

将目录src下的内容复制到dest目录下:

cp -r src/* dest

复制文件,覆盖不询问:

cp -nrf a.txt b.txt

参考:

crontab

[图片描述][1]

在以上各个字段中,还可以使用以下特殊字符:

  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

任务执行文件所在位置:

/var/spool/cron/crontabs

每隔2分钟执行/tmp/test.sh脚本:

crontab -e
*/2 * * * * /tmp/test.sh

第星期六、星期日的时10分重启smb-也就是每周六、周日

10 1 * * 6,0 /etc/init.d/smb restart

实例4:每隔两天的上午8点到11点的第3和第15分钟执行:

3,15 8-11 */2  *  * myCommand

参考:

date

选项

不加: 显示当前的时间.
-d <字符串> :显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s <字符串> :根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
--help:在线帮助;
--version:显示版本信息。

参数 <+时间日期格式>:指定显示时使用的日期时间格式。

就是格式化字符串处理.当需要用到空格时要使用双引号,如"+%Y-%m-%d %H:%M:%S".

一般,%Y %m %d %H %M %S 是最基本的. 使用星期月份时也会用到%a %b

示例

VERSION=$(date +%Y%m%d%H%M%S) #20180410192702 #date后面有空格
time=$(date "+%Y-%m-%d %H:%M:%S") #时间格式中有空格,需要加引号
» date "+%Y-%m-%d %T %a %A"                                                               
2018-06-04 11:31:25 Mon Monday

参考:

df

通过df命令很容易发现那个磁盘的存储空间快没了。查看挂载状态和硬盘使用量信息:

df -hT

du

du命令可以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况。这一方法可以判断系统上某个目录下是不是有超大的文件。

查看当前文件夹的文件大小:

du -sh *  

env

查看环境变量值,例:
查看带有SVN的环境变量值:

env|grep SVN

fdisk

fdisk -l看到目前系统中所有分区的信息
https://blog.csdn.net/cc_net/article/details/2894510

grep

在大文件中找一行数据,用grep命令帮助查询。

grep [options] pattern [file]

例如:

grep three file1

gzip

gzip是GNU项目的产物。这个软件下买呢含有下面的工具:

  • gzip :用来压缩文件
  • gzcat:用来查看压缩过的文本文件的内容
  • gunzip:用来解压文件。
gzip xxx

显示前n行内容:
head -n
https://www.linuxdaxue.com/linux-command-intro-head.html

ls

  • ll -d:仅显示目录

mount

mount可以显示全部挂载情况。

将分区挂载到目录:

mount /dev/xvde /data

netstat 检查端口占用

netstat -anp|grep 80 

rm

只删除当前文件夹下的隐藏文件和隐藏文件夹:

rm -rf .*

https://blog.csdn.net/ficksong/article/details/52447729

rpm

我的系统中安装了那些rpm软件包

rpm -qa 

如果要查找所有安装过的包含某个字符串sql的软件包

rpm -qa | grep sql

一个rpm包中的文件安装到那里去了?

rpm -ql 包名

软件包的卸载

rpm -e 

参考:http://man.linuxde.net/rpm

sed

eg1:

nl passwd|sed "1d;10d" #删除第1行,第10行

eg2:

sed -i -e "1i%define upstream_version $UPSTREAMVERSION\\" *.spec #第一行插入
sed -i -e "s/UPSTREAMVERSION/$UPSTREAMVERSION/g" *.spec #替换

sort

对之前提到的密码文件/etc/passwd根据用户ID进行数值排序。-k-t参数在对安字段分割的数据进行排序时非常有用。

sort -t ":" -k 3 -n /etc/passwd

tar

目前Unix和Linux上最广泛使用的归档工具是tar命令。

tar function [options] object1 object2 ……

首先,创建一个归档文件:

tar -cvf test.tar test/ test2/

创建了名为test.tar归档文件,含有test和test2目录内容。

接着,列出tar文件test.tar内容(但并不提取文件):

tar -tf test.tar

最后用命令提取文件:

tar -xvf test.tar

tar命令是给整个目录创建归档文件的简便方法

窍门:下载开源软件之后,经常会看到文件名以.tgz结尾。这些事gzip压缩过的tar文件,可以用tar -zxvf filename.tgz来解压

wc

wc [-clw][--help][--version][文件...]

参数:

-c或--bytes或--chars 只显示Bytes数。
-l或--lines 只显示行数。
-w或--words 只显示字数。
--help 在线帮助。
--version 显示版本信息。

wget

将远程目录下的全部内容下载到save目录下。-nd参数表示,如果远程目录下也有子目录,会将子目录中的文件下载下来而不创建多余目录。

wget -r -nd -np -P save http://xxx/repo/FusionNova/master/euler/20180604195327/

示例2:

将远程文件夹原封不动下载下来,并且下载下来的本地路径也是远程目录,而不会创建多级目录。-nH表示不会创建
xxx.com目录,--cut-dirs将其余多余层级目录不下载,实现效果下载到本地就只是DLRN_RPMS目录。

wget -r -p -k -np -nH --cut-dirs=4 http://xxx.com/cps/FusionNetwork-for-fc/master/suse/DLRN_RPMS/

参考:

who

who //显示当前登录系统的用户
显示标题栏

# who -H

只显示当前用户

# who -m -H

last/lastlog

查看最近登录用户的信息

scp

免密访问,互传文件

systemctl

任务 旧指令 新指令
使某服务自动启动 chkconfig –level 3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig –level 3 httpd off systemctl disable httpd.service
检查服务状态 service httpd status systemctl status httpd.service
显示所有已启动的服务 chkconfig –list systemctl list-units –type=service
启动某服务 service httpd start systemctl start httpd.service
停止某服务 service httpd stop systemctl stop httpd.service
重启某服务 service httpd restart systemctl restart httpd.service

stty

利用stty -a列出目前环境中所有的按键列表。

除了stty之外,其实bash还有自己的一些终端机设置值。利用set来设置的。之前提到的一些变量,可以利用set来显示。

unzip

unzip -l demo1-0.1-py2.7.egg
unzip -o -d /home/sunny myfile.zip

把myfile.zip文件解压到 /home/sunny/
-o:不提示的情况下覆盖文件;
-d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下;

参考:

yum

通配符与特殊符号

符号 意义
* 代表0个到无穷多个任意字符
代表一定有一个任意字符
[] 同样是代表一定有一个在中括号内的字符(非任意字符)。例如,[abcd]代表一定有一个字符,可能是这四个中的一个
[-] 若减号在括号内,代表在编码顺序内的所有字符。例如,[0-9]代表0-9之间所有数字,因为数字的语系编码是连续的
[^] 若中括号第一个字符是^,表示原向选择,例如[^abc]代表一定有一个字符,只要是非a,b,c的其他字符就接收

示例:

  • 找出/etc/目录下文件夹名字刚好有5个字母的文件名:ll -d /etc/?????
  • 找出/etc/下面文件名含有数字的的文件名:ll -d /etc/*[0-9]*
  • 找出/etc/下面文件名开头非小写字母的文件名:ll -d /etc/[^a-z]*
  • 将上面例子找到的文件复制到/tmp中:`

bash中的特殊符号

符号 内容
# 注释符号

|转义符号,将特殊字符或通配符还原成一般字符
竖线|管道
;|连续命令执行分隔符,连续命令的界定
~|用户的主文件夹
\(|使用变量的前导符 &|作业控制,将命令变成背景下工作 !|逻辑运算意义上的“非” \>,>>|数据流重定向,输出导向,分别是“替换”与“累加” <,<<|数据流重定向,输入导向 ''|但因哈,**不具有变量置换的功能** ""|**具有变量置换的功能** ``|两个“`”中间为可以先执行的命令,也可以使用\)()
()|中间为子shell的起始与结束
{}|中间为命令块的组合

常用处理

给Linux新增硬盘之后的操作

fdisk -l #查看磁盘情况,发现有磁盘没有分区,比如是/dev/xvde
fdisk /dev/xvde #进行磁盘分区的操作

fdisk磁盘分区时,可以输入m,会有提示:

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

我依次这么输入的:

add a new partition:n
partion type:p
Partion number:分区个数 1
First sector默认值:Enter
Lase sector默认值:Enter
print the partion table:p
write table to disk and exit:w

分区完成之后,需要格式化

mkfs -t ext4 /dev/xvde1

将新建分区挂载到/data目录下:

cd /home
mkdir data
mount /dev/xvde /data

挂载完毕,输入df -hT可以查看到新建的分区

设置文件系统的自动挂载

vi /etc/fstab

添加/dev/xvde1 /data ext4 defaults 0 1
在 fstab 配置文件中加入挂载点之后其实就已经是开机自动挂载了,不需要用 mount 命令挂载。但是还是用 mount 实在,因为最后还是需要写入/etc/fstab
第一段可以用分区名,也可以用blkid的方式获取UUID的值

参考:

  • www.jianshu.com/p/7b8c3509d5fe
  • http://support.huawei.com/huaweiconnect/enterprise/zh/thread-157187-1-1.html

备份原有配置文件

只将不带注释的内容提取出来,作为配置文件

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf

-v 参数表示反选

修改主机名

查看Linux系统版本

lsb_release -a # 适用于所有Linux系统
cat /etc/os-release #推荐
cat /etc/redhat-release # 仅适用于Redhat系列的Linux系统
uname -a # 查看Linux内核
cat /proc/version # 查看Linux内核

显示shell执行过程

set -x

如果想隐藏某一行的内容:

set -x
xxxx
set +x
yyyy
set -x

查看端口占用

[[email protected] software]# netstat -apn                查看当前运行的所有进程的端口使用情况
[[email protected] software]# netstat -apn | grep 端口号   查看指定端口使用情况
[[email protected] software]# kill 指定端口的pid号          杀死指定进程(端口号对应的pid)

FAQ

Q:http://blog.csdn.net/u011109356/article/details/54928955

/dev/xvda1 占满

Q:Pseudo-terminal will not be allocated because stdi

https://www.jianshu.com/p/e66014b67506

Q:Linux各目录的作用

猜你喜欢

转载自www.cnblogs.com/michael-xiang/p/9253566.html