[C++]プロセスで使用中のメモリ使用量を出力

現在のプロセスのメモリ使用量を出力する機会があったのでメモを残す。

事前準備としてpsapi.libをリンクしておくこと。

#include <Windows.h>
#include <Psapi.h>

…

HANDLE hProce = GetCurrentProcess();
PROCESS_MEMORY_COUNTERS_EX pmc;
GetProcessMemoryInfo(
  hProc,
  (PROCESS_MEMORY_COUNTERS*)&pmc,
  sizeof(hProc)
)
CloseHandle(hProc);

…

sprintf("%s\n",pmc.PrivateUsage);

 

[C++]Ping疎通確認するサンプル

ヘッダーファイル(icmp.hpp)

#pragma once
#include <stdio.h>
#include <WinSock2.h>
#include <WS2tcpip.h>
#include <iphlpapi.h>
#include <IcmpAPI.h>
class ICMP
{
public:
    ICMP();
    ~ICMP();
    int Ping(const char *HostAddress);
protected:
    HANDLE hIcmp;
    char *SendData = "ICMP";
    LPVOID ReplyBuffer;
    DWORD dwRetVal;
    DWORD buflen;
    PICMP_ECHO_REPLY pIcmpEchoReply;
    sockaddr_in addr;
    const char *HostAddress;
};

 

ソースファイル(icmp.cpp)

#include "icmp.hpp"
ICMP::ICMP()
{
    hIcmp = IcmpCreateFile();
    buflen = sizeof(ICMP_ECHO_REPLY) + strlen(SendData) + 1;
    ReplyBuffer = (VOID*)malloc(buflen);
}
int ICMP::Ping(const char *HostAddress)
{
    if (ReplyBuffer == NULL)
    {
        return 1;
    }
    memset(ReplyBuffer, 0, buflen);
    pIcmpEchoReply = (PICMP_ECHO_REPLY)ReplyBuffer;
    dwRetVal = IcmpSendEcho(hIcmp,
        InetPton(AF_INET, HostAddress, &addr.sin_addr.S_un.S_addr),
        SendData,
        strlen(SendData),
        NULL,
        ReplyBuffer,
        buflen,
        1000);
    if (dwRetVal != 0)          //PING成功
    {
        return 0;
    } else {
        return 1;
    }
}
ICMP::~ICMP()
{
    free(ReplyBuffer);
    IcmpCloseHandle(hIcmp);
}

 

PHP実行環境高速化

はじめに

PHP自体のバージョンアップとキャッシュ環境の設定をする。

手順

remiリポジトリからPHP最新版(7.2.11)とopcache、apcuをインストールする。

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install --enablerepo=remi,remi-php72 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql
yum install --enablerepo=remi,remi-php72 php-fpm
yum install --enablerepo=remi,remi-php72 php-opcache php-pecl-apcu
systemctl restart php-fpm
systemctl restart nginx

 

DDNSで名前解決

はじめに

固定IPを取得しているなら関係のない記事。

当方、動的IPのまま運用している為、導入した。

手順① myDNSでアカウントを取得

join usから登録し、登録内容通知メールを確認。

手順② DDNS反映スクリプトを作成

sudo su -
cd
mkdir scripts
vim cron_mydns.sh

以下のように設定

wget -O- "https://USER:PASSWORD@ipv4.mydns.jp/login.html"

手順③ cronへ登録

*/5 * * * * root /root/scripts/cron_mydns.sh  > /dev/null 2>&1

 

中国からのSSH接続がうざいので・・・SSHアクセスを鍵認証へ変更しrootログイン禁止に

手順① キーペアを作成

当方の環境ではpoderosaでSSH接続している。

新しいキーペアを作成し保存。

手順② 公開鍵をサーバーへ設置

cd
mkdir .ssh
chmod 700 .ssh
cd .ssh
vim vim authorized_keys

公開鍵をauthorized_keysへ保存

chmod 600 authorized_keys

手順③ SSH接続を鍵認証へ変更

sshd_configを修正

vim /etc/ssh/sshd_config

鍵認証を許可する。

PubkeyAuthentication yes

sshd再起動

systemctl restart sshd

秘密鍵を指定してssh接続を試す。

成功したら追加で、rootログインとパスワードログインを禁止する。

PermitRootLogin no
PasswordAuthentication no

sshd再起動

systemctl restart sshd