2021/09/19(日)pycronが動かない

2021/09/19 25:39 PC(全般)
Windowsのタスクスケジューラにどうも馴染めないので、pycronというWindows用cron実装ソフトを利用している。

システムをクリーンインストールした際に、pycronが動かなくなってしまったのでその解決方法についてメモ。

なお、かなり古いソフトで公式サイトも消失している。
同名のソフトやライブラリもあって検索がまともに機能しない。
なかなかに厳しい。

問題は、pycronを標準のc:\Program Files (x86)\pycronなどにインストールした場合に発生する。
サービスとして起動したpycronが一切のタスクを実行しない。

原因はpycronサービスがcron設定ファイルcrontab.txtを読めていないから。
これはWindowsのVirtualStore機能でハマりが発生している。

pycronは、付属のcrontab.txt Editor(GUIのcrontab編集ツール)でcrontab.txtを作ったり、スクリプトのテスト実行ができる。
便利なのだが、これが問題を起こす。

crontab.txt Editorを非管理者権限で動かして設定を保存すると、自動的にWindowsのVirtualStore機能が働き、

C:\Users\********\AppData\Local\VirtualStore\Program Files (x86)\pycron

にcrontab.txtを出力する。

しかし、pycronはデフォルトで、pycron.exeと同一ディレクトリにcrontab.txtが存在する想定で動く。

サービスとして動くpycron.exeはローカルシステムアカウント(SYSTEM)で動くため、
c:\Program Files (x86)\pycron\crontab.txt
を直接読みに行き、crontab.txtが存在しないので動かないという事象になる。

混乱を招くポイントとして、非管理者権限で動かしたファイラーなどからは、
c:\Program Files (x86)\pycron
の中身は、実際のディレクトリ内容にVirtualStoreディレクトリの内容を上書きしたような状態で表示される。
同一名ファイルが有る場合でも、VirtualStore側が優先ということ。

ログファイルについても、crontab.txt Editorでテスト実行をするとまずVirtualStore側にpycron.logが出力される。
サービスのpycron.exeはc:\Program Files (x86)\pycron\pycron.logを出力するので、
手順と閲覧方法によってはVirtualStore側に隠されてしまってサービスのログファイルが見えないことになったりする。

なお、管理者権限で動かしたプログラムからは、素のc:\Program Files (x86)\pycronの内容が見える。

解決手段は下記どれか。
a) Program Files (x86)以外にインストールする
b) crontab.txt Editorを管理者権限で実行して、c:\Program Files (x86)\pycronにcrontab.txtを出力する
c) pycron.cfgを書いて、VirtualStore側のcrontab.txtを読むようにする
d) crontab.txtを手動でVirtualStore側からc:\Program Files (x86)\pycronにコピー

ただ、a)以外は、crontab.txt Editorの実行権限を間違えるたびにトラブルになりそうなのがなんとも嫌。
なので、a)案を採用した。

タスクスケジューラはcronと比べUIや設定オプションの煩雑さの割に、スケジュールの細かいコントロールができないのが不満。
WSLを使えばよいのだろうが、こっちはこっちでHyper-Vとサードパーティ仮想化ソフトの共存が難しい問題がある。
VMWareやVirtualBox資産が結構あるので切り替えが難しい。

ここらへんあと2,3年の技術進化で共存なり寄せなりスッキリできるようになるんじゃないかと期待してるけど、
今のところはpycronで凌ぐ方向で。

2021/07/17(土)debianのexim3で外部メール送信できるようにする

2021/07/17 20:56 PC(Linux)
もともと自宅サーバではqmailやsendmailを動かしていたのだが、Debian 8.0(jessie)切替時にさっぱり切ってしまった。

現状exim4が動いているのだが、外部にメール送信ができない。

zabbixとかは独自にSMTPサーバが登録できるのでごまかしていたが、
ここ来て流石にサーバ内からメールを投げたいケースが出てきた。

ということで、外部にメール送信できるようにする

基本的に下記の手順通りでよし。

Exim4/外部SMTPサーバー経由でメールを送信したい(Debian) - Void of Knowledge

mailコマンドで送信できることを確認。
echo "test" | mail -s "test title" -r from@example.com to@example.com
今度時間あるときに転送周りとcronメールも整理しよう。

2021/07/17(土)WebサーバをHTTPSに対応させる

2021/07/17 19:42 PC(Linux)
時間がないのでメモだけ。

最近はLet's Encryptの証明書発行もかなり簡単にやれるというので、当サイトもついに対応することにした。

基本的には下記のやり方通り。

Debian9 + Apache に"Let's Encrypt"をセットアップしてみた!! : プログラミング Tips

ただし、certbotコマンドについてはサブドメインがあるので、
#certbot certonly --webroot -w /var/www/html -d dt8.jp www.dt8.jp
とした。

また、SSLCipherSuiteの設定は息が長くなるよう、
mod_sslで使用するSSLCipherSuiteの設定を詰めてみる '20 - Qiita
に従った。

