遇到的问题

linux 操作

  • 在ssh上登录服务器遇到乱码?
    $ export LANG=”zh_CN.GBK”
  • 改变字符成GBK还有乱码怎么办?
$ export LANG="zh_CN.GBK"
$ gcc -o pipe pipe.c
pipe.c: ÔÚº¯Êý¡®main¡¯ÖÐ:
pipe.c:20:21: ´íÎ󣺡®buff¡¯Î´ÉùÃ÷(Ôڴ˺¯ÊýÄÚµÚÒ»´ÎʹÓÃ)
result=write(fd[1],buff,strlen(buff));
^

可以尝试其他字符集,​​$ export LANG="en_US.UTF-8"​

  • linux的文件在Windows下查看没有换行?
    cat -A filename
    或者 vi 下 :set list
    可以查阅所有的隐藏字符
    一种简单的方法是用UE之类的文本编辑器进行Dos转换。
  • 在不同主机,不同操作系统上文件传输?
    感觉最简单的方式是用WinSCP,SFTP协议传输
  • 问题read_only file system?
    重新挂载文件系统:
    mount -o remount rw /
  • 杀死进程:
    ps -aux |grep “process_name”
    kill PID
  • 查看不同操作系统的网卡信息:
    windows: ipconfig
    linux: ifconfig
  • 在虚拟机上设置两个网卡:
    直接setting – add network Adapter

CentOS网络配置


  • 编辑网络配置:
vi /etc/sysconfig/network-sacrips/ifcfg-eth0
BOOTPROTO="static / DCHP"
TPADDR="IP"
NETMASK=""
DATEWAY=""
DNS1=""
  • 查看路由:
    route
    出现的信息包括 gateway, mask, 网卡等
  • 增加网关:
    route add default gw
  • 设置网卡开机自启:
    onboot=yes
    cd /etc/init.d
    ./network start
    or:
    service network restart
  • 防火墙:
    service iptables stop
    service iptables start
  • 查看端口是否开放:
    vi /etc/sysconfig/iptables
    增加端口(重启防火墙后即可顺利运行):
    ​-A INPUT -p tcp -m state --state NEW -m tcp --dport *** -j DROP // ***代表端口号​
  • 关于xshell远程登录,需要保证本地IP和物理机上的IP在同一个网段
    可以在虚拟机中的virtual network editor中设置IP static分配,再手动配置IP及掩码。
  • 增加网卡
    /etc/sysconfig/network-script这个目录下面,存放的是网络接口(网卡)的脚本文件(控制文件),ifcfg-eth0是默认的第一个网络接口,如果机器中有多网络接口,那么有ifcfg-eth1,ifcfg-eth2,ifcfg-eth3……
    如果是虚拟机,可以自己增加一个网络适配器,然后在linux中进行setup设置(以CentOS为例进行的说明)
DEVICE="eth0"
TYPE=Ethernet
BOOTPROTO=static
ONBOOT="yes"
IPADDR=10.21.1.242
NM_CONTROLLED="yes"
DNS1=2001:778::37
NETMASK=255.255.0.0
#这是一个空行
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
NAME="System eth0"
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=yes
HWADDR=EC:A8:6B:30:F6:87
IPV6_PEERDNS=no
IPV6_PEERROUTES=yes

  • ubuntu的防火墙设置
    ​sudo ufw enable|disable​
  • 比较两个文件:
    diff doc doc1
    如果出现错误:
    Binary files doc and doc1 differ
    那么就是其中至少一个为二进制文件。
    结果中的 ​​<​​是第一个文件的内容,​​>​​是第二个文件的内容。
  • 查看文件或者文件夹的大小
    du -h filename
  • 怎样用gdb查看当前程序运行到那个代码文件?
    source info

记录

ubuntu, windows, vi

  • 如果安装系统一直失败,可能和引导盘有关。
  • 安装ubuntu, delete all data in the disc and install ubuntu,那么我们得到的系统只有一个合成后的大硬盘。
  • 想要删除windows+linux双系统中的linux, 下载并使用工具MbrFix.exe,将其放到C盘,进入cmd, MbrFix /drive 0 fixmbr,更改引导记录。点击”计算机”右键–>管理–>磁盘管理–>找到linux分区–>右键–>删除逻辑分区。重启。如果分区没有能够重新使用(看不见),可以在磁盘管理中,将其添加卷并格式化。之后就能当做一个新盘。
  • vi上的文本剪切
    按下v进入visual模式,按下左右键可以选择部分文本。
    v选中文本之后可以按y进行复制,如果按d就表示剪切,之后按p进行粘贴。
  • vi中的全文替换
    :[range]s/pattern/string/[c,e,g,i]
    range 指的是範圍,1,7 指從第一行至第七行,1,$ 指從第一行至最後一行,也就是整篇文章,也可以 % 代表。還記得嗎? % 是目前編輯的文章,# 是前一次編輯的文章。
    pattern 就是要被替換掉的字串,可以用 regexp 來表示。
    string 將 pattern 由 string 所取代。
    c confirm,每次替換前會詢問。
    e 不顯示 error。
    g globe,不詢問,整行替換。
    i ignore 不分大小寫。
#linux vi中的多行替换。将3到7行的name全部替换成jordan
3,7s/name/jordan/g
#我要替换全文中所有的over变成used:
  • 在vi中怎样进行多行缩进?取消缩进呢?
    先进入虚拟v状态,选中所有行,然后连续按下两次”=”。
  • 查看Windows的某一端口(80)是否被占用:
    ​netstat -aon|findstr "80"​
    依据PID杀死进程:
    ntsd -c q -p PID
    依据进程名杀死进程:
    ntsd -c q -pn ImageName 比如:ntsd -c q -pn qq.exe
    查看linux的某一端口(80)是否被占用:
    ​lsof -i:80​
    tasklist能列出所有的进程,和相应的信息。tskill能查杀进程,tskill 程序名。