Linux常用命令和操作

感谢下面提及的各类URL参考文献的作者!

 

 

nproc

是操作系统级别对每个用户创建的进程数的限制,在Linux下运行多线程时,每个线程的实现其实是一个轻量级的进程,对应的术语是:light weight process(LWP)。

 

lspci 

是一个用来显示系统中所有PCI总线设备或连接到该总线上的所有设备的工具。

lspci  -vv  使得 lspci 以过冗余模式显示更详细的信息

 

ifconfig  查看和配置网络设备

  • ifconfig eth0 up :启动网卡eth0
  • ifconfig eth0 down  :关闭网卡eth0。ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。
  • ifconfig eth0 192.168.120.56 :给eth0网卡配置IP地 192.168.120.56

 

ethtool 查询和设置网卡参数

  • ethtool -i ethX :查询ethX网卡的相关信息

 

sudo 

就是super-user do,让当前用户暂时以管理员的身份root来执行这条命令。sudo 表示获取临时的root权限命令

 

查看有哪些用户

  • w
  • who
  • users

 

查看进程
ps aux | grep “XXX”

 

查IP地址
ifconfig | egrep "inet.*Bcast.*" | awk '{print $2}' | cut -d ":" -f2

 

设置root密码
sudo passwd
su root                   #切换用户
https://www.cnblogs.com/qianniao12/p/7745633.html

 

显示隐藏文件夹
Ctrl+h

 

scp
https://www.cnblogs.com/likui360/p/6011769.html
举例:
在A服务器上操作,将B(43.224.34.73)服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下:
scp -r  root@43.224.34.73:/home/lk   /root
在A服务器上将/root/lk目录下所有的文件传输到B(43.224.34.73)的/home/lk/cpfile目录下:
scp -r  /root/lk  root@43.224.34.73:/home/lk/cpfile

 

生成ssh key

ssh-keygen -t rsa -C "youremail@example.com"

-t   是key的类型

-C 是注释,方便标识认出

 

用指定的ssh key链接服务器

ssh -i ssh_sfr/.ssh/id_rsa  fshenx@XX.XXX.XXX.XX

 

配置多个ssh key
https://blog.csdn.net/birdben/article/details/51824788

 

免密登录

将本机的id_rsa.pub 拷贝追加到fshenx@10.239.145.113的.ssh/authorized_keys 文件中。

下次可以ssh fshenx@10.239.145.113 直接登录

ssh-copy-id -i ~/.ssh/id_rsa.pub fshenx@10.239.145.113

 

 

重启命令:
1、reboot
2、shutdown -r now 立刻重启(root用户使用)
3、shutdown -r 10 过10分钟自动重启(root用户使用)
4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)
如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启
关机命令:
1、halt   立刻关机
2、poweroff 立刻关机
3、shutdown -h now 立刻关机(root用户使用)
4、shutdown -h 10 10分钟后自动关机
如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启
三种关机命令的区别和参数: https://blog.csdn.net/jiyanfeng1/article/details/8146139

 

查看服务状态:

service --status-all

The status is [ + ] for running services, [ - ] for stopped services and [ ? ] for services without a 'status' command.

ls /etc/rc$(runlevel|sed 's/N.//').d|awk '!/K/ {print}'|sed 's/S[0-9][0-9]//'

ls /etc/rc`runlevel|sed 's/N.//'`.d|awk '!/K/ {print}'|sed 's/S[0-9][0-9]//'

运行runlevel得到运行级别,假如得到的结果N 2(中间一个空格),再用sed命令将N和空格替换为空,sed 's/N.//',那个点就是表示任意单个字符,

其实前面得到的结果就是ls /etc/rc2.d,然后再用awk命令排除以K开头的脚本,得到的几乎都是以S开头的脚本,再把S和数字(启动顺序级别)删除掉,

得到的就是最后的服务名称了。

 

查看JAVA_HOME:

fshenx@fshenx-HP-Compaq-8200-Elite-SFF-PC:~$ which java

/usr/bin/java

fshenx@fshenx-HP-Compaq-8200-Elite-SFF-PC:~$ ls -l /usr/bin/java

lrwxrwxrwx 1 root root 22 11月 14 04:19 /usr/bin/java -> /etc/alternatives/java

fshenx@fshenx-HP-Compaq-8200-Elite-SFF-PC:~$ ls -l /etc/alternatives/java