ローカルからのアクセスでhttps://~が表示されることを確認。

問題なさそうなので、ファイアウォール設定を変更しIPv4 ポート443の外部アクセスを開けた。

/etc/iptables/rules.v4
を編集して、
#netfilter-persistent reload
サーバ入れ替えた際に、かなり雑に作業をしてしまったのでiptablesの管理方法をちゃんと定義できてない。
年末までになんとかしよう。

SSL Server Testで、一応A判定が出ていることを確認。
https://www.ssllabs.com/ssltest/analyze.html?d=www.dt8.jp

さらに証明書更新したら、自動的にサーバを再起動してメールを送る設定にする。

/etc/letsencrypt/renewal-hooks/

に適当なシェルを作成し、
#!/bin/bash
/usr/sbin/apache2ctl restart
/bin/echo "証明書を更新し、Webサーバを再起動しました。" | /usr/bin/mail -s "証明書更新・Webサーバ再起動通知" -r mailaddress@example.com mailaddress@example.com
とか書く。

クリティカルなサービスがないので完全自動で良いし、restartで安全に。
当たり前だが、落とせないサービスならこんな事やってはいけない。

念の為動作テストする。
#certbot renew --force-renewal
証明書の期限更新~Webサーバの再起動~メール送信の一連の処理が行われることを確認。
更新制限があるので、何度もテストすのはNG。

あとは、サイト内にhttp://~から書いているところがあるかもしれないので、気づいたら直す。
そもそもリニューアルを予定しているのでちまちまやってく。

半年以上安定したら、mod_rewriteでhttp→httpsに振るようにしたい。

[2021/10/14追記]
上の手順で十分だと思っていたら、3ヶ月後の証明書更新が見事に失敗していた。

/var/log/letsencrypt/letsencrypt.logに出力されたエラー内容は、下記。

certbot.errors.MissingCommandlineFlag: Missing command line flag or config entry for this setting:
Select the webroot for dt8.jp:
Choices: ['Enter a new webroot', '/var/www/html']

(You can set this with the --webroot-path flag)

2021-10-13 17:06:46,513:ERROR:certbot.renewal:All renewal attempts failed. The following certs could not be renewed:
2021-10-13 17:06:46,514:ERROR:certbot.renewal:  /etc/letsencrypt/live/dt8.jp/fullchain.pem (failure)
dt8.jpのエントリがないと言われる。
あれ、そうなのか… force-renewalが成功したのはなんでだろう。

/etc/letsencrypt/renewal/dt8.jp.conf
の、
[[webroot_map]]
に、
www.dt8.jp と同じ内容で、dt8.jpの行を追加。
#certbot renew --dry-run
したら通るようになったので次のcronを待って、証明書が更新されることを確認した。

2020/12/23(水)Windows10 で拡張子に対して関連付けができない

2020/12/23 26:28 PC(全般)
Windows10 で関連付けができない問題。

環境はWindows10 Pro 1803 17134.471

設定→アプリ→規定のアプリからデフォルトアプリケーションを変えようとすると、指定後に設定画面が若干フリーズして消える。

再度設定画面を開いてもデフォルトアプリケーションが変わっていない。

下記にあるように、WindowsのKBのバグらしい。

既定のアプリが変更できないのはKBの不具合だった
Windows 10:"KB4462919"適用後、規定のアプリの変更ができなくなる - Microsoft コミュニティ

ということでWindows Updateが簡単な解決方法になりそうだが、当該PCは現在Windows Updateができない別の問題にあたっておりWindows UpdateがNG。

それ以外の方法でとりあえず解決したい。

今回のケースの場合、関連付けを変えたい拡張子のファイルに対して、

コンテキストメニュー(右クリック)→プログラムから開く→別のプログラムを選択→「このファイルを開く方法を選んでください」ダイアログで「常にこのアプリを使って.~ファイルを開く」にチェックを入れて、開きたいプログラムをクリック

で、とりあえず変更できた。

なお、当該情報はレジストリに保存されているらしい。

例としてMP4ファイルであれば、

\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp4\UserChoice

になる(直接書き換える手もあり)。
このあたりを確認しながら設定をすれば良さそうだ。

2020/12/06(日)Thunderbirdでメール中のリンクが開かない

2020/12/06 20:07 PC(全般)
メーラーは未だにThunderbirdを使っているが、どこかのタイミングからメール中のリンクが下記メッセージで開かなくなった。

「このファイルには、この操作を実行するように関連付けられたアプリがありません。アプリをインストールするか、または既にインストールされている場合は、規定のアプリの設定ページで関連付けを作成してください。」

セキュリティ関連かと思ったが流石に不便。
開けるように改善したい。

Thunderbird - ふなWiki

にあるように、一度オプション
network.protocol-handler.warn-external.https
network.protocol-handler.warn-external.http
をtrueに設定すると、リンククリック時にブラウザを選択できる。
以降はリンクがブラウザで開くようになる。

