zoukankan      html  css  js  c++  java
  • linux备忘命令

    1,安装vim以后把vim中的tab键设置为4个空格

     vim ~/.vimrc一下,如果没有会创建新的, 然后添加下面两行:

    set ts=4
    set expandtab

       如果第二行内容是noexpandtab,就把noexpandtab改为expandtab

    2,ssh和scp

    ssh center@ip -p 22     ssh链接远程主机

    scp -P 22 center@ip :~/test.txt .    把远程主机上的~/test.txt下载到本地当前目录

    scp ~/下载/CMake_Practice.pdf center@ip:~/公共的/daqing-temp    把本地~/下载/CMake_Practice.pdf上传到远程主机上的~/公共的/daqing-temp文件夹内,不用指定端口哦

    tar -xzvf daqing.tar.gz   解压daqing.tar.gz到当前文件夹

    tar -czvf daqing.tar.gz etc    压缩当前文件夹下的etc文件夹以及其子文件夹为daqing.tar.gz

    3,lampp ubuntu环境进入mysql:

    mysql -u root -p 

    或者

    [ root@ha ~]# cd /opt/lampp/bin

    [ root@ha bin]# ./mysql –uroot –p123456

    4,后台运行

    个人认为前后台程序有两种:

    1),程序的运行与否和终端相关:终端关闭,则程序挂掉。这类程序一般包括:command;command &;

    #!coding=utf-8
    #同一个终端内,程序也有前后台运行之分
    
    command
    #这是前台程序,程序直接在命令后返回运行状态和结果
    
    command &
    #这是后台程序,程序中如果有类似print之类的控制台输出语句,依然返回到本终端,很有可能造成的结果就是,它不断返回,你一边不断尝试输入命令,基本上就是看你和电脑哪个更快了。
     
    #同一个终端内的程序,前后台如何转换:
    """
    1,运行的时候最后面加“  &”
    2,ctrl 加 z,把当前程序挂到后台,并且中止程序运行。此时终端会返回你一个job号码加进程号,如果你想让它后台继续运行,就用:bg %job号码(挂到后台后仍然会出现人和电脑比手速的问题),如果你想让它来前台运行,那就用:fg %job号码。
    """
    #如果你想直接停掉他们,直接关终端或者对前台程序做ctrl c就可以了

    开启或者关闭 后台运行的常用命令:

    ctrl + z
    可以将一个正在前台执行的命令放到后台,并且暂停
    
    jobs
    查看当前有多少在后台运行的命令
    
    fg
    将后台中的命令调至前台继续运行
    如果后台中有多个命令,可以用 fg %n将选中的命令调出,n是通过jobs命令查到的后台正在执行的命令的序号(不是pid),经常是1,23,这样的简单数字。fg后面不加任何东西的默认意思是:fg %1,把后台运行的第一个程序调到前台来继续跑
    
    bg
    将一个在后台暂停的命令,变成继续执行
    如果后台中有多个命令,可以用bg %n将选中的命令调出,%n是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    2),程序的运行与否和终端不相干:终端关闭,程序依然运行,这类程序的纯后台程序。

    #纯后台进程
    nohup command &;
    #使用所有打印到控制台的标准输出都放到当前文件夹下的output.out中去(如果没有指定的话),然后把程序放到后台继续执行,不和终端有任何绑定。顺带一提,就算退出账户这个程序也不会停止哦
    #指定nohu的输出: nohup command > myout.file 2>&1 解释一下,2>&1的意思是标准输出和标准错误都重定向到myout.file中
    
    screen
    #sudo apt-get screen直接安装就行了
    #基础用法:screen -S name 新建一个叫name的虚拟终端,并且登录进去,此时,里面运行的任何程序都是在虚拟终端内部的,不会关闭。运行完一堆程序以后,screen -d name 离开name这个终端。screen -r name 重连name这个终端。screen -ls看看有几个虚拟终端;链接上screen虚拟窗口以后输入exit就关闭并且退出screen虚拟窗口了

     3,个人比较常用的命令是:

    sudo nohup python ./脚本.py>nohup.out 2>&1 &     

    意思是,用root权限运行脚本。并且把标准错误和标准输出保存到nohup.out中,放到后台运行起来。

    但是有两个点需要十分注意,

    a,有关sudo,如果系统需要提示你输入密码,在nohup的状态下你是无法收到系统提示的,所以程序根本跑不起来,解决方法是,先执行随意的sudo命令,然后再用sudo命令加上nohup

    b,有关nohup.out,如果你写个while循环,每隔1秒钟输出一个数字到nohup.out中(自定义的文件需要注意是否有写入的权限),那么过了5秒以后,你肯定看不到5个数字,只有ignoring input的字样,为啥?这不代表你程序错了,个人猜测nohup具有输出策略,并不是每个字符串一生成就立马写到文件中去,而是程序执行完,或者遇到报错信息,或者到一定量,或者一定时间(细节不知)才会统一写进去。so,暂时看不到里面的内容不代表你错了。

    4,关机

    常用的关机:

    sudo shutdown     #一分钟内广播,清空缓存,然后一分钟时间一到就关机
    sudo shutdown -h now    #shutdown -h now 是关闭运行的程序后,刷新缓冲区后再调用init 0关机
    sudo init 0     #这个是直接关机,不管系统内运行的程序

     5,查看磁盘状态

    df -h
    #以人比较好看懂的单位返回各个磁盘或者分区的状态

     6,nmap扫描局域网ip

    nmap是个很强大的工具,

    sudo apt-get install nmap
    sudo nmap -sP 192.168.3.0/24 
    #快速检测192.168.10.0/24网段中有哪些存活主机

    扫描局域网内某一段ip地址的信息

    nmap 192.168.0.101-110
    
    #扫描局域网内部0.101到0.110的IP、地址,系统会列出端口等很多详细信息

    扫描局域网内的ip和mac地址:

    sudo nmap -sP -PI -PT 192.168.1.0/24

    详情可以参考:实例走起

    7,ubuntu系统目前运行的进程相关查询

    常规查询:

    ps -aux
    #显示当前系统的所有进程
    ps -aux|grep 'xxx'
    #查找和xxx相关的进程的信息,xxx有可能是名字,pid等等

    按照进程号查找相关信息:

    ps -q 1234 -o command
    #-q表示快速查找,-o表示你需要啥东西,你需要user写user,总之是ps能查到的都可以写
    #我的ps可以查到这些:USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

     8,向mysql数据库导入或者导出数据

    create database 数据库名称; 
    mysql -h localhost -u root -p yourdatabase < ./hehe.sql
    #这是从sql文件中,向数据库yourdatabase导入数据
    mysqldump -h localhost -u root -p yourdatabase > ./test.sql
    #从yourdatabase中导出数据并且保存为test.sql

     9.查看磁盘相关命令

    df -h
    #用比较可视化的方式查看系统整个磁盘的信息
    
    du -sh ~/home
    #查看文件或者文件夹的大小,有的文件需要sudo权限

     10,grep命令查找匹配的字符上下几行

    原作者

    grep -C 3 love filename  显示filename文件中,love行上下3行内容(含love行)
    
    grep -A 3 love filename  显示filename文件中,love行下3行内容(含love行)
    
    grep -B 3 love filename  显示filename文件中,love行上3行内容(含love行)
    ##-B before
    ##-A after
    ##-C before+after

    使用:

    假设使用nmap查找局域网内某个设备的ip,
    
    nmap 192.168.0.10-100>ip.txt
    #把局域网内的0网段的10到100号ip都写出到ip.txt中
    
    cat ip.txt|grep -B 7 xxx
    #从ip.txt中查找带‘xxx’字符的行,并且把本行和本行的前7行都打出来。比如我知道我的设备22端口开放,就可以尝试grep -B 7 22

     11,watch持续调用某个命令,并且n秒刷新一次

    watch -n 2 'cat /sys/devices/xxxx/temp'
    #每隔两秒查看一下系统某个文件的状态

    灰常好用!

    12,为ubuntu更新系统时间或者更换时区

    date -R
    #查看当前时间
    tzselect
    #系统会提示你选择你所在的洲,国,根据实际情况选择完成以后确认即可,不需要图形界面

    然后复制一下系统文件就可以了:

    sudo mv /etc/localtime /etc/localtime_old
    sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    其他的设置目前还不没尝试,可参考原文档

    因为原本的localtime是个软连接,而新的localtime是个文件,所以个人觉得,直接修改localtime的指向比较好,所以最终是这样的

    sudo rm localtime
    sudo mv localtime_old localtime
    sudo ln -snf /usr/share/zoneinfo/Asia/Shanghai localtime
    #先把我刚刚copy过来的localtime删掉,然后把原本的localtime(现在叫localtime_old)的名字改回来,最后把软连接链接到上海所在的时区

    有些时候,如果ubuntu处于没有网络的状态下,上述设置有可能不大管用(个人没测),此时就可以尝试手动修改时间啦!

    命令如下:

    sudo date -s MM/DD/YY //修改日期
    sudo hwclock --systohc //修改生效
    sudo date -s hh:mm:ss //修改时间
    sudo hwclock --systohc //修改生效

    改是可以改,但是改了以后就有问题了,重启以后时间又错乱了!坑爹啊,,,那么我们来好好看看时间吧。

    依照个人经验,系统上有三个时间:

    utc:“世界标准时间”,这个时间一般我们不用,和北京时间差n小时,我们不搭理它。

    cst:我理解,这个基本上就是localtime,就是使用shanghai作为时区的那个时间。属于系统时间

    硬件时间:这个就比较杠了,一般电脑如果带电池,就像自带手表一样,关机,断网,断电以后仍然会保证时间的准确性,靠的就是这个硬件时间。

    好的,那么,在没有互联网的情况下(ntp校时不管用了哦),我们应该如何设置时间呢?

    sudo timedatectl set-ntp false
    #把ntp校时服务关掉,不然你的时间你改不动哦,这个命令就相当于你在图形界面的date&time设置中把‘set the time’ 改为‘manually’
    #开启ntp服务就填写true
    
    sudo timedatectl set-local-rtc 1
    #设置系统硬件的时间为本地时间,也就是那个cst,相对应的,如果最后的参数为0,则是使用utc时间。
    
    sudo timedatectl set-time "yyyy-mm-dd hh:mm:ss"
    #输入手动设置的时间

    有人说,还需要设置sudo hwclock --systohc,我尝试过,,反正是不管用。。

    timedatectl
    #系统内详细的日期时间信息,蛮好用的
    date -R
    date
    #查看系统时间,简略版

    13,修改软连接

    创建

    ln -s 文件名  创建软连接的名字
    #ln -s daqing.txt mylink为daqing.txt下创建一个叫mylink的软连接

    修改

    ln -snf 文件名 要修改的软连接名
    #ln -snf xiaoqing.txt mylink  修改mylink软连接的指向,指向xiaoqing.txt

    删除

    rm 链接名字
    #后面千万不要加斜杠,‘/’,其实加了也没啥,但是还是老老实实别乱动比较好

     14,打开或者关闭ubuntu图形界面

    关闭用户图形界面
    sudo systemctl set-default multi-user.target

    sudo reboot
    开启用户图形界面
    sudo systemctl set-default graphical.target

    sudo reboot

    15,配置pkg-config文件

    如果在ubuntu上编译和开发c++,pkg-config是个非常好用的命令,他能够帮你管理头文件和a文件,让你不必在g++命令后面加上一大堆的-I,-L等,而且使用如下命令可以查看开发环境的位置:

    pkg-config --cflags libavformat
    #查看头文件在哪里
    pkg-config --libs libavformat
    #查看库文件在哪里
    pkg-config  --list-all
    #查看pkg-config管理的所有的项目名称和简介

    比如我刚刚编译的ffmpeg包,在lib/pkgconfig下有一堆pc文件,很明显这是写好了给用户用的,给ffmpeg的贴心点赞!通过把path添加到变量PKG_CONFIG_PATH中,我们就能随心所欲的使用ffmpeg了,添加方式:

    vim ~/.bashrc
    #在最后添加一行:
    export PKG_CONFIG_PATH=/usr/local/ffmpeg/lib/pkgconfig:$PKG_CONFIG_PATH

     16,查找带有某个文件内容的文件

    sudo find /etc/apache2 -name '*.conf'|xargs grep 'access.log'
    #find是常用的,不多讲
    #从find出来的文件中查找带有access.log的文件

     17,ubuntu18.04禁止某个服务开机启动

    以apache为例,网上说的如下命令,真的一点都不管用

    sudo update-rc.d -f apache2 remove
    #这句话的意思是删除apache2的开机启动脚本,亲测无法禁止开机启动,反而会删除很多有关开机启动的服务链接
    
    #已经删除了的可以这样恢复
    sudo update-rc.d apache2 defaults

    真正的禁止开机自启是这样的:

    sudo update-rc.d apache2 disable    #关闭某个service的开机自启
    sudo update-rc.d apache2 enable    #打开某个service的开机自启

    查看当前电脑中有哪些service

    sudo service --status-all

    18,ubuntu18开发板固定ip以及修改dns(非通用ubuntu18.04)

    修改ip:

    sudo vim /etc/network/interfaces

    内容改为:

    source-directory /etc/network/interfaces.d
    #上面这一句是默认的,建议不要动
    auto lo
    iface lo inet loopback
    #给lo网卡设置ip巡回,具体啥意思不清楚,貌似和127.0.0.1有关,我所见的ubuntu电脑默认都有lo网卡,但是不排除有的没有,建议用lo之前先看看ifconfig命令
    
    auto eth0
    iface eth0 inet static
    address 192.168.3.201
    gateway 192.168.3.1
    netmask 255.255.255.0
    #以上命令是,给eth0(有的不叫eth0)网卡设置链接信息,固定ip地址(static),网址是xx,网关是xx,掩码是xx

    修改dns:

    临时修改,立马生效

    sudo vim /etc/resolv.conf
    #nameserver修改为 114.114.114.114

    永久修改,重启也管用的

    sudo vim /etc/systemd/resolved.conf

    改为:

    ##找到有dns的一行,取消注释,改为如下的样子
    DNS=114.114.114.114
    
    ##未修改以前的配置是如下的样子:
    
    #  This file is part of systemd.
    #
    #  systemd is free software; you can redistribute it and/or modify it
    #  under the terms of the GNU Lesser General Public License as published by
    #  the Free Software Foundation; either version 2.1 of the License, or
    #  (at your option) any later version.
    #
    # Entries in this file show the compile time defaults.
    # You can change settings by editing this file.
    # Defaults can be restored by simply deleting this file.
    #
    # See resolved.conf(5) for details
    
    [Resolve]
    #DNS=
    #FallbackDNS=
    #Domains=
    #LLMNR=no
    #MulticastDNS=no
    #DNSSEC=no
    #Cache=yes
    #DNSStubListener=yes

    那么问题来了,为啥要改俩配置文件?它俩什么关系?

    /etc/resolv.conf是被systemd-resolved这个服务托管的,通过netstat -tnpl| grep systemd-resolved查看到这个服务是监听在53号端口上。而这个服务的配置文件为/etc/systemd/resolved.conf。

    如果我们要想让/etc/resolve.conf文件里的配置生效,需要添加到systemd-resolved的这个配置文件里DNS配置项(如上面的示例,已经完成修改),然后重启systemd-resolved服务即可。

    18,有关syslog文件夹的注意事项

    syslog是系统级别的日志模块,服务名称叫rsyslog,日志存放位置在/var/log中,

    目前仅知道次模块配置比较复杂,用户可以在/etc/rsyslog.d文件夹下编辑此模块的配置文件。

    建议不要乱删除此文件下的日志文件,最起码mysql和apache的log不要删除,会导致mysql和apache跑不起来

    如果不小心执行了rm -rf /var/log/*,如何恢复?

    apache2:在/var/log下重建一个文件夹apache2。

    mysql:在/var/log下重建一个mysql文件夹,并且里面要有数据,数据从哪里得来?要么你之前备份过,要么从另一台电脑上拷贝过来,我的解决方案是,去另一台电脑上拷贝了一份过来。。另一台电脑和我用的电脑账户名和密码都一样,mysql配置也基本一样

  • 相关阅读:
    关于http与https之间的区别
    成功解决react+webpack打包文件过大的问题(时间已久,不建议继续阅读)
    使用angularjs实现注册表单
    在jQuery中使用canvas时遇到的问题
    使用canvas实现绚丽的时钟特效
    HTML5中的DOM新特性
    JavaScript中DOM节点层次Text类型
    wx小程序 createRewardedVideoAd
    移动端项目构建 [笔记]
    wx 小程序 | textarea +
  • 原文地址:https://www.cnblogs.com/0-lingdu/p/10655176.html
Copyright © 2011-2022 走看看