lrwxrwxrwx 1 root root 46 11月 14 04:19 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

 

diff两个文件夹,找出不同的文件

diff -Nrq dir1 dir2

-N :如果文件只在其中一个目录中存在,那么他被视为在另一个目录中是空文件

-r  :递归比较子目录

-q :仅报告文件是否相同,不报告详细差异

http://www.cnblogs.com/kuloud/p/3371763.html

 

 

用diff命令制作patch

diff -auNr dir1 dir2 > test.patch

应用上面制作的patch

patch -p1 -l < ./test.patch.txt

PS1:制作patch的时候加-u参数,不然应用patch就会报下面的错:

            patch: **** Only garbage was found in the patch input.

            https://blog.csdn.net/harveofhust/article/details/6425211

PS2:有链接文件时(指向某个目录)出现了下面的提示:

            diff: testdiff1/testloop/loop: recursive directory loop

PS3:应用patch的时候加-l 参数,不然可能会因为空白符报错:

            Hunk #1 FAILED at 62.

            Hunk #2 FAILED at 133.

PS4:diff命令不能处理二进制文件

 


用命令安装deb包:
sudo dpkg -i bcloud_3.8.2-1_all.deb
然后在终端处运行命令bcloud-gui,来启动百度云客户端
注:dpkg命令无法自动解决依赖关系。如果安装的deb包存在依赖包,则应避免使用此命令,或者按照依赖关系顺序安装依赖包。http://blog.csdn.net/chenzhengfeng/article/details/78246483

 

查看空文件夹

find -type d -empty

 

-type 是find命令的一个参数:
-type:查找某一类型文档
b:块设备文档
d:目录
c:字符设备文档
P:管道文档
l:符号链接文档
f:普通文档

 

修改目录和文件权限

# 对当前目录下所有的子目录及以下目录都设置成为 755权限
find . -type d -exec chmod 755 {} \;

# 对当前目录下的所有文件设置 644的权限。
find . -type f -exec chmod 644 {} \;

 

du 显示每个文件和目录的磁盘使用空间

https://www.cnblogs.com/DswCnblog/p/5860166.html

$ du -sh    #只显示总和的大小(以K,M,G为单位,提高信息的可读性)
2.7M .
$ du -h --max-depth=1  #输出当前目录下各个子目录所使用的空间 (以K,M,G为单位,提高信息的可读性)
2.7M ./.git
12K ./t
16K ./samples
2.7M .
$ du -a --max-depth=1   #输出当前目录下各个子目录和文件所使用的空间(默认以K为单位)
4       ./.gitignore
4       ./te
4       ./0321.1.bundle
2720    ./.git
0       ./slink
12      ./t
16      ./samples
2764    .

 

xargs 命令详解,xargs与管道的区别
https://www.cnblogs.com/wangqiguo/p/6464234.html

  • 管道 是实现“将前面的标准输出作为后面的标准输入”
  • xargs是实现“将标准输出作为命令的参数”

fshenx@fshenx-HP-PC:~/code/test/tmp/rebase_t$ cat x
I am x.
fshenx@fshenx-HP-PC:~/code/test/tmp/rebase_t$ cat y
I am y.
fshenx@fshenx-HP-PC:~/code/test/tmp/rebase_t$ echo "x y" | xargs cat
I am x.
I am y.
fshenx@fshenx-HP-PC:~/code/test/tmp/rebase_t$ echo "x y" | cat
x y

 

查看Linux version

lsb_release -a

 

查看cpu信息

lscpu

 

查看Linux 位数(三种都行)        

  1.     getconf LONG_BIT
  2.     echo $HOSTTYPE
  3.     uname -a

注:

64位的显示

Linux ps4 2.6.16.46-0.12-smp #1 SMP Thu May 17 14:00:09 UTC 2007 x86_64 x86_64 x86_64 GNU/Linux

32位的显示:

Linux fc6 2.6.18-1.2798.fc6 #1 SMP Mon Oct 16 14:54:20 EDT 2006 i686 i686 i386 GNU/Linux

 

去掉文件中^M的方法

https://blog.csdn.net/shouldnotappearcalm/article/details/64904253

方法1:    dos2unix filename

方法2:    sed -i 's/^M//g' filename

 

压缩                                                        解压