デフォルトブラウザを設定したら、上のオプションはfalseに戻して良いようだ。

2020/11/03(火)Windows8.1でWindows Defenderが有効にできない

2020/11/03 16:12 PC(全般)
Windows8.1でWindows Defenderが有効にできない問題。

環境はWindows8.1 64bit。

長期に渡ってAvira Antivirusを入れて使っていたPCで、Aviraが暴走するケースが増えてきたのでAvira→Windows Defenderに切り替えようとした。

Aviraのアンインストールにも一苦労したのだが、アンインストール後でもWindows Defenderが有効にできない。

Windows Defenderを起動しようとすると、
「このアプリは無効になっており、コンピューターを監視していません。」
とダイアログが出て進まない。

【Windows 8.1】 マカフィーを削除後、 Windows Defender - マイクロソフト コミュニティ

が該当しそうに見えるのだが、どこからたどっても状況は同じ。
解決しない。

日本語answers.microsoft.comはノイジーである。

結局、下記手順を順に試して、
Problems starting Windows Defender in Windows 8/8.1/10 - Microsoft Community

「8. Enabling Windows Defender from Group Policy」
でやっと解決。

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender
キーがなかったので作成し、DWORD値で
DisableAntiSpyware:0
を作成したらWindows Defenderの画面が開くようになった。

その後は定義更新したら素直に監視状態までこぎつけた。

Windows8→8.1の過程でキーが作られなかったりしたのだろうか。謎。

Windows8.1自体がもうあまり寿命がないが、とりあえずこれで凌げそうである。

2020/05/04(月)TodoistでGoogle日本語入力が使えない

2020/05/04 18:47 PC(全般)
Todoistのタスク入力欄で、Google日本語入力での日本語入力が有効にならない問題。
環境はWindows10 64bit。Todoistはストアアプリ版。

OneNoteでGoogle日本語入力の半角全角を切り替えられない問題【ALL APPLICATION PACKAGE】 | umashii blog
にあるように、
C:\Program Files (x86)\Google\Google Japanese Input
に、
ALL APPLICATION PACKAGE
アクセス権を付与すると解消した。

2020/03/20(金)コード: 0x80D02017でMicrosoft ストアアプリがインストールできない

2020/03/20 27:24 PC(全般)
Wunderlistからの乗り換え用としてMicrosoft To-DoをMicrosoft Storeでインストールしようとした際に、表題の現象が発生。

環境はWindows10 x64 Pro 1803。

インストールが完了せずループしてしまう。
エラー詳細は以下の内容。
予期しない問題が発生しました
~~
コード: 0x80D02017
自分の場合、ネットワークアダプタのIPv6オプションを無効にしたらインストールが正常完了した。

うーんルータが自作だからIPv6のルーティングがおかしいのかな?

とはいえストアアプリの挙動もあまりよろしくない気がする。

[参考]
ストアアプリ エラー インストールできず - マイクロソフト コミュニティ
IPV

2019/11/11(月)特定のドライブ・フォルダを開いているプロセスの特定

2019/11/11 26:16 PC(全般)
毎回忘れてしまうのでメモ。

ドライブの取り出しする際に使ってるプロセスが~と言われる系の対処。
環境はWindows10。

タスクマネージャ→パフォーマンスタブ→リソースモニターを開くでパフォーマンスモニターを起動
パフォーマンスモニターのCPUタブ→関連付けられたハンドルのハンドルの検索でドライブ名ないしフォルダ名を検索

リソースモニターの起動はコマンドプロンプトから
perfmon.exe /res
でも良い。

最近だと書き込みをしてない限り直で抜いてもいいっぽいんだけど、「書き込みをしてない限り」のとこ悩ましい。

2019/10/18(金)ASUS Xonar U7の点滅死問題

2019/10/18 24:22 PC(全般)
ASUS Xonar U7には、BLINK OF DEATH不具合が頻発しているらしい。
これが発症するとOSから認識せずSpeaker LEDが点滅しっ放しになる。

多分コンデンサ周りの不具合。

この状態からの(根本的でない)復旧方法があるのでメモ。

(286) Xonar U7 - BLINKING LED ISSUES - YouTube

ここのトップコメントにある通り、
USBチャージャーにつなぐ→ヘアドライヤーでUSB端子付近を20秒加熱→1分放置→PCに繋ぎ替え

で、自分のXonar U7も復活した。

一旦はコレでいいとして、再発したらXonar U7 MkⅡを買うのかなあ。

USBバスパワーで動いて、ヘッドホン端子とアナログ端子があるUSBサウンドデバイスはなかなかない。ヘッドホン端子が表側、USBとアナログ端子が裏側という配置も用途にジャストなのでできればこのまま使っていきたい。

<2019/11/10追記>
上記で直らない場合、蓋を開けてX2とプリントされている横のコンデンサを触れば直る(USB端子近辺)。蓋を開けるには底面ゴム足4箇所剥がして普通のミリネジ。
OK キャンセル 確認 その他