tar -czvf  XXX.tar.gz   XXX                     tar -xzvf XXX.tar.gz

tar -cjvf  XXX.tar.bz2  XXX                     tar -xjvf XXX.tar.bz2

 

分卷压缩

tar -czf - dirName | split -b 1G -d - XXX.tar.gz

解压

cat XXX.tar.gz* | tar zxv

 

/etc/profile,/etc/bashrc 是系统全局环境变量设定
~/.profile,~/.bashrc用户家目录下的私有环境变量设定

当登入系统时候获得一个shell进程时,其读取环境设定档有三步
1首先读入的是全局环境变量设定档/etc/profile,然后根据其内容读取额外的设定的文档,如
/etc/profile.d和/etc/inputrc
2然后根据不同使用者帐号,去其家目录读取~/.bash_profile,如果这读取不了就读取~/.bash_login,这个也读取不了才会读取
~/.profile,这三个文档设定基本上是一样的,读取有优先关系
3然后在根据用户帐号读取~/.bashrc
至于~/.profile与~/.bashrc的不区别
都具有个性化定制功能
~/.profile可以设定本用户专有的路径,环境变量,等,它只能登入的时候执行一次
~/.bashrc也是某用户专有设定文档,可以设定路径,命令别名,每次shell script的执行都会使用它一次

 


重命名,修改文件名后半部分:
BUILD_NUMBER=2
ls *-V6.17.163.zip | while read Line; do name1=`echo "$Line" | sed "s/V6.17.163/$BUILD_NUMBER/" ` ; mv $Line $name1 ;done

 


touch
1.创建空白的新文件.
2.更新已有文件的时间戳(默认是系统当前时间).
用法是一样的, touch 文件名

 

 

Ubuntu 16.04下没有/var/log/messages文件问题解决

https://www.cnblogs.com/EasonJim/p/8413535.html

1.打开/etc/rsyslog.d/50-default.conf删除下面这几条注释

#       news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages

2.sudo service rsyslog restart  

 

ubuntu /var/log/下各个日志文件描述及修复无message文件和debug文件

https://blog.csdn.net/gatieme/article/details/68951962

 

 

Ubuntu系统中永久修改主机名hostname:

编辑 /etc/hostname文件,在文件中输入新的主机名并保存该文件即可。

重启系统后,可执行hostname 命令来确认是否修改成功。

/etc/hostname与/etc/hosts的区别:

/etc/hostname中存放的是 主机名

/etc/hosts存放的是 域名与ip的对应关系,域名与主机名没有任何关系

 

设置静态IP:

https://blog.csdn.net/xiongchun11/article/details/53928149

1. 查看配置:

root@shctsbdb16:~# ifconfig
em1      Link encap:Ethernet  HWaddr 3c:a8:2a:1e:2c:fc
          inet addr:10.239.39.197  Bcast:10.239.39.255  Mask:255.255.255.0
          inet6 addr: fe80::3ea8:2aff:fe1e:2cfc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17919 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1122 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6294004 (6.2 MB)  TX bytes:147188 (147.1 KB)
          Interrupt:16

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
           。。。。。。

root@shctsbdb16:~# netstat -rn            #查gateway
Kernel IP routing table
Destination    Gateway        Genmask        Flags  MSS Window  irtt Iface
0.0.0.0        10.239.39.1    0.0.0.0        UG        0 0          0 em1
10.239.39.0    0.0.0.0        255.255.255.0  U        0 0          0 em1
169.254.0.0    0.0.0.0        255.255.0.0    U        0 0          0 em1
root@shctsbdb16:~#

2. 编辑/etc/network/interfaces:  修改em1相关部分

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto em1
iface em1 inet static
address 10.239.39.197
netmask 255.255.255.0
gateway 10.239.39.1

3. 重启网络

sudo /etc/init.d/networking restart

 

 

adduser 和 useradd 区别   https://blog.csdn.net/li_101357/article/details/46778827
adduser

用adduser这个命令创建的账号是系统账号,可以用来登录到我们的ubuntu系统。

1.建立一个新目录作为家目录
2.建立同名新组
3.把用户的主要组设为该组(除非命令选项覆盖以上默认动作,比如–disall-homdirecry之类)
4.从/etc/SKEL目录下拷贝文件到家目录,完成初始化
5.建立新用户的密码
6.如果其存在的话,还会执行一个脚本。


useradd

useradd这个命令创建的是普通账号,并不能用来登录系统。
useradd有大量的参数供我们进行个性化设置

 

 

添加用户jenkins并赋予sudo权限:

https://blog.csdn.net/rongku/article/details/50420209

root@shctsbdb16:~# sudo adduser jenkins
root@shctsbdb16:~# ls -l /etc/sudoers
-r--r----- 1 root root 755 May 29  2017 /etc/sudoers
root@shctsbdb16:~# chmod u+w /etc/sudoers
root@shctsbdb16:~# ls -l /etc/sudoers
-rw-r----- 1 root root 755 May 29  2017 /etc/sudoers
root@shctsbdb16:~# vi /etc/sudoers         #在root ALL=(ALL:ALL) ALL  下面添加:  jenkins ALL=(ALL:ALL) ALL
root@shctsbdb16:~# chmod u-w /etc/sudoers

PS1:    用命令把jenkins加入sudo用户组:    sudo usermod -a -G sudo jenkins

  •             usermod -G 是指定用户组
  •             -G :把用户添加到指定的用户组,但是会自动从其他组中删除。
  •             -a :追加,但不会从其他组中删除。可以这样理解:-G修改当前次要组;-G -a是增加新的次要组
  •             其实你也可以直接编辑/etc/sudoers文件

PS2:    给用户组添加sudo权限。方法是修改/etc/sudoers,添加:

            %admin ALL=(ALL:ALL) ALL

            意思是让admin用户组所有的用户都具有sudo权限

 

 

wget

https://www.cnblogs.com/wuheng1991/p/5332764.html

wget 设置代理的几种方法:

https://www.cnblogs.com/frankyou/p/6693256.html

举例:

针对wget工具的代理设置:需配置/etc/wgetrc文件,格式如下:

http_proxy = http://user:pwd@proxy.xxx:8080/
use_proxy = on

针对apt工具的代理设置:需配置/etc/apt/apt.conf文件,格式如下:

Acquire::http::proxy "http://user:pwd@proxy.xxx:8080/";
Acquire::https::proxy "https://user:pwd@proxy.xxx:8080/";
Acquire::ftp::Proxy "ftp://username:password@proxyhost:port/";

 

rmdir

只能删除空的文件夹

-p, 删除目录和它的祖先    e.g., 'rmdir -p a/b/c' is similar to 'rmdir  a/b/c   a/b   a'


umask -S 查看默认权限

 

readlink -f XXX
-f 选项可以递归跟随给出文件名的所有符号链接以标准化,除最后一个外所有组件必须存在。
简单地说,就是一直跟随符号链接,直到直到非符号链接的文件位置,限制是最后必须存在一个非符号链接的文件。

 

dirname 
处理路径,以获取路径的父目录,不会检查路径是否合法。

$ dirname avs_client_app/
.
$ dirname /unexist/path/for/test/
/unexist/path/for

$ dirname -z /unexist/path/for/test/         #dirname -z 输出后不换行
/unexist/path/forfshenx@fshenx-HP-PC:~$


basename

表示移除名称的目录,仅保留文件名

$ basename test/haha.sh
haha.sh
$ basename -s .sh test/haha.sh    #去掉后缀
haha

 


cat -n  显示行号
cat -s  多个连续空行变成一行


iconv 改变编码方式


sort 排序
uniq 去重

xargs
tr
sudo -S    https://www.cnblogs.com/toughlife/p/5633927.html
watch
du -hd
uname
hash
timeout 在时间内执行

 

lsblk   : List information about block devices.

lspci -vv | grep -i vol  :查看nvme ssd

cat /etc/redhat-release  : 查看Fedora版本

 

 

IOPS 每秒处理的IO个数

BW   Band Width  带宽  每秒处理的IO字节数

IOPS * bs ~= BW

IOdepth / latency  ~= IOPS

 

 

 

kernel版本   uname -r

 

更新kernel(待验证)

下载到了一份tar.xz结尾的压缩文件:

Kernel download  https://www.kernel.org/pub/linux/kernel/v4.x/

$xz -d ***.tar.xz

$tar -xvf  ***.tar

编译内核步骤:

1 make menuconfig

2 make all -j64

3 make modules && make modules_install

4 make install

